有一些命令可以过滤或作用于输入,然后将其作为输出传递,我认为通常是stdout
- 但有些命令只会接受stdin
并执行它们对它所做的任何事情,并且不输出任何内容。
我最熟悉 OS X,因此我立即想到了两个pbcopy
和pbpaste
- 它们是访问系统剪贴板的方法。
无论如何,我知道如果我想使用 stdout 并将输出输出到两个stdout
文件和一个文件,那么我可以使用该tee
命令。我对 有一点了解xargs
,但我认为这不是我要找的。
我想知道如何拆分stdout
以在两个(或多个)命令之间切换。例如:
cat file.txt | stdout-split -c1 pbcopy -c2 grep -i errors
Run Code Online (Sandbox Code Playgroud)
可能有一个比那个更好的例子,但我真的很想知道如何将标准输出发送到一个不中继它的命令,同时避免stdout
被“静音” - 我不是问如何cat
归档和grep
它的一部分并将其复制到剪贴板 - 具体命令并不那么重要。
另外 - 我不是在问如何将它发送到文件,而且stdout
- 这可能是一个“重复”的问题(抱歉),但我做了一些查找,只能找到类似的询问如何在标准输出和文件之间拆分的问题- 这些问题的答案似乎是tee
,我认为这对我不起作用。
最后,你可能会问“为什么不让 pbcopy 成为管道链中的最后一件事?” 我的回答是 1) 如果我想使用它并且仍然在控制台中看到输出怎么办?2)如果我想使用两个stdout
在处理输入后不输出的命令怎么办?
哦,还有一件事 - 我意识到我可以使用tee
一个命名管道(mkfifo
),但我希望有一种方法可以简洁地内联完成,无需事先设置:)