Digamos que você esteja interessado em quanto espaço livre em disco há em seu
sistema.
Muito fácil:
iMac:~ $ df -h
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk0s2 233Gi 151Gi 82Gi 65% 39657424 21412016 65% /
devfs 204Ki 204Ki 0Bi 100% 704 0 100% /dev
/dev/disk1s2 931Gi 91Gi 840Gi 10% 23782594 220324072 10% /Volumes/Macintosh HD 2
map -hosts 0Bi 0Bi 0Bi 100% 0 0 100% /net
map auto_home 0Bi 0Bi 0Bi 100% 0 0 100% /home
Mas e se também quisermos salvar esses resultados em um arquivo?
Isso também seria fácil de fazer, apenas redirecionando a saída padrão
(ou seja, stdout) para um arquivo:
iMac:~ $ df -h > df.out
Isso funciona bem, exceto que eu não quero digitar 2 comandos separados.
Na verdade, para alguns exemplos, pode não ser viável executar os comandos
separadamente porque a saída pode ser diferente. O que você precisa é
a capacidade de capturar a saída, enviá-la para a saída padrão (por exemplo, o
terminal) e também salvá-la em um arquivo separado.
Bem, há um comando que o ajudará a fazer exatamente isso – o comando tee.
De acordo com as páginas de manual do UNIX no OS X:
O utilitário tee copia da entrada padrão para a saída padrão, fazendo
uma cópia em zero ou mais arquivos.
Vamos tentar nosso exemplo novamente, mas desta vez usando tee:
iMac:~ $ df -h | tee df.out
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk0s2 233Gi 151Gi 82Gi 65% 39657219 21412221 65% /
devfs 204Ki 204Ki 0Bi 100% 704 0 100% /dev
/dev/disk1s2 931Gi 91Gi 840Gi 10% 23782594 220324072 10% /Volumes/Macintosh HD 2
map -hosts 0Bi 0Bi 0Bi 100% 0 0 100% /net
map auto_home 0Bi 0Bi 0Bi 100% 0 0 100% /home
Agora, vamos dar uma olhada no conteúdo desse arquivo, apenas para ter certeza de que
as informações do disco foram gravadas lá, além do que vimos na
saída padrão:
iMac:~ $ cat df.out
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk0s2 233Gi 151Gi 82Gi 65% 39657219 21412221 65% /
devfs 204Ki 204Ki 0Bi 100% 704 0 100% /dev
/dev/disk1s2 931Gi 91Gi 840Gi 10% 23782594 220324072 10% /Volumes/Macintosh HD 2
map -hosts 0Bi 0Bi 0Bi 100% 0 0 100% /net
map auto_home 0Bi 0Bi 0Bi 100% 0 0 100% /home
A saída é idêntica à que vimos quando executamos o comando original,
que é exatamente o resultado que desejamos.
Portanto, da próxima vez que você precisar ver a saída padrão e também copiá-la para
um arquivo, lembre-se de que o comando tee é uma ótima opção.
Para obter mais dicas sobre UNIX, consulte Learning the UNIX Command Line .