|>> 在 shell 中做什么?

|>> 在 shell 中做什么?

从此得到模因,但是当我评论时没有人回答(也用谷歌搜索但没有找到)

从这个表情包得到的

答案1

rm /tmp/output 2>/dev/null || :

grep nobody /etc/passwd | sed -e 's/:.*//' >>/tmp/output
grep nobody /etc/passwd |>>/tmp/output sed -e 's/:.*//'

cat /tmp/output  # should be two "nobody" lines

这两个grep …|sed …管道完全相同,表明这|>>对于 *nix shell 来说并不特殊,只是|(pipe) 和>>(append-to file) 运算符连接在一起。重定向可以放置在命令中的任何位置。

答案2

如前所述,这些是等效的

echo foo |>> file rev
echo foo | rev >> file

>重定向有点不同:如果您使用set -o noclobber它来防止意外截断文件

$ rm file
$ echo foo |>> file rev
$ cat file
oof
$ echo bar |> file rev
bash: file: cannot overwrite existing file
$ cat file
oof

在这种情况下,您可以>|故意覆盖该文件,从而导致这个迷人的命令

$ echo bar |>| file rev
$ cat file
rab

相关内容