Nie jestem pewien, jaka jest najlepsza kolejność przechwytywania zarówno do, jak STDERR
i STDOUT
do tego samego pliku za pomocą tee
. Wiem, że jeśli chcę potokować do pliku, muszę mapować uchwyt pliku po przekierowaniu, tj
find . >/tmp/output.txt 2>&1
To instruuje powłokę, aby wysłać STDOUT
do, /tmp/output.txt
a następnie wysłać STDERR
do STDOUT
(który teraz wysyła do /tmp/output.txt
).
Próba wykonania 2>&1
przed przekierowaniem pliku nie przyniesie pożądanego efektu.
Jednak gdy chcę używać potoku, tee
powinno to być:
find . |tee /tmp/output.txt 2>&1 # or
find . 2>&1 |tee /tmp/output.txt # ?
|&
zostanie użyty, standardowy błąd polecenia 1 jest połączony ze standardowym wejściem polecenia 2 przez potok; jest to skrót2>&1 |
. To niejawne przekierowanie standardowego błędu jest wykonywane po wszelkich przekierowaniach określonych przez polecenie”.