![]() ![]() |
|
![]() ![]() |
Abbiamo visto alcuni comandi elementari UNIX per navigare il file system
(dirs, pwd, cd, ls), per creare e cancellare
file o directory
(touch,
mkdir,
rmdir,
rm), e per copiare e
spostare file
(cp,
mv).
Per utilizzare in modo corretto ed efficace la shell, oltre
a conoscere i comandi UNIX disponibili bisogna sapere come scriverli e come combinarli, sfruttando
alcuni meccanismi che la shell ci mette a disposizione.
|
![]() ![]() |
|
![]() ![]() |
Molte shell offrono funzioni di editing della
linea di comando che sono "ereditate" dall'editor emacs.
Ecco alcune delle funzioni più utili:
La shell, inoltre, registra i comandi inseriti dall'utente nella cosiddetta history. I comandi della history possono essere visualizzati e rieseguiti:
|
![]() ![]() |
|
![]() ![]() |
Accade spesso di voler operare su più file
contemporaneamente. Ad esempio, supponiamo di voler copiare
tutti i file html di una directory nella
sotto-directory html-src. Usando la wildcard  * (asterisco) si può
scrivere semplicemente:
I metacaratteri e il loro significato sono:
Se la shell trova un'espressione contenente metacaratteri in una linea di comando, la espande con tutti i nomi di file che "soddisfano" (match) l'espressione. I seguenti esempi usano il comando echo, che rimanda sullo schermo ogni parametro.
|
![]() ![]() |
|
![]() ![]() |
Per visualizzare correttamente file che non sono di testo occorre usare le corrispondenti applicazioni. Come default, i comandi visti sopra dirigono il contenuto dei file sullo standard output. |
![]() ![]() |
|
![]() ![]() |
Per convenzione ogni programma UNIX
comunica seguendo un analogo schema di input/output, che comprende tre canali
Per default la shell associa stdin alla tastiera e stdout, stderr allo schermo del terminale utente. |
![]() ![]() |
|
![]() ![]() |
Il meccanismo della ridirezione permette di alterare il comportamento standard. La shell permette di ridirigere stdin, stdout e stderr, connettendoli a generici file. Si usano per questo i caratteri speciali Ad esempio, l'output del comando echo viene mandato su stdout, che per default è lo schermo. Possiamo ridirigere l'output nel seguente modo:
Il comando sort (senza parametri) legge dallo standard input e scrive sullo standard output. Possiamo ridirigere input e/o output così:
|
![]() ![]() |
|
![]() ![]() |
Una pipe prende l'output del comando
alla sinistra del simbolo di pipe (la barra verticale, |), e lo manda all'input del
comando alla destra del simbolo.
Una pipeline è una sequenza di una o più pipe. Questo meccanismo permette di combinare in modo arbitrario i piccoli ed efficienti comandi UNIX per ottenere nuove funzionalità. Ad esempio, per vedere il contenuto del file elenco una pagina alla volta dopo averlo ordinato, posso eseguire i comandi:
Utilizzando una pipe, ottengo lo stesso risultato risparmiando tempo e spazio disco:
Introduciamo alcuni utili comandi UNIX, con cui costruiremo altri esempi:
|
![]() ![]() |
|
![]() ![]() |
Quando si lancia la shell bash (il default dei
vostri account) vengono eseguiti i comandi contenuti nel
file .bashrc nella
home directory.
Questi comandi possono essere usati per personalizzare il comportamento della shell, ad esempio con
I comandi alias e unalias permettono di definire ed eliminare alias, ovvero nomi che rappresentano comandi, possibilmente composti e con opzioni.
|
![]() ![]() |
|
![]() ![]() |
Un processo è un
programma in esecuzione. Concettualmente,
la shell esegue ripetutamente i seguenti passi:
Poiché UNIX è un sistema multitasking, la shell permette di lanciare più processi in parallelo. Scrivendo
il comando <comando> viene eseguito in background, cioè la shell continua l'esecuzione subito dopo aver lanciato il processo, senza attenderne la terminazione. I seguenti comandi e tasti speciali sono utili per la gestione dei processi:
Ad esempio, per lanciare emacs in background, le seguenti sequenze sono equivalenti:
|
![]() ![]() |
|
![]() ![]() |
UNIX fornisce vari comandi per
cercare comandi o file, oppure per ottenere
informazioni su di un comando o file dato.
|
![]() ![]() |
|
![]() ![]() |
Elenchiamo qui altri comandi Linux di grande utilità. Per una
loro descrizione più approfondita si faccia riferimento alla
dispensa CdC & Linux oppure alla
documentazione online di Linux, provando i seguenti:
<comando> --help
Ad esempio, per creare l'archivio compresso di un progetto si può usare tar:
Per estrarre i file archiviati:
|