In un sistema Linux/Unix input e output sono gestiti con tre flussi:
- standard input (
stdin) (0)
Lo standard input è lo stream da cui un programma legge i dati di input
- standard output (
stdout) (1)
Lo standard output è lo stream su cui un programma scrive i dati in output
- standard error (
stderr) (2)
Lo standard error è lo stream su cui un programma scrive i messaggi di errore o diagnostica
> standard output
< standard input
2> standard error
>> standard output
<< standard input
2>> standard error
& rappresenta il file descriptor associato ad un comando o ad un file.
Una delle possibilità permesse è la redirezione di uno stream in un altro. In particolare vediamo come redirigere lo standard error su quello di output in modo da essere processati insieme.
Mettiamo di voler cercare il file profile.conf.
find / -name profile.conf > results 2>&1
In questo caso abbiamo scritto il risultato del comando find in un file results, reindirizzando sia lo stdin e lo stdout nel file.
Senza la redirezione, lo stderr sarebbe stato visualizzato sullo schermo.
Viene utilizzato per ridirigere lo stream di un programma verso un altro. Quando lo standard output di un programma è mandato ad un altro attraverso il pipe viene visualizzato sullo schermo solo il risultato del secondo programma.
Esempio:
ls | less
L'output di ls diventa l'input del comando less. In questo modo l'output finale è quello di less
-
grepritorna il testo che corrisponde alla stringa passata a grep -
wcconta caratteri, righe e parole -
teeridirige lo standard input sia allo standard out che a uno più file
wc /etc/magic | tee magic_count.txt
-
Markdown-Cheatsheet Guida per scrtivere questo documento