Il comandi in Unix sono numerosi, alcuni consentono di gestire il canale di comunicazione tra due processi (pipe) mentre altri sono dei veri e propri editor di testo
Alcuni comandi molto utilizzati in Unix sono:
-
| (pipe): si tratta di un canale di comunicazione a senso unico tra due processi. Si tratta della più vecchia e più usata forma di interprocess communication utilizzata in Unix. La comunicazione avviene solo in una direzione (half-duplex). La pipe viene utilizzata per legare più operazioni, nei comandi che utilizzano una pipe, lo standard output del primo comando funge da standard input del secondo comando, e così via.
comando1 | comando2 | ...Per ordinare un file possiamo utilizzare cat indicando un solo parametro, il contenuto del file sarà riversato nello standard output che sarà passato come standard input del comando successivo e sarà ordinato con sort:
$ cat file | sortUn esempio per elencare i file contenuti nella directory corrente e che sono stati modificati l’ultima volta nel 2010:
$ ls | grep 2010Abbiamo utilizzato una pipeline grazie alla quale l’output del comando ls viene passato in input al comando grep, senza un file intermedio di appoggio.
-
echo: consente di visualizzare il contenuto di una variabile o stampare in un messaggio:
$ echo $VARIABILE
$ echo "stringa"Ad esempio:
$ var=3
$ echo $var
3Per mostrare il contenuto della directory corrente (equivale ad ls):
$ echo * -
vi: consente di avviare l’editor vi:
vi [opzioni] [file]Ad esempio per aprire l’editor vi (si esce con CTRL + Z):
$ viE’ possibile specificare il nome di un file da aprire con vi:
$ vi myFile.txt -
nano (Nano’s ANOther editor): si tratta di un editor che sopperisce alle limitazioni dell’editor Pico. Con nano è possibile utilizzare la funzione “Trova e sostituisci” o “Vai alla linea x”
nano [opzioni [[+LINE[,COLUMN]] FILE]...Per aprire un file con nano:
$ nano myfile.txt -
more: consente di impaginare un file testuale.
more [opzioni] fileAd esempio:
$ more myFile -
less: si tratta di un’evoluzione di more, serve quindi per impaginare i file testuali.
less [opzioni] fileAd esempio per mostra il contenuto di un file paginato sullo standard output, scriveremo:
$ less myFile.txtCon il comando less abbiamo la possibilità di tornare sulle pagina visualizzate, impossibile con more.
-
head: consente di visualizzare le prime n righe di un file, se non specificato legge dallo standard input.
head [opzioni]... [file]...Ad esempio mostrare le prime 10 linee di un file:
$ head –10 myFile -
tail: consente di visualizzare le ultime n righe del file, se non specificato legge dallo standard input.
tail [opzioni]... [file]...Per mostrare le ultime righe di un file:
$ tail myFilePer mostrare le ultime 10 righe di un file:
$ tail -10 myFile -
$(comando): consente di sostituire l’output del comando.
$(comando)
Ad esempio per inserire la lista dei file e directory in una variabile:
$ a=$(ls) -
sudo (superuser do)<: consente di avere i permessi come super utente per poter effettuare delle operazioni.
sudoDi default il comando sudo richiede l’immissione della password del sistema.
-
sed (stream editor): si tratta di un editor a linea di comando che non richiede l’interazione con l’utente.
[address[,address]]function[arguments]La sintassi di sed non definisce un output, quest’ultimo viene inviato direttamente allo standard output. L’editor sed è una macchina a registri:
- Copia ogni linea di input in un pattern;
- Applica tutti i comandi selezionati dal pattern;
- Copia il pattern sullo standard output, aggiungendo ogni volta una nuova linea;
- Infine cancella il pattern utilizzato.
Ecco alcuni comandi che possono essere utilizzati con il comando sed:
- a\ aggiunge il testo al di sotto della riga corrente;
- c\ consente di modifica il testo della riga corrente;
- d cancella il testo;
- i\ inserisce del testo al di sopra della riga corrente;
- p stampa del testo;
- r consente di leggere un file;
- s cerca e modifica del testo.
Ad esempio per sostituire stringa1 con stringa2 in un nuovo file:
$ sed "s/stringa1/stringa2/g" vecchio_file > myFile -
awk (Aho, Kernighan and Weinberger): si tratta di un linguaggio per l’elaborazione di modelli orientato ai record. Ha molte cose in comune con sed come l’uso delle espressioni regolari, leggere l’input dallo standard input e inviare i risultati sullo standard output.
awk/nawk [opzioni]Awk cerca su file linee o altre unità di testo che contengono il pattern, quando sono individuate effettua le operazioni effettuate.
Ecco l’indice degli articoli sui comandi Unix: