La shell riconosce la tastiera ed il video del terminale dal quale è stata attivata come, rispettivamente, standard input e standard output.
I programmi invocati dall' interno della shell, pertanto, leggono da tastiera e scrivono su video.
Nel caso in cui si voglia "forzare" un programma che scrive sull' uscita standard a scrivere su un file, è necessario informare la shell che i dati in uscita dal programma devono essere dirottati su un file: si parla in questo caso di redirezione di output.Il comando ls, ad esempio, scrive di default sul video (uscita standard) l' elenco dei files contenuti nella directory corrente;
Il comando ' ls > lista ' , invece, scrive l' elenco nel file 'lista', creandolo se non esiste e cancellandone il contenuto nel caso in cui esista.Esistono diverse forme di redirezione:
L' errore standard è il flusso dove sono inviati i messaggi di errore, e di solito corrisponde allo schermo del terminale.
- > redirezione dello standard output;
- < redirezione dello standard input;
- >> redirezione dello standard output, concatenandolo al contenuto del file;
- 2> redirezione dell' errore standard.
Lo standard output di un comando può essere rediretto allo standard input di un altro comando.
I due comandi vengono in questo modo eseguiti in parallelo e sincronizzati: il secondo aspetta i dati inviati dal primo ed il primo attende che i dati appena inviati siano letti dal secondo.
Questa modalità di esecuzione si chiama pipe o pipeline e si specifica separando i due (o più) comandi col carattere ' | '.
Ad esempio, il comando:' who | sort ' scrive in ordine alfabetico (comando sort ) i nomi degli utenti collegati (ottenuti col comando who).