我遇到了下面刚刚给出的命令-
$ echo 'eval "$(jenv init -)"' >> ~/.bash_profile
据我所知,它可能用于提交.bash_profile中的更改,但是它的用途是什么?
我遇到了下面刚刚给出的命令-
$ echo 'eval "$(jenv init -)"' >> ~/.bash_profile
据我所知,它可能用于提交.bash_profile中的更改,但是它的用途是什么?
Answers:
它先重定向程序的标准输出,然后再将>>
其附加到给定文件。
>> file command
echo a b >> c d
将追加a b d
到名为的文件中c
。
>>
办?使用>>
,您可以将命令的输出附加到文件中。
您的示例命令基本上由几部分组成:
命令 >> 文件名
因此的输出command
将附加到filename
。
echo
?在您的特定情况下,echo "…"
命令将其输入参数输出到“ stdout”,即所谓的“标准输出描述符”。输入参数to echo
后面跟一个换行符(\n
),以便您可以换行。
在这里,“标准输出描述符”只不过是您在执行命令时在shell中显示的输出流。(也就是说,当您键入echo foo
并按Enter键时,foo\n
该echo
命令的实际输出,将在外壳程序中显示,foo
后跟换行符。)
基本上任何写入命令行的内容都使用stdout。还有另一个称为“ stderr”的描述符,通常用于错误消息。它还将像标准输出一样打印,因此有时可能会散布它们。并且有一个stdin描述符用于输入。有关更多信息,请参见本文。
您始终可以将 stdout 重定向到文件描述符,可以使用以下操作符之一进行操作:
>
重定向到文件描述符。如果文件不存在,则创建该文件;如果文件已经存在,则创建该文件,然后在写入之前将其截断。因此,该文件将被stdout覆盖。
>>
追加到文件描述符。如果文件不存在,它将创建文件。
您也可以使用2>
或2>>
类似方式重定向stderr 。或者,您可以将stderr和stdout组合到一个文件中:2>&1
执行此操作。有关重定向的更多信息和更多示例,您可以阅读此小型教程。
通常,您可能需要尝试explainshell.com,它将为您提供视觉指导和有关特定shell命令的信息。
同样,如果你这样做
> somefile.txt
文件的全部内容将被清除。
> file
清除文件,但>> file
不执行任何操作。
man bash
用相当正式的语言编写的代码,可能很难理解。另一方面,该短语bash >>
在Google中返回的有用链接很少。我们确实想在不依赖Google的情况下积累知识;因此,即使是具有易于搜索答案的问题也可能适用。但是,您既没有立即提供答案(请参阅我可以回答我自己的问题吗?),也没有指出现有资源(您可能需要帮助来理解),这一事实表明缺乏研究。