Como posso saber se um comando funciona com pipe?

2

Eu vi este comando:

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

e isso:

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

Minha pergunta é por que não pode ser escrita como:

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

Se foi porque docker inspect não funciona com pipe, como posso saber qual comando pode e o que não pode?

    
por Xiao Peng - ZenUML.com 02.10.2015 / 12:59

1 resposta

2

O Pipe pega a saída do primeiro programa e passa para o próximo programa. Em certo sentido, finge ser um usuário digitando entrada no segundo programa em um terminal. Então, se você pode rodar o programa e digitar (por exemplo) uma lista de arquivos para operar enquanto o programa está rodando, então você pode fazer a mesma coisa com um pipe.

Você pode ver dicas sobre o que pode ser feito usando pipes no manual de um programa. Por exemplo, man wget menciona o argumento -i e que -i - lerá arquivos da entrada padrão, também chamada STDIN. Então você poderia cat list-of-links.txt | wget -i - , ou mais efetivamente wget -i - < list-of-links.txt .

    
por 02.10.2015 / 13:25

Tags