Bash Shell追加输出

每次重定向输出,都会产生一个全新的输出文件。如果想要两次(或三次、四次……)重定向输出,同时又不想破坏之前的输出,该怎么办呢?

解决方案

在 bash 的重定向符号中,双大于号(>>)表示追加输出:

$ ls > /tmp/ls.out
$ cd ../elsewhere
$ ls >> /tmp/ls.out
$ cd ../anotherdir
$ ls >> /tmp/ls.out
$

讨论

如果存在同名文件,第一行中的重定向会将其截断,并将 ls 命令的输出保存在这个已被清空的文件中。

后两次调用 ls 时使用了双大于号(>>),表示向输出文件中追加内容,而不是覆盖其原有内容。

如果想要同时重定向错误消息(STDERR),可以将 STDERR 的重定向放在后面,如下所示:

ls >> /tmp/ls.out 2>&1

在 bash 4 中,你可以将这两个重定向合二为一:

ls &>> /tmp/ls.out

该命令会重定向 STDERR 和 STDOUT,并将两者追加到指定文件中。记住,& 符号必须先出现,且这 3 个字符之间不能有空格。

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!