Introduzione a UNIX passo tre 
 

3.1 Ridirezione

La maggioranza dei processi iniziati da comandi UNIX scrive sullo standard output (cioe' scrive sul terminale  o  sulla finestra-terminale)e prende l' input dallo standard input (cioe' leggono dalla tastiera ). Esiste anche lo standard error  su cui i processi scrivono i messaggi di errore e che, per default, corrisponde, come lo standard output, allo schermo.
Abbiamo gia' visto un uso del comando  cat per scrivere su schermo il contenuto di un file.
Diamo adesso   cat   senza specificare alcun file:
        dfisa2.ts.infn.it> cat
Scriviamo adesso qualche parola da tastiera  premendo il tasto [Return] .

Infine tenete il tasto  [Ctrl] premuto e digitate  d (indicato in breve come  ^D) Per terminare l'input.

Cosa e' successo?
Se si da il comando  cat senza secificare un file,  viene letto lo standard input (la tastiera), finche' non viene ricevuto l'  "end of file" (^D), copiandolo sullo standard output (lo schermo).

In UNIX possiamo ridirigere sia l' input sia l' output   di un comando.


3.2 Ridirezione dell' output

Useremo il simbolo  >  per ridirigere l' output di un comando. Per esempio per creare un file di nome list1 contenente una lista di frutta, dare:
        dfisa2.ts.infn.it> cat > list1
Quindi digitare alcuni nomi di frutti. Premere [Return] dopo ogni nome.
        pera
        banana
        mela
        ^D      [control d per terminare]
Il simbolo  > ridirige l'output di  cat, che normalmente andrebbe sullo schermo, in n file di nome list1

P leggere il contenuto del file dare:

        dfisa2.ts.infn.it> cat list1

Esercizio

Usando il precedente metodo, creare ultro file di nome  list2 contenente la seguente frutta: arancia, prugna, mango, uva. Leggere il contenuto di  list2

La forma  >> appende lo standard output ad un  file. Per aggiungere altri frutti al file  list1, dare

        dfisa2.ts.infn.it> cat >> list1
TQuindi inserire i nomi di altri frutti:
        pesca
        uva
        ananas
        ^D      [control d p finire con l' input]
Per leggere il contenuto del file dare:
        dfisa2.ts.infn.it> cat list1
Psiamo usare il comando  cat per unire  (concatenare) list1 e list2 i un nuovo file di nome  biglist. Dare
        dfisa2.ts.infn.it> cat list1 list2 > biglist

Il contenuto dei files  list1 e list2 vene letto e l' output di questa lettura consecutiva viene ridiretto sul  file biglist

Per leggere questa file :

        dfisa2.ts.infn.it> cat biglist

3.3 Ridirezione dell' input

Il simbolo  < ridirige l' input di un comando.

Il comando  sort ordina una lista alfabeticamente o numericamente. Dare
        dfisa2.ts.infn.it> sort

Quindi immettere nomi di ortaggi. Premere [Return] dopo ogni nome.

        potato
        carrot
        onion
        ^D      [control d p terminare l' input]
L' output sara':
        carrot
        onion
        potato
Usando  < ysi puo' ridirigere l' input in modo che sia letto da un file invece che da tastiera. Per esempio per ordinare la lista della frutta:
        dfisa2.ts.infn.it> sort < bigliste

e la lista ordinata sara' visualizzata sullo schermo.
Per scrivere la lista ordinata su un file:

        dfisa2.ts.infn.it> sort < biglist > slist
Si puo' usare cat  er leggere il contenuto del file  slist

3.4 Pipes

Per vedere chi usa il sistema, si puo' usare il comando
        dfisa2.ts.infn.it> who
Un metodo per ottenere una lista ordinata dei nomi e',
        dfisa2.ts.infn.it> who > names
        dfisa2.ts.infn.it> sort < names
Questo pero' e' un po' lento, occorre ricordarsi di cancellare il file temporaneo (names) quando si e' finito. Quello che logicamente si vuol fare e' di connettere in qualche modo l' output di  who  direttamente all' input del  comando  sort. questo e'  proprio quello che le  pipes implementano. Una pipe viene indicata dal simbolo  |

Per esempio, dando il comando

        dfisa2.ts.infn.it> who | sort
si otterra' lo stesso risultato di prima ma piu' semplicemente e direttamente.

Per trovare quanti utenti sono collegati, si puo' dare:

        dfisa2.ts.infn.it> who | wc -l

Esercizio

Usando i comandi ls -a ,wc ed una pipe determinare quanti files sono presenti nella directory corrente.


Riassunto

   command > file               ridirige lo standard output su  file
   command >> file              appende lo standard output a file
   command < file               ridirige lo standard input da file
   command1 | command2          crea una pipe tra l' output di command1 all' input di command2
   cat file1 file2 > file0      concatena file1 e file2 in file0                    
   sort                         ordina  dati in input
   who                          elenca gli utenti collegati al sistema
   a2ps textfile psfile         trasforma un file di testo in un file postscript 
   lpr -Pprinter psfile         sampa un file  postscript sulla stampante di nome printer


Adattato da "UNIX Tutorial for Beginners" di M.Stonebank@surrey.ac.uk (URL: http://www.ee.surrey.ac.uk/Teaching/Unix/ ) Torna all' indice