Normalne polecenie tar
tar cvf foo.tar ./foo >foo.out 2>foo.err
ma trzy wyjściowe strumienie we / wy
- zarchiwizuj dane na foo.tar
- lista nazw plików do STDOUT (przekierowane do foo.out)
- komunikaty o błędach do STDERR (przekierowane do foo.err)
Następnie mogę sprawdzić foo.err pod kątem komunikatów o błędach bez konieczności czytania listy nazw plików.
jeśli chcę coś zrobić z danymi archiwalnymi (przepuszczać przez netcat lub specjalny program do kompresji), mogę użyć -f -
opcji tar
tar cvf - ./foo 2>foo.err | squish > foo.tar.S
Ale teraz moja lista nazw plików jest mieszana z moimi komunikatami o błędach, ponieważ -v
dane wyjściowe tar oczywiście nie mogą przejść do STDOUT (tam, gdzie przepływają dane archiwalne), więc tar sprytnie zapisuje je do STDERR.
Za pomocą powłoki Korna istnieje sposób na zbudowanie polecenia, które potokuje strumień archiwum do innego polecenia, ale nadal przechwytuje dane -v
wyjściowe niezależnie od komunikatów o błędach.
tee
? Wydaje się, że jest to całkiem uzasadniony przypadek użycia.