Un normale comando tar
tar cvf foo.tar ./foo >foo.out 2>foo.err
ha tre flussi IO di uscita
- archiviare i dati su foo.tar
- elenco di nomi di file su STDOUT (reindirizzato in foo.out)
- messaggi di errore a STDERR (reindirizzati in foo.err)
Posso quindi controllare foo.err per i messaggi di errore senza dover leggere l'elenco dei nomi dei file.
se voglio fare qualcosa con i dati di archivio (instradalo attraverso netcat o uno speciale programma di compressione) posso usare l' -f -
opzione tar così
tar cvf - ./foo 2>foo.err | squish > foo.tar.S
Ma ora la mia lista di nomi di file è mescolata con i miei messaggi di errore perché l' -v
output di tar ovviamente non può andare su STDOUT (è lì che scorre i dati di archivio), quindi Tar lo scrive abilmente su STDERR.
Usando la shell Korn, c'è un modo per costruire un comando che reindirizza il flusso di archivio a un altro comando ma cattura comunque l' -v
output separatamente da qualsiasi messaggio di errore.
tee
? Questo sembra un caso d'uso piuttosto valido per questo.