RHEL 7 – Note RHCSA (cheat sheet)
Tre descrittori di file standard :
1. stdin 0 - Standard input to the program. 2. stdout 1 - Standard output from the program. 3. stderr 2 - Standard error output from the program.
Scopo | Comando |
---|---|
Reindirizza l'output std al nome del file | > nome file o 1> nome file |
aggiungi std al nome del file | >> nome file |
aggiungi std out e std err al nome del file | >> nome file 2>&1 o 1>> nome file 2>&1 |
prendere input dal nome file | |
reindirizza l'errore std al nome del file | 2> nome file |
Reindirizza std out e l'errore std al nome del file | 1> nome file 2>&1 o> nome file 2>&1 |
Alcuni esempi di utilizzo del reindirizzamento I/O
# cat goodfile badfile 1> output 2> errors
Questo comando reindirizza l'output normale (contenuto di goodfile) all'output del file e invia eventuali errori (ad esempio relativi a badfile non esistenti) agli errori del file.
# mail user_id < textfile 2> errors
Questo comando reindirizza l'input per il comando mail in modo che provenga dal file textfile e tutti gli errori vengono reindirizzati agli errori del file.
# find / -name xyz -print 1> abc 2>&1
Questo comando reindirizza l'output normale al file abc. Il costrutto "2>&1" dice "invia l'output di errore nello stesso punto in cui abbiamo indirizzato l'output normale".
Nota che l'ordine è importante; il comando 2>&1 1>file non ha lo stesso effetto del comando 1>file 2>&1. Questo perché la costruzione 2>&1 significa reindirizzare l'errore standard nel punto in cui va attualmente l'output standard. Il comando di costruzione 2>&1 1>file prima reindirizzerà l'errore standard al punto in cui va l'output standard (probabilmente il terminale, che è comunque il punto in cui l'errore standard va per impostazione predefinita), quindi reindirizzerà l'output standard al file. Probabilmente non è quello che si intendeva.# ( grep Bob filex > out ) 2> err
– qualsiasi output del comando grep viene inviato al file out e gli eventuali errori vengono inviati al file err.
# trova . -name xyz -print 2>/dev/nullQuesto esegue il comando find, ma invia qualsiasi output di errore (a causa di directory inaccessibili, ad esempio), a /dev/null. Utilizzare con cautela, a meno che l'output dell'errore non sia davvero di alcun interesse.