Se o seu sistema suporta /dev/fd/n
:
tar cvf /dev/fd/3 ./foo 3>&1 > foo.out 2>foo.err | squish > foo.tar.S
Qual das implementações AT & T de ksh
(ou bash
ou zsh
) você poderia escrever usando substituição de processo :
tar cvf >(squish > foo.tar.S) ./foo > foo.out 2>foo.err
Isso está fazendo exatamente a mesma coisa, exceto que, desta vez, o shell decide qual descritor de arquivo usar em vez de 3
(geralmente acima de 9). Outra diferença é que, desta vez, você obtém o status de saída de tar
em vez de squish
. Em sistemas que não suportam /dev/fd/n
, alguns shells podem recorrer a pipes nomeados para esse recurso.
Se o seu sistema não suporta /dev/fd/n
ou o seu shell não pode usar pipes nomeados para sua substituição de processos, é aí que você teria que lidar com pipes nomeados manualmente .