Tak dużo wiem:
$ command 2>> error
$ command 1>> output
Czy jest jakiś sposób, aby wyprowadzić stderr do pliku błędu i wyprowadzić stdout do pliku wyjściowego w tym samym wierszu bash?
Tak dużo wiem:
$ command 2>> error
$ command 1>> output
Czy jest jakiś sposób, aby wyprowadzić stderr do pliku błędu i wyprowadzić stdout do pliku wyjściowego w tym samym wierszu bash?
Odpowiedzi:
Po prostu dodaj je w jednym wierszu command 2>> error 1>> output
Należy jednak pamiętać, że >>jest to dołączanie, jeśli plik już zawiera dane. Natomiast >zastąpi wszelkie istniejące dane w pliku.
Tak więc, command 2> error 1> outputjeśli nie chcesz dołączyć.
Ze względu na ukończenie możesz pisać 1>tak, jakby >wyjściowy był domyślny deskryptor pliku. tak 1>i >to samo.
Więc command 2> error 1> outputstaje sięcommand 2> error > output
command &2>err.log, myślę, że całkowicie mylę sintaksje. (Link do właściwej odpowiedzi na wszystkie bash-rurki może być w porządku)
command &2>err.logto , że nie jest całkiem uzasadniony - znak & w tej składni jest używany jako deskryptor pliku jako cel, np. command 1>&2Przekieruje stdout na stderr.
Spróbuj tego:
your_command 2>stderr.log 1>stdout.log
Liczby 0przez 9są deskryptorami plików w bash.
0oznacza standardowe wejście, 1oznacza standardowe wyjście, 2oznacza standardowy błąd. 3przelotowe 9są zapasowe do jakiegokolwiek innego tymczasowego użytkowania
Dowolny deskryptor pliku można przekierować do pliku lub do innego deskryptora pliku za pomocą operatora >. Zamiast tego możesz użyć operatora, >>aby dołączyć do pliku zamiast tworzyć pusty.
Stosowanie:
file_descriptor > filename
file_descriptor > &file_descriptor
Proszę odnieść się do zaawansowanego bash-Scripting Guide: Rozdział 20. I / O przekierowania .
Tak:
$ command >>output 2>>error
Lub jeśli chcesz miksować wyjścia (stdout i stderr) w jednym pliku, możesz użyć:
command > merged-output.txt 2>&1
Dane wyjściowe wielu poleceń mogą być przekierowywane. Działa to w wierszu poleceń lub najbardziej użytecznie w skrypcie bash. -sKieruje hasło szybkiej na ekranie.
Tutaj zablokuj cmds stdout / stderr są wysyłane do osobnych plików i nic do wyświetlenia.
sudo -s -u username <<'EOF' 2>err 1>out
ls; pwd;
EOF
Tutaj zablokuj cmds stdout / stderr są wysyłane do jednego pliku i wyświetlane.
sudo -s -u username <<'EOF' 2>&1 | tee out
ls; pwd;
EOF
Tutaj zablokuj cmds stdout / stderr są wysyłane do osobnych plików i stdout do wyświetlenia.
sudo -s -u username <<'EOF' 2>err | tee out
ls; pwd;
EOF
W zależności od tego, kim jesteś (whoami) i nazwy użytkownika, hasło może być wymagane lub nie.
1>można napisać jako>