我如何知道命令是否适用于管道?

我如何知道命令是否适用于管道?

我看到了这个命令:

docker inspect --format '{{.State.Running}}' $(docker ps -lq)

和这个:

docker ps -l -q|while read cid b; do docker inspect -f '{{ .State.Running }}' $cid; done;

我的问题是为什么它不能写成:

docker ps -l -q|docker inspect -f '{{.State.Running}}'

如果那是因为docker inspect不适用于管道,我怎么知道哪个命令可以,哪个命令不能?

答案1

Pipe 获取第一个程序的输出并将其传递到下一个程序。从某种意义上说,它假装是用户在终端的第二个程序中键入输入。因此,如果您可以运行该程序并输入(例如)要在程序运行时操作的文件列表,那么您可以使用管道执行相同的操作。

您可能会在程序手册中看到有关使用管道可以做什么的提示。例如,man wget提到-i参数,将从-i -标准输入(也称为 STDIN)读取文件。所以你可以cat list-of-links.txt | wget -i -,或者更有效wget -i - < list-of-links.txt

相关内容