Pipe
Agora vejamos o pipe. Sua sintaxe é:
$ programa1 | programa2
O pipe é usado para você fazer da saída de um programa a entrada de outro (como usado no exemplo amarelinho.sh já mostrado anteriormente).
Apesar de simples o pipe é muito útil e poderoso. Veja este exemplo muito simples:
$ who
meleu tty1 Nov 20 01:40
hack tty2 Nov 20 01:45
root tty3 Nov 20 02:44
$ who | cut -c-9
meleu
hack
root
Mais exemplos serão dados ao longo do texto.
Comandos Úteis com o Pipe
xargs
O xargs
transforma stdin em argumentos da linha de comando. Vamos usar
o exemplo anterior de novo:
$ who | cut -c-9 # lembrando: pipe transforma stdout em stdin
meleu
hack
root
$ # "echo" nao le arquivo, ele usa argumentos.
$ # A linha abaixo nao tem utilidade.
$ who | cut -c0-9 | echo
$ # "xargs" transforma o conteudo de stdin em argumentos
$ who | cut -c0-9 | xargs echo
meleu hack root
Como eu gosto do find não resisti e colocarei um comando interessante
que usa pipe e xargs
:
$ find / -perm -2 ! -type l ! -type c | xargs ls -ld > wordwritable.txt
Se não entendeu algo do comando acima e quer entender, olhe as manpages.
tee
Outro comando bom de se usar com pipe é o tee
. Ele faz com que a
saída do programa vá para a saída padrão, normalmente a tela E
para um arquivo ao mesmo tempo.
É como se você fizesse programa > arquivo
só que o saída do programa
também seria escrita na saída padrão. Experimente:
$ ls -la |tee conteudo.txt