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> output
jeś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> output
staje 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.log
to , że nie jest całkiem uzasadniony - znak & w tej składni jest używany jako deskryptor pliku jako cel, np. command 1>&2
Przekieruje stdout na stderr.
Spróbuj tego:
your_command 2>stderr.log 1>stdout.log
Liczby 0
przez 9
są deskryptorami plików w bash.
0
oznacza standardowe wejście, 1
oznacza standardowe wyjście, 2
oznacza standardowy błąd. 3
przelotowe 9
są 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. -s
Kieruje 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>