11.07.2015 Views

Amministrare GNU/Linux - Cia

Amministrare GNU/Linux - Cia

Amministrare GNU/Linux - Cia

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

64 CAPITOLO 2. LA SHELL E I COMANDItre file descriptor (0, 1 e 2). Questi nel caso di shell interattiva sono associati al terminale sucui essa è eseguita, e pertanto corrispondono alla tastiera per i dati in ingresso e allo schermoper i dati in uscita.Seguendo una convenzione comune, tutti i comandi unix si aspettano di ricevere i loro datiin ingresso sullo standard input (e non da uno specifico file o dispositivo, a meno che questo nonsia previsto come argomento), e scrivono i loro dati in uscita sullo standard output. 24Prendiamo allora come esempio il comando cat, questo (il suo nome, non proprio intuitivo,origina da conCATenate file) è un comando elementare serve a leggere uno o più file in ingressopassati come argomenti e a scriverne il contenuto sullo standard output. Se non si specifica nessunfile come argomento il comando legge di default dallo standard input, per cui se eseguiamo:piccardi@anarres:~/Truelite/documentazione/corso$ catci troveremo in una situazione in cui il comando è bloccato in attesa che scriviamo qualcosa. Selo facciamo scrivendo prova seguito da invio otterremo qualcosa del tipo:piccardi@anarres:~/Truelite/documentazione/corso$ catprovaprovadove il comando reagisce all’invio ristampando sul terminale quanto appena scritto e attendendonuovo input. 25Usato così il comando non è di grande utilità, in genere non serve a molto scrivere qualcosasulla tastiera per vederselo ristampare sul terminale ad ogni riga; però se vogliamo vedere ilcontenuto di un file il modo più immediato per farlo è con un comando del tipo:piccardi@anarres:~$ cat /etc/profile# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).PATH="/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games"...dato che il comando leggerà il contenuto e lo riverserà sullo standard output, ed essendo quest’ultimocollegato al terminale, lo si vedrà sullo schermo.Fin qui di nuovo, l’utilità del comando è relativa, dato che programmi per visualizzare ilcontenuto del file ce ne sono altri, magari più sofisticati come more e less, che permettonoanche di vedere il file un pezzo alla volta, e andare avanti e indietro, e non scrivono tutto difile in un colpo solo sul terminale dove poi l’inizio va perso nello scorrimento delle scritte sulloschermo. Il comando comunque prende alcune opzioni per facilitare la visualizzazione, come -nche stampa un numero progressivo per ogni riga, -t che stampa i tabulatori come ^I, -v chevisualizza i caratteri non stampabili, e -E che scrive un $ alla fine di ogni riga. La descrizionecompleta si trova al solito nella pagine di manuale accessibile con man cat.24 lo standard error non viene, in caso di operazioni regolari, mai usato; su di esso vengono scritti solo glieventuali messaggi di errore. Nel caso di shell interattiva questi di nuovo vanno sul terminale e compaiono sulloschermo, insieme ai dati in uscita, ma questo solo perché si è usato lo stesso file dello standard output, in generale,ad esempio quando si redirige lo standard output, non è così, essendo i due file distinti.25 questo avviene in quanto sul terminale si quello che si chiama I/O bufferizzato, per cui i dati in ingressovengono letti e scritti una riga alla volta, per cui alla conclusione della riga verrà letto quanto appena scritto, edil comando lo riscriverà sullo standard output; per uscire dal comando occorre nel caso indicare che la lettura èconclusa, ad esempio inviando un end-of-file sull’input con C-d, o interrompere il programma con un segnale.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!