连接来自标准输出和文件的内容

Ken*_*nny 8 cat stdout output

我们如何将标准输出(或标准错误)和文件的结果连接到最终文件中。

例如

ls -a | grep text1
Run Code Online (Sandbox Code Playgroud)

连接file2.txt到最终结果(不是file2.txt),而不存储grep text1到中间的东西,例如grep text1 > file1.txt

jim*_*mij 21

ls -a | grep text1 | cat file2.txt -
Run Code Online (Sandbox Code Playgroud)

-代表标准输入。或者你可以写

ls -a | grep text1 | cat - file2.txt
Run Code Online (Sandbox Code Playgroud)

以不同的顺序输出。


使用进程替换的另一种可能性:

cat <(ls -a | grep text1) file2.txt
Run Code Online (Sandbox Code Playgroud)

或以不同的顺序:

cat file2.txt <(ls -a | grep text1)
Run Code Online (Sandbox Code Playgroud)


Oth*_*eus 6

您可以使用{}()将命令组合在一起并重定向它们的组合输出:

{ 
  cat file1.txt
  echo "Now the ls/grep"
  ls -a |grep foobar
} > file2.txt
Run Code Online (Sandbox Code Playgroud)

作为单线:

{ cat file1.txt; echo "Now the ls/grep"; ls -a |grep foobar; } >file2.txt 
Run Code Online (Sandbox Code Playgroud)

最后一个;是必要的。