In generale in Linux esistono tre flussi standard di Input Output che consentono di far dialogare l’utente con il terminale. Questi sono: lo stream di ingresso (stdin), che porta alle applicazioni e al sistema operativo i dati immessi dall’utente tramite una periferica di input (tastiera), lo stream di uscita (stdout), che stampa a schermo i messaggi delle applicazioni, ed infine lo stream degli errori (stderr), che stampa gli errori a schermo.
Ad ogni flusso è associato un valore numerico, detto file descriptor, ed è proprio questo che viene utilizzato negli script bash per consentirne la redirezione. Con quest’ultimo termine intendiamo lo spostamento di una serie di dati che transitano in un flusso, verso un altro flusso. Ad esempio è possibile spostare i messaggi di errore che le applicazioni stampano in stderr sullo stream di uscita e viceversa.
Vediamo più da vicino come si fa.
La seguente tabella mostra la relazione tra i flussi e i loro descrittori:
| stream | file number |
| stdin | 0 |
| stdout | 1 |
| stderr | 2 |
In generale possiamo redirigere il flusso x sul flusso y utilizzando la sintassi
x>&y
Quindi, se vogliamo spostare tutti i messaggi di errore sul normale flusso d’uscita la sintassi sarà
2>&1
Il flusso stdout è considerato quello di default e, quando si trova a sinistra della redirezione può essere omesso. Ad esempio:
>&2
Se vogliamo redirigere un output su file possiamo usare la stessa sintassi appena descritta, a meno del carattere &. Così, ad esempio, se vogliamo salvare su file ciò che un programma stampa a schermo possiamo usare la seguente sintassi:
x>/path/del/file
dove x può essere 1 oppure 2.
Per concludere facciamo qualche esempio completo di utilizzo.
ls >&2 Sposta l’output del comando ls sullo stream degli errori
ls >&2 2>/dev/null Sposta l’uscita di ls sul flusso degli errori e poi redirige quest’ultimo su /dev/null (non stampa niente a schermo)
ls 2>/dev/null Impedisce la visualizzazione degli errori dirottandoli su /dev/null
ls >&0 | echo Passa l’output di ls ad echo che provvede a stamparlo a schermo (la sola pipe tra processi non funziona in questo caso, provatelo! ls | echo)
Per una descrizione più approfondita rimando alla seguente pagina: http://www.tldp.org/LDP/abs/html/io-redirection.html


Dropbox è un servizio di storage online molto diffuso, che offre 2GB di spazio cloud gratuito espandibile fino a 16GB se si invitano amici.
A volte può essere utile impedire in un web server il download e la visualizzazione di un determinato file o una categoria di file caratterizzati da un’estensione specifica. Un esempio può essere l’uso di SQLite: lasciare libera la possibilità di scaricare il database potrebbe compromettere la sicurezza dei dati registrati in esso. Per ovviare al problema si può applicare una direttiva nel file .htaccess che ne limiti l’accesso da parte di client remoti.

