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> output
se 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> output
diventacommand 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.log
non sia del tutto legittimo: la e commerciale in quella sintassi viene utilizzata come descrittore di file come destinazione, ad esempio command 1>&2
reindirizzare stdout a stderr.
Prova questo:
your_command 2>stderr.log 1>stdout.log
I numeri 0
attraverso 9
sono descrittori di file in bash.
0
sta per input standard, 1
sta per output standard, 2
sta per errore standard. 3
attraverso 9
sono 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 -s
reindirizza 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>