我在用:
command > ~/Desktop/file.txt
我的问题是我需要执行这个命令多次,每次都会给我不同的输出,此时每次我运行它时它都会删除所有内容并将新输出保存在文件中,显然这对我来说不起作用,因为我需要在当前输出中添加新输出。
我将非常感激您的帮助。
答案1
使用>>
而不是>
:
command >> ~/Desktop/file.txt
当你使用时command > ~/Desktop/file.txt
,该文件~/Desktop/file.txt
被 shell 打开写作STDOUT(文件描述符 1)的内容。因此,每次运行 时,文件的内容都会被覆盖command
。
另一方面,shell 将打开文件追加如果您使用>>
运算符。因此,command
每次运行它时,都会附加其输出。
我建议你去本手册介绍 bash 重定向。
答案2
使用‘>>’。
command >> ~/Desktop/file.txt
答案3
如果您在循环中运行它,则可以重定向整个循环的输出。
for (( i = 0; i < n; i++ )); do
somecommand
done > ~/Desktop/file.txt
如果它有点复杂(例如其他内容也输出),您可以在单独的文件描述符上打开它。
exec 3> ~/Desktop/file.txt
...
somecommand >&3
...
somecommand >&3
...
exec 3>&- # closes it
答案4
你想要>>
,而不是>
,像这样:
command >> /path/to/file.txt