Intro
A volte vediamo comandi come questo nella shell:
- $ ls foo > /dev/null 2>&1
Può essere difficile capire cosa fa questo per la prima volta, quindi questa nota lo spiegherà brevemente.
Ridirezione I/O
Supponiamo di avere ora un semplice file di testo:
Nell’azione di reindirizzamento di cui sopra, non vediamo alcun output visualizzato sul terminale, perché il comando > reindirizza il contenuto di test.txt aoutput.txt, che è un output standard (stdout).
In contrasto con lo standard output, c’è lo standard error (stdr), per esempio
Si è verificato un errore durante il processo di reindirizzamento perché non esiste un file con il nome no_such_file.txt nella directory corrente. In questo caso, anche se viene usato il comando >, non è possibile inserire il contenuto in output.txt, perché non c’è stdout, ma un messaggio di errore stderror.
File Descriptor
File descriptor può essere pensato come un numero intero positivo per un file aperto. Se avete 100 file aperti, avete fondamentalmente 100 descrittori di file corrispondenti.
Nei sistemi Unix/Unix-like, ci sono anche descrittori di file dedicati a stdout e stderr, che, per essere chiari, hanno destinazioni dedicate per l’output di questiper queste destinazioni di uscita:
- 1: per stdout
- 2: per stderr
Mettere tutto insieme
Secondo il concetto di cui sopra, se volete scrivere il contenuto di un file conosciuto in un altro file, potete farlo