|
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 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ì:
|
|
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:
|
|
Elenchiamo qui altri comandi Linux di grande utilità. Per una
loro descrizione più approfondita si faccia riferimento alla
documentazione online di Linux, provando i seguenti:
<comando> --help
Ad esempio, per creare l'archivio compresso di un progetto si può usare tar:
[01] Creare un nuovo file GenRubrica.txt nella nuova directory Num_Gen figlia della propria home directory in modo che contenga tutti i dati presenti nelle due rubriche precedenti (Rubrica.txt, MiaRubrica.txt), senza editare manualmente il contenuto dei files. [02] Creare un nuovo file OrdRubrica.txt nella home directory memorizzandoci i dati di GenRubrica.txt ordinati secondo l'ordine alfabetico, senza editare manualmente il contenuto dei files. [03] Individuare il comando con il quale si sarebbe potuto ottenere direttamente il file OrdRubrica.txt (nella home directory) a partire dai file MiaRubrica.txt e Rubrica.txt. [04] Spostare tutti i file con suffisso .txt delle directory Num_Pers e Num_Utili nella home directory e cancellare le directory Num_Pers e Num_Utili. [05] Indicare un comando che indichi la size di tutti i file contenuti nella home directory. [06] Eseguire la seguente sequenza di azioni:
[07] Scaricare dalla home directory della Prof. Gori (~gorir) il file eseguibile provami. Lanciare l'esecuzione di
tale eseguibile (file binario) dando il comando da shell ./provami. Che
succede?
[08] Eseguire di nuovo il comando ./provami.
Aprire un'altra shell e usare una sequenza di comandi
per bloccare l'esecuzione del processo provami. |