La riga di comando

Tutti i sistemi operativi Unix-like, cioè simili a Unix, come GNU/Linux, offrono la possibilità di compiere operazioni attraverso la riga di comando. Un terminale vi mette a disposizione una riga di comando.

Quando si dà un comando, si chiede al sistema operativo di eseguire il programma che ha il nome indicato nel comando. Per esempio, inserendo il comando date, il sistema operativo esegue il programma date. Anche i comandi sulle directory corrispondono a programmi installati nel nostro sistema. Ad esempio, quando per elencare il contenuto di una directory usiamo il comando ls, non facciamo altro che chiedere al sistema operativo di eseguire il comando che si chiama ls. Ti stai chiedendo dove si trova questo programma? Il programma ls si trova in una delle directory destinate ai comandi eseguibili di sistema: con ogni probabilità si trova nella directory /bin. Per verificare:

ls /bin

Il prompt della shell

Il programma che si occupa di leggere e interpretare i comandi che si inseriscono sulla riga di comando, si chiama shell. Il prompt della shell (o semplicemente prompt) è una sequenza di caratteri che indica che la shell è pronta a ricevere comandi dall'utente.

Il prompt varia in base alla shell utilizzata (ce ne sono diverse: bash, csh, tcsh ...) e di solito include informazioni quali la directory di lavoro, il nome della postazione hostname, il nome dell'utente, ecc. Ad esempio, supponiamo che l'utente rossi si trovi sulla macchina saturno e che stia lavorando nella directory documenti situata nella sua home directory. Se si utilizza la shell bash (individuata dal simbolo terminale '$') il prompt sarà il seguente:

rossi@saturno:~/documenti$

Il simbolo ~ è una scorciatoia per la home directory. In questo esempio, sostituisce /home/rossi.

Se la directory di lavoro è invece la home directory dell'utente, allora il prompt sarà:

rossi@saturno:~$

Qualunque sia la shell utilizzata dal sistema, quando vedete il prompt con il cursore lampeggiante, la macchina è pronta: potete inserire il vostro comando e premere invio. Ad esempio, divertiamoci con un paio di comandi utili che si possono provare subito. Se diamo il comando date, il sistema vi dà la data e l'ora corrente:

rossi@saturno:~$
Fri May 25 11:56:35 CEST 2018

Se vogliamo farci stampare il calendario del mese corrente, usiamo cal:

rossi@saturno:~$ cal
          May 2018        
Su Mo Tu We Th Fr Sa  
       1  2  3  4  5  
 6  7  8  9 10 11 12  
13 14 15 16 17 18 19  
20 21 22 23 24 25 26  
27 28 29 30 31 

Il comando cal è molto versatile. Ad esempio, possiamo farci stampare il mese di un qualunque anno, passato o futuro (possono essere richiesti tutti gli anni compresi fra 1 e 9999). Ecco alcuni esempi:

rossi@saturno:~$ cal 7 1982
     July 1982        
Su Mo Tu We Th Fr Sa  
             1  2  3  
 4  5  6  7  8  9 10  
11 12 13 14 15 16 17  
18 19 20 21 22 23 24  
25 26 27 28 29 30 31

E se vogliamo l'intero calendario di un anno:

rossi@saturno:~$ cal 2018
                            2018
      January               February               March          
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  
    1  2  3  4  5  6               1  2  3               1  2  3  
 7  8  9 10 11 12 13   4  5  6  7  8  9 10   4  5  6  7  8  9 10  
14 15 16 17 18 19 20  11 12 13 14 15 16 17  11 12 13 14 15 16 17  
21 22 23 24 25 26 27  18 19 20 21 22 23 24  18 19 20 21 22 23 24  
28 29 30 31           25 26 27 28           25 26 27 28 29 30 31  
                                                                  

       April                  May                   June          
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  
 1  2  3  4  5  6  7         1  2  3  4  5                  1  2  
 8  9 10 11 12 13 14   6  7  8  9 10 11 12   3  4  5  6  7  8  9  
15 16 17 18 19 20 21  13 14 15 16 17 18 19  10 11 12 13 14 15 16  
22 23 24 25 26 27 28  20 21 22 23 24 25 26  17 18 19 20 21 22 23  
29 30                 27 28 29 30 31        24 25 26 27 28 29 30  
                                                                  

        July                 August              September        
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  
 1  2  3  4  5  6  7            1  2  3  4                     1  
 8  9 10 11 12 13 14   5  6  7  8  9 10 11   2  3  4  5  6  7  8  
15 16 17 18 19 20 21  12 13 14 15 16 17 18   9 10 11 12 13 14 15  
22 23 24 25 26 27 28  19 20 21 22 23 24 25  16 17 18 19 20 21 22  
29 30 31              26 27 28 29 30 31     23 24 25 26 27 28 29  
                                            30                    

      October               November              December        
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  
    1  2  3  4  5  6               1  2  3                     1  
 7  8  9 10 11 12 13   4  5  6  7  8  9 10   2  3  4  5  6  7  8  
14 15 16 17 18 19 20  11 12 13 14 15 16 17   9 10 11 12 13 14 15  
21 22 23 24 25 26 27  18 19 20 21 22 23 24  16 17 18 19 20 21 22  
28 29 30 31           25 26 27 28 29 30     23 24 25 26 27 28 29  
                                            30 31