Sistemi UNIX - La shell

Maggio 2015

Introduzione alla shell


L'interprete di comandi è l'interfaccia tra l'utente e il sistema operativo, da cui il suo nome in inglese «shell», che significa «guscio».


Le shell, une coquille entre l\



La shell è così incaricata di fare da intermediario tra il sistema operativo e l'utente mediante dei comandi inseriti da quest'ultimo. Il suo ruolo consiste quindi nel leggere la linea di comando, interpretare il suo significato, eseguire il comando e poi rinviare il risultato in uscite.

La shell è anche un file eseguibile incaricato di interpretare i comandi, di trasmetterli al sistema di rinviare il risultato. Esistono più shell, fra i più diffusi sh (detto «Bourne shell»),
bashBourne again shell»), cshC Shell»), TcshTenex C shell»),
kshKorn shell») e zshZero shell»). I loro nomi corrispondono generalmente al nome dell'eseguibile.

Ogni utente ha una shell di default, che viene avviata all'apertura di un prompt. La shell di default è precisata nel file di configurazione /etc/passwd nell'ultimo campo della linea corrispondente all'utente. È possibile cambiare shell in una sezione eseguendo semplicemente il file eseguibile corrispondente, ad esempio:

 /bin/bash

Prompt


La shell si inizializza leggendo la propria configurazione globale (in un file della cartella /etc/),
poi leggendo la configurazione propria dell'utente (in un file nascosto, il cui nome comincia con un punto, posto nella cartella di base dell'utente, cioè /home/nome_dell'_utente/.file_di_configurazione), poi visualizza un prompt prompt come segue :

terminale:/directory/attuale$
Per default nella maggiorparte delle shell il prompt è composto dal nome del terminale, seguito da due punti (:), dalla cartella corrente, poi da un carattere che indica il tipo di utente connesso :
  • «$» indica che si tratta di un utente normale
  • «#» indica che si tratta dell'amministratore, detto «root»

Nozione di linea di comando


Una linea di comando è una stringa di caratteri costituita da un comando, corrispondente ad un file eseguibile dal sistema oppure da un comando della shell nonché da alcuni parametri opzionali:

ls -al /home/nome_utente/
Nel comando qui sopra, ls è il nome del comando, -al e /home/nome_utente/ sono dei parametri. I parametri che cominciano con - sono detti opzioni. Per ogni comando esiste generalmente un certo numero di opzioni che possono essere dettagliate digitando uno dei comandi seguenti:
comando --help
comando -?
man comando

Ingresso-uscita standard


All'esecuzione di un comando, si crea un processo. Questo va ad aprire tre flussi :

  • stdin, detto ingresso standard, nel quale il processo leggerà i dati in entrata. Da default stdin corrisponde alla tastiera; STDIN è identificato dal numero 0;
  • stdout, detto uscita standard, nel quale il processo scriverà i dati in uscita. Da default stdin corrisponde allo schermo; STDOUT è identificato dal numero 1;
  • stderr, detto errore standard, nel quale il processore scriverà i messaggi di errore. Da default stderr corrisponde allo schermo. STDERR è identificato dal numero 2;




entrées-sorties standard : STDOUT, STDIN, STDERR



Da default all'esecuzione di un programma, i dati sono quindi letti partendo dalla tastiera e il programma invia la propria uscita e i propri errori sullo schermo, ma è possibile leggere i dati partendo da qualsiasi periferica d'entrata, anche da un file e inviare l'uscita su una periferica di visualizzazione, un file, ecc.

Ridirezione


Linux, come tutti i sistemi di tipo Unix, ha dei meccanismi che permettono di reindirizzare le entrate-uscite standard verso dei file.

Così, l'utilizzo del carattere «>» permette di reindirizzare l'uscita standard di un comando posto a sinistra verso il file posto a destra :

ls -al /home/nome_utente/ > lista.txt
echo "lista" > /etc/file_di_configurazione
Il comando seguente è equivalente ad una copia di file:
cat lista1 > lista2
La ridirezione «>» ha lo scopo di creare un nuovo file. Quindi, se esiste un file con lo stesso nome, questo sarà eliminato. Il comando successivo crea semplicemente un file vuoto :
> file

L'impiego di un doppio carattere «>>» permette di concatenare l'uscita standard al file, cioè aggiungere l'uscita al file, senza eliminarlo.

Allo stesso modo, il carattere «<» indica una ridirezione dell'entrata standard. Il comando successivo invia il contenuto del file lista.txt in entrata del comando cat, il cui solo scopo è di visualizzare il contenuto sull'uscita standard (esempio inutile ma formativo) :

cat < lista.txt

Infine l'utilizzo della ridirezione «<<» permette di leggere sull'entrata standard fino a che la stringa posta a destra sia incontrata. Così, l'esempio seguente leggerà l'entrata standard fino a che la parola STOP non arrivi, poi visualizzerà il risultato :

cat << STOP

Tubi di comunicazione (pipe)


I pipe (in italiano «tubi") costituiscono un meccanismo di comunicazione proprio ad ogni sistema UNIX. Un pipe, simbolizzato da una barra verticale (carattere «|»), permette di attribuire l'uscita standard di un comando all'entrata standard di un'altra.

Così nell'esempio seguente, l'uscita standard del comando ls -al è inviato al programma sort incaricato di smistare il risultato in ordine alfabetico :

ls -al | sort

In questo modo è possibile incatenare un certo numero di comandi per tubi successivi. Nell'esempio che segue il comando visualizza tutti i file della cartella corrente, seleziona le linee contenenti la parola "zip" (con il comando grep) e conta il numero totale di linee :

ls -l | grep zip | wc -l
Per poter consultare questo documento offline, ne potete scaricare gratuitamente una versione in formato PDF:
Sistemi-unix-la-shell .pdf

Vedi anche


UNIX system - The shell
UNIX system - The shell
Sistema UNIX: El shell
Sistema UNIX: El shell
UNIX-System - SHELL
UNIX-System - SHELL
Systèmes UNIX - Le shell
Systèmes UNIX - Le shell
Sistemas UNIX  -Shell
Sistemas UNIX -Shell
Il documento intitolato « Sistemi UNIX - La shell » da CCM (it.ccm.net) è reso disponibile sotto i termini della licenza Creative Commons. È possibile copiare, modificare delle copie di questa pagina, nelle condizioni previste dalla licenza, finché questa nota appaia chiaramente.