Pipe

Non preoccupatevi non parleremo di "tubi". In ambito Linux, una pipe collega lo standard output di un comando con lo standard input di un altro.

Torniamo un passo indietro, al comando ls. Ci sono diverse opzioni disponibili con il comando ls, ma cosa succede se la visualizzazione dei contenuti della directory è troppo veloce per poterli vedere ?

Guardiamo il contenuto della directory /etc.

ls -al /etc
	  

Come possiamo visualizzare con calma l'output prima che scompaia dallo schermo?

È possibile inviare l'output all'utility less. Conosciuta come pager, less, (come more) vi permette di vedere le informazioni in una pagina (o schermata) alla volta.

Per il collegamento dello standard output con lo standard input del comando successivo si usa il carattere (|) (come mostrato nella Figura 15-15).

ls -al /etc | less
	  

In questo modo vedrete il contenuto della directory diviso in schermate. Per accedere alla schermata successiva, premete Space; per tornare alla schermata precedente, premete B; per uscire, premete il tasto Q.

SuggerimentoCome leggere i messaggi di startup
 

Volete leggere i messaggi di startup più attentamente? Al prompt della shell, digitate dmesg | less. Sarete in grado di leggere il file uno schermo per volta. Per andare avanti, premete Space; per uscire, premete Q.

Figura 15-15. Ridirezionare l'output di ls a less

In verità abbiamo usato i comandi pipe, prima di spiegare cosa sono.

Nelle pagine precedenti, parlando delle pagine "man", abbiamo utilizzato il comando pipe per stampare su carta le pagine del comando ls:

man ls | col -b | lpr
	  

Stiamo ridirezionando l'output di man ls ad un filtro chiamato col con una opzione -b per formattare il testo per la stampante, poi abbiamo ridirezionato l'output alla stampante con il comando lpr.

SuggerimentoSintesi
 

La pipe permette di ridirezionare l'output di un comando verso l'input di un altro comando. Per esempio: ls -al /etc | more invia l'output del comando ls al comando more per permetterne la lettura.