每次重定向输出,都会产生一个全新的输出文件。如果想要两次(或三次、四次……)重定向输出,同时又不想破坏之前的输出,该怎么办呢?
解决方案
在 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 个字符之间不能有空格。
酷客网相关文章:
评论前必须登录!
注册