> 和 >> 之间有什么区别(尤其是与 cat 程序一起使用时)?

And*_*rew 6 io text-processing file-management cat

假设我有一个名为temp.txt. 使用该cat程序,我想将此文件的内容添加到末尾myfile.txt-myfile.txt如果它不存在则创建,如果存在则附加到它。

我正在考虑这些可能性:

cat temp.txt > myfile.txt
Run Code Online (Sandbox Code Playgroud)

或者

cat temp.txt >> myfile.txt
Run Code Online (Sandbox Code Playgroud)

这两个命令似乎都按我的意愿工作。所以,我的问题是,>和之间有什么区别>>?谢谢你的时间。

Chr*_*own 11

>写入文件,覆盖任何现有内容。>>附加到文件中。

来自man bash

重定向输出

输出重定向导致名称由单词扩展产生的文件被打开以写入文件描述符 n 或标准输出(文件描述符 1),如果未指定 n。如果文件不存在,则创建它;如果确实存在,则将其截断为零大小。

重定向输出的一般格式是:

[n]>word
Run Code Online (Sandbox Code Playgroud)

如果重定向运算符是 >,并且已启用 set 内置的 noclobber 选项,如果名称由单词扩展产生的文件存在并且是常规文件,则重定向将失败。如果重定向操作符是 >|,或者重定向操作符是 > 并且没有启用 set 内置命令的 noclobber 选项,即使存在以 word 命名的文件,也会尝试重定向。

附加重定向输出

以这种方式重定向输出会导致名称由单词扩展产生的文件被打开以追加到文件描述符 n 上,或者如果未指定 n,则打开标准输出(文件描述符 1)。如果文件不存在,则创建它。

附加输出的一般格式是:

[n]>>word
Run Code Online (Sandbox Code Playgroud)