Sito per neoutenti GNU/Linux
Avviso per una corretta visualizzazione del sito
scritta new animata
Last updated: June 02 2015 10:39:07.
Esegui il Login, oppure Registrati,Hai dimenticato la password?
My GPG Public Key logo GnuPG
Scarica direttamente la mia chiave pubblica GPG
Gli utenti online sono ora: 1

Mon, 24 Jul 2017 00:33:42

gif
Questo sito ha avuto 9674 visite!
Il tuo indrizzo IP è 172.68.65.88.
Il tuo browser è unrecognized in esecuzione su unrecognized

foto in spiaggia del sottoscritto e chicchetta

lola e minnie abbracciate
immagine della shellTerminale-Lezione n.4


Se ricorderete, eravamo rimasti che dovevamo passere all'analisi dei flussi di input/ouput. Non spaventatevi nel leggere ciò: con questi termini intendo semplicemente dire che quando voi digitate, ad esempio, dei caratteri sulla tastiera di una shell Linux, voi state dando un input o meglio uno standard input abbreviato in stdin, il cui descrittore di file ovvero identificatore numerico (leggi id) è 0. Analogamente il risultato che il computer mostra sullo schermo del terminale viene detto standard output abbreviato in stdout, il cui id è 1. Infine se il pc ci notifica sulla finestra della shell un qualche errore, ecco che questo viene detto uno standard error cioè un stderr che viene identificato come 2.

Per capirci con un esempio: se scrivete in una shell il comando ls ecco che avete dato stdin. Poi se premete Invio, vi appariranno i file contenuti nella directory corrente, ovvero avete ottenuto stdout. Mentre se eseguite il medesimo comando in una cartella inesistente, vi verrà mostrato un messaggio d'errore e perciò uno stderr sempre nel terminale.



Riassumendo:

I tre flussi di input/output di una shell GNU/Linux:
Descrittore file (id)NomeAbbreviazione comuneDefault comune
0standard inputstdintastiera
1standard outputstdoutterminale
2standard errorstderrterminale

Da ciò, possiamo ridirezionare sia l'output che l'output: possiamo in altri termini far sì che l'output non venga visualizzato sulla shell bensì inviarlo ad un programma, oppure far acquisire ad un programma l'input non da una tastiera, ma da un file.

Iniziamo dal come usare l'ouput di un comando come input per un altro: per fare questo, basta usare il simbolo | detto in inglese pipe (conduttura). Questo simbolo se inserito tra due comandi, prende l'output del primo e lo usa come input per il secondo: ovvero questo simbolo ridirige stdout in modo che diventi stdin per un comando successivo.

Se prendiamo il solito comando ls e vogliamo visualizzare tutti i file contenuti in una directory particolarmente "ricca" ecco che il risultato potrebbe apparire troppo velocemente per essere letto; per rimediare possiamo semplicemente ridirigere il risultato al comando less che serve infatti anche per ottenere la visualizzazione di file testuali una schermata alla volta. In sintesi basta dare:
ls | less
Per uscire poi da questo comando basta premere il tasto q che significa quit, e così tornerete alla schermata precedente. Se volete testare la bontà di quanto sopra, spostatevi nella cartella contenente i binari delle applicazioni installate cioè in /usr/bin/ e vedrete quanti file vi sono in essa, che con il comando su menzionato saranno molto facile da controllare smile_che_ride_gustosamente.

Altra cosa che può tornare utile è ridirigere l'output dal monitor, cosa che avviene di default (stdout), ad un file di testo: per fare questo basta usare il simbolo di ">" (maggiore) e indicare un file che verrà creato al momento. Ad esempio scrivendo in un terminale nella vostra home:
ls > file_di_prova
se andate nella vostra /home vedrete un semplicissimo file di testo contenente tutte le directory qui presenti, oppure sempre dalla shell scrivete: cat file_di_prova
e vedrete stampato a video il contenuto del file.

Per ora mi fermo qui, ma presto vedremo come proseguire con questa "tecnica" che ci permetterà di ottenere dei comandi molto interessanti.



Potete anche, se volete,

icona standard per feed rss



Questo sito è prodotto da Jam1, autore e curatore di testi e immagini. Questo sito fa uso dei CSS ed è conforme alla specifica XHTML 1.0, secondo le direttive del W3C.