为什么在安装新软件之前使用 echo?

Pal*_*shi 25 linux bash command-line ubuntu echo

我是计算世界的新手。在安装 ROS Indigo 时,第一步指导我使用以下代码:

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
Run Code Online (Sandbox Code Playgroud)

为什么我们在这种情况下使用该echo命令sh -c?我也看到过在其他安装过程中使用 echo 命令。

注 -使用 sh 命令ROS Indigo Installation Wiki

小智 43

通常echocommand的作用是在控制台上显示一个字符串(一段文本)。但这一次,>echo命令后添加了一个字符,将其输出重定向到文本文件/etc/apt/sources.list.d/ros-latest.list.

所以基本上,整个命令将一段文本写入文本文件。现在,棘手的部分来了:

写入文件的字符串可能因计算机而异。$(lsb_release -sc)echo命令运行时,该部分被解析(更改为其他内容)。

您可以/etc/apt/sources.list.d/ros-latest.list在命令前后在文本编辑器中打开以查看自己的更改。(在此命令之前该文件可能不存在。)

  • 实际上,`>` 覆盖了文本文件,`>>` 附加到末尾。 (19认同)
  • `echo` 写入标准输出,而不是控制台。 (10认同)
  • “除非重定向,否则标准输出是启动程序的文本终端。” 所以,是的,`echo` 写入控制台。 (4认同)
  • @dirkt 谢谢。我的错!;) 那是学习几种脚本语言的结果。矛盾的行为最终会困扰你。即使在 DOS 中,> 也会覆盖。 (3认同)