Nie jestem pewien, jaka jest najlepsza kolejność przechwytywania zarówno do, jak STDERRi STDOUTdo 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ć STDOUTdo, /tmp/output.txta następnie wysłać STDERRdo STDOUT(który teraz wysyła do /tmp/output.txt).
Próba wykonania 2>&1przed przekierowaniem pliku nie przyniesie pożądanego efektu.
Jednak gdy chcę używać potoku, teepowinno 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”.