我使用以下命令将输出重定向到另一个文件。
ls -l >>foo.txt
此命令会将ls -l
的输出附加到foo.txt。如果文件不存在,它将创建一个新文件foo.txt并将输出重定向到新的foo.txt。
现在有没有办法将ls -l
的输出重定向/附加到文件中,如果文件已经存在,并且不会重定向输出或丢弃它1}}强>
对于我的情况,如果foo.txt已经存在,它会将输出附加到foo.txt,否则会丢弃输出。
有没有命令要这样做?
答案 0 :(得分:4)
ls -l |
if [ -f "$file" ]
then cat >> "$file"
else cat # or whatever you want to do with the output
fi
请注意,该操作不是原子操作:可以在检查文件存在之后和打开文件之前取消链接文件。
答案 1 :(得分:3)
不知道任何内置语法,但以下内容应该有效:
if [ -f foo.txt ] ; then
out=foo.txt
else
out=/dev/null
fi
ls -l >> $out
答案 2 :(得分:3)
在运行foo.txt
命令之前测试ls -l >> foo.txt
是否存在且是常规文件:
test -f foo.txt && ls -l >> foo.txt