Lo so molto:
$ command 2>> error
$ command 1>> output
C'è un modo in cui posso generare lo stderr nel file di errore e lo stdout nel file di output nella stessa riga di bash?
Lo so molto:
$ command 2>> error
$ command 1>> output
C'è un modo in cui posso generare lo stderr nel file di errore e lo stdout nel file di output nella stessa riga di bash?
Risposte:
Aggiungili in una riga command 2>> error 1>> output
Tuttavia, si noti che >>è da aggiungere se il file contiene già dei dati. Considerando che, >sovrascriverà tutti i dati esistenti nel file.
Quindi, command 2> error 1> outputse non si desidera aggiungere.
Solo per completezza, puoi scrivere 1>come appena >l'output è il descrittore di file predefinito. così 1>ed >è la stessa cosa.
Quindi command 2> error 1> outputdiventacommand 2> error > output
command &2>err.log, penso di essere totalmente confuso dalle sintassi. (Potrebbe essere in ordine un collegamento a una risposta appropriata di tutti i problemi della pipa bash)
command &2>err.lognon sia del tutto legittimo: la e commerciale in quella sintassi viene utilizzata come descrittore di file come destinazione, ad esempio command 1>&2reindirizzare stdout a stderr.
Prova questo:
your_command 2>stderr.log 1>stdout.log
I numeri 0attraverso 9sono descrittori di file in bash.
0sta per input standard, 1sta per output standard, 2sta per errore standard. 3attraverso 9sono di riserva per qualsiasi altro uso temporaneo.
Qualsiasi descrittore di file può essere reindirizzato a un file o a un altro descrittore di file utilizzando l'operatore >. È possibile invece utilizzare l'operatore >>per aggiungere un file anziché crearne uno vuoto.
Uso:
file_descriptor > filename
file_descriptor > &file_descriptor
Si prega di fare riferimento alla avanzata di scripting Bash: Capitolo 20. Redirezione I / O .
Come quello:
$ command >>output 2>>error
Oppure, se ti piace mescolare output (stdout e stderr) in un singolo file, potresti voler usare:
command > merged-output.txt 2>&1
L'output di più comandi può essere reindirizzato. Funziona per la riga di comando o utilmente in uno script bash. Il -sreindirizza la richiesta della password allo schermo.
Hereblock cmds stdout / stderr vengono inviati a file separati e nulla da visualizzare.
sudo -s -u username <<'EOF' 2>err 1>out
ls; pwd;
EOF
Hereblock cmds stdout / stderr vengono inviati a un singolo file e visualizzati.
sudo -s -u username <<'EOF' 2>&1 | tee out
ls; pwd;
EOF
Quiblock cmds stdout / stderr vengono inviati a file separati e stdout da visualizzare.
sudo -s -u username <<'EOF' 2>err | tee out
ls; pwd;
EOF
A seconda di chi sei (whoami) e nome utente, potrebbe essere necessaria o meno una password.
1>può essere scritto come>