MANUALE RAPIDO SHELL BASH Creato da A. Muntoni, rivisitazione a cura di A. S. Podda
TIPI DI FILE d l b c u p s
Indic ndica a un un file file regol egolar are e (col (col coman omando do find ind si si us usa “f” “f”); ); Indica una directory; Indica un link (collegamento); Indic dica un una pe periferica a blocchi co con bu buffer; Indic dica un una pe periferica a caratteri co con bu buffer; Indic ndica a una una peri perifferic erica a a cara carattteri teri senz senza a buff buffer er;; Indica una pipe FIFO; Indica una socket.
DIRECTORY PRINCIPALI ~ / . ..
Indic ndica a la la dir direc ecto tory ry “hom “home” e” dell dell'u 'uttente ente corr corren ente te;; Indi Indica ca la dire direct ctor ory y “ro “root ot”, ”, geni genito tore re di tutt tutte e le le dir direc ecto tory ry di Linu Linux; x; Indica la directory corrente; Indi Indica ca la dire direct ctor ory y di di liv livel ello lo supe superi rior ore e a quel quella la corr corren ente te..
METACARATTERI . ^ $ \ [c ] [^c ] [a-z]
Indica un singolo carattere; Indica l'inizio della riga; Indica la fine della riga; Neut Neutra ralilizz zza a il meta metaca cara ratt tter ere e indi indica cato to imme immedi diat atam amen ente te dopo dopo;; Indic Indica a uno uno quals qualsia iasi si dei cara caratt tter erii pres presen enti ti nell' nell'in insi siem eme e c; c; Indica Indica un caratt carattere ere qualsi qualsiasi asi che non sia conten contenuto uto nell’in nell’insie sieme me c; Indica Indica uno uno qualsia qualsiasi si tra tutt tuttii i caratter caratterii present presentii nell'in nell'inter terval vallo lo a-z; a-z;
? + *
Indic ndica a zer zero o o una una occ occorr orrenz enza di di un un qua quals lsia iasi si cara caratttere tere;; Indica un uno o più ca caratteri qu qualsiasi; Indica zero o più caratteri qualsiasi.
COMANDI • alias nomealias='comando' : Crea un alias per il comando specificato tra apici. • awk '{print $n}' nomefile : Stampa l'ennesima parola di ogni riga del file specificato. • bash nomescript.sh [ARG] : Esegue lo script indicato, seguito da eventuali argomenti dello script. • bg [ID] : Porta in background il job attuale; jobid : Porta in background il job indicato dal numero jobid . • bzip2 [PARAM] nomearchivio : Comprime l’archivio specificato in formato Bzip2 (.bz2). -d : Decomprime l’archivio specificato. • cat nomefile : Visualizza il contenuto del file indicato. Manuale rapido shell Bash | Pagina 1
• cd [PARAM] : Modifica la directory corrente, spostandosi ne lla directory “home”; .. : Raggiunge la directory superiore; nomedir/ : Raggiunge la directory specificata (inserire / davanti per path assoluto). • chmod [PARAM][MODE] nomefile : Cambia i permessi ad un file/directory; -u : Utente proprietario; -g : Gruppo principale degli utenti; -o : Tutti gli utenti (non specificato: tutte le categorie); NNN : ogni cifra N compresa tra 0 e 7 indica la rappresentazione ottale dei permessi. MODI
+r, -r : Abilita/disabilita i permessi di lettura; +w, -w : Abilita/disabilita i permessi di scrittura; +x, -x : Abilita/disabilita i permessi di esecuzione. • chown username nomefile : Modifica il proprietario del file indicato. • clear : Cancella gli output precedenti nel terminale. • cmp nomefile1 nomefile2 : Stampa il byte e il num. di riga della prima differenza riscontrata tra i due. • cp [PARAM] file1 file2 : Copia file1 in un nuovo file chiamato file2 ; file directory/ : Copia il file indicato nella directory indicata; -r directory1/ directory2/ : Copia “directory1” e tutto il suo contenuto nella “directory2” . • cut [PARAM] nomefile : Stampa l’ennesimo carattere di ogni riga del file indicato (parametro obb.); -c n : Stampa solo l’ennesimo carattere di ogni riga (separare più posizioni con la virgola); -f n : Stampa l'ennesima tabulazione di ogni riga. • date [PARAM] : Stampa data/ora correnti secondo il formato ‘sab 27 nov 2010, 22.42.54, CET’; +%F : Stampa solo la data corrente, secondo il formato ‘2010-11-27’. • du [PARAM] nomefile : Visualizza la dim. di un file (e di quelli in esso contenuti) e il suo nome. -b : Mostra la dimensione in byte (anziché kilobyte). -s : Mostra il totale di ogni argomento (elimina ricorsività). • echo stringa : Stampa a video il contenuto della stringa specificata. • env : Visualizza l'elenco delle variabili d'ambiente. • export nomevar : Rende la variabile specifica visibile in qualsiasi altre shell. • expr a+b : Esegue l'espressione indicata e stampa in output il risultato. • file nomefile : Visualizza il tipo di contenuto del file indicato. • find directory -[PARAM] : Cerca uno o più file nella directory indicata (obbligatorio param. name); -name “expr ” : Indica il nome/nomi dei file da ricercare; -type T : Visualizza solo i file di tipo T indicato; -mtime N : Visualizza solo i file modificati negli ultimi N giorni. • fg [ID]: Porta in foreground il job attuale; jobid : Porta in foreground il job indicato dal numero jobid . • free : Visualizza informazioni sulla RAM e sullo swap. • grep [PARAM] “expr ” nomefile : Cerca nel file le stringhe specificate dall’espr. regolare expr ; -i : Ignora la distinzione tra maiuscole e minuscole; -n : Visualizza il numero di linea nell'output; -v : Visualizza solo le linee che non contengono la stringa; -w : Visualizza solo le linee che contengono la stringa come parola completa; -x : Visualizza solo le linee che coincidono esattamente con il pattern. • gzip [PARAM] nomearchivio : Comprime l'archivio specificato in formato Gzip (.gz).
Manuale rapido shell Bash | Pagina 2
-d : Decomprime l’archivio specificato; -f : Forza la sovrascrittura e la compressione dei link; • head [PARAM] nomefile : Visualizza le prime righe del file indicato (predefinito: prime 10 righe); -nNUM : Visualizza le prime NUM righe; -cNUM : Visualizza i primi NUM caratteri. • jobs [PARAM] : Visualizza l'elenco dei job in background; -l : Visualizza anche il PID del processo leader di ogni job in background; -p : Visualizza solo il PID del processo leader di ogni job in background. • kill processid : Termina il processo con il PID specificato. • killall processname : Termina il processo con il nome specificato. • less nomefile : Visualizza il file indicato pagina per pagina (scorrimento Avanti e Indietro). • ln [PARAM] nomefile nomefile2 : Crea un link fisico a “nomefile” chiamandolo “nomefile2 ”; -s : Crea un link simbolico anziché fisico (massimo 6 ricorsivi). • ls [PARAM] : Stampa l'elenco dei file e delle directory contenuti nella directory corrente; nomedir/ : Esegue il comando per la directory indicata; -l : Visualizza una lista dettagliata; -i : Visualizza i relativi i-node; -R : Visualizza tutto il contenuto della directory expr : Visualizza file e directory che soddisfano l’espressione regolare expr -a : Visualizza anche i file nascosti; -t : Ordina i file in base alla data di ultima modifica; -S : Ordina i file in base alla dimensione; -1 : Visualizzazione in colonna; -d “expr”/ : Visualizza solo le directory che soddisfano l’espr. regolare “expr”. • mkdir directory : Crea una directory col nome indicato (con / davanti indica path assoluto). • more nomefile : Visualizza il file indicato (scorrimento verso il basso). • mv [PARAM] corrente destinazione : Sposta un file, può essere utilizzato anche per rinominarlo; -r nomedir1/ nomedir2/ : Sposta “nomedir1” e tutto il suo contenuto in “nomedir2” . • ps [PARAM] : Fornisce l'elenco dei processi utente associati al terminale corrente; -e : Visualizza anche i processi di sistema; --l : Visualizza la lista dei processi dettagliata. • pstree : Visualizza l'albero dei processi. • pwd : Visualizza il nome della directory corrente. • rm [PARAM] nomefile : Elimina definitivamente il file indicato; -i : Chiede conferma prima di eliminare; -r directory : Elimina la directory indicata e tutto il suo contenuto; -f : Forza l’eliminazione del file. • sed [PARAM] nomefile : Editor di riga non interattivo (non modifica il file), richiede parametri; nd : Rimuove l’ennesima riga del file specificato; /arg /d / : Rimuove tutte le righe che contengono la sottostringa “arg”; /arg /y /str1/str2 : Sostituisce “str2” a “str1” in tutte le righe che contengono “arg”. • set : Visualizza l'elenco delle variabili definite nella shell. • sort [PARAM] nomefile : Stampa in output il file indicato ordinato alfabeticamente; -b : Ignora eventuali spazi nelle chiavi di ordinamento; -f : Ignora la distinzione fra maiuscole e minuscole;
Manuale rapido shell Bash | Pagina 3
-n : Considera numerica la chiave di ordinamento; -r : Ordina in modo decrescente; -t s : usa “s” come separatore di campo; -k s1,s2 : Usa l'intervallo da “s1” a “s2” come chiave di ordinamento. • strings nomefile : Visualizza le stringhe di testo all'interno di un file binario. • tail [PARAM] nomefile : Visualizza le ultime righe del file indicato (predefinito: ultime 10 righe); -nNUM : Visualizza le ultime NUM righe; -cNUM : Visualizza gli ultimi NUM caratteri. • tar [PARAM] nomearchivio nomefile : Crea un archivio (obbligatorio il parametro); cf : Crea un archivio non compresso; cvf : Crea un archivio non compresso e stampa a video i file archiviati; xf : Estrae un archivio in formato non compresso; czf : Crea un archivio compresso in formato Gzip (.gz); cjf : Crea un archivio compresso in formato Bzip2 (.bz2). • top : Effettua il monitoraggio della memoria. • touch nomefile : crea un file con il nome specificato, se esiste aggiorna la data di modifica. • tr [PARAM] a b : Sostituisce tutti i caratteri “a” con caratteri “b” (utilizzabile anche per intervalli); -c : Sostituisce tutti i caratteri diversi da “a” con caratteri “b” (complementazione); -s : Comprime gli spazi adiacenti in uno unico (squeeze); -d str : Cancella tutti i caratteri che sono presenti in “str”. • tty : Visualizza il nome del terminale corrente. • uname [PARAM] : Visualizza il nome del kernel (solitamente “Linux”); -r : Stampa la release del kernel corrente. • uniq nomefile : Rimuove le righe duplicate consecutive del file e stampa in output (senza modificarlo); • unzip nomearchivio : Decomprime l’archivio Zip indicato. • vi nomefile : Edita il file indicato con l'editor di testo Vi (comandi principali: i, , :q!, :wq). • wc [PARAM] nomefile : Stampa il numero di byte, di righe e di parole del file indicato; -c : Stampa solo il numero di byte; -w : Stampa solo il numero di parole; -l : Stampa solo il numero di righe. • who [PARAM] : Fornisce l’elenco degli utenti/terminali collegati al sistema; -a : Stampa informazioni complete sull’accesso al sistema; -b : Stampa l’orario dell’ultimo avvio del sistema; -u : Elenca gli utenti collegati. -m : Visualizza solo gli hostname e gli utenti ad essi associati. • whoami : Stampa il nome dell'utente corrente. • zip [PARAM] nomearchivio nomefile: Comprime il file indicato in formato Zip col nome indicato. -m : Elimina il file di origine.
FUNZIONI DELLA SHELL • nomevar =value : Assegna alla variabile “nomevar” il valore “value” (come stringa). • $nomevar : Accede al contenuto della variabile “nomevar”. • comando > nomefile : Redirige l’output del comando indicato in un file. • comando 2> nomefile : Redirige gli errori del comando indicato in un file.
Manuale rapido shell Bash | Pagina 4
• comando > /dev/null : Non visualizza l’output del comando specificato. • comando >> nomefile : Accoda al file indicato l'output del comando utilizzato (non sovrascrive il file). • comando1 | comando2 : Utilizza l'output di “comando1” come input per “comando2” (pipe). • comando1 `comando2 ` : Utilizza l’output di “comando2” come parametro per “comando1”. • comando < nomefile : Utilizza il file specificato come input per il comando utilizzato. • comando & : Esegue il comando indicato in background. • !?comando? : Riesegue il comando indicato con tutti i parametri con cui è stato eseguito l’ultima volta. SCRIPTING BASH • # commento : Tutto ciò che viene scritto dopo il simbolo #, nella stessa riga, non viene interpretato. • read nomevar : Attende in input un valore e lo assegna alla variabile specificata. • let var =2+3 : Esegue l’operazione aritmetica indicata e assegna il risultato alla variabile specificata; Oppure:
var =`expr 2+3` ((var =2+3)) OPERATORI ARITMETICI
i++, ++i : Incrementa o pre-incrementa (col segno meno, decrementa) la variabile; +, - : Segno del numero (operatori unari) o addizione/sottrazione (operatori binari); ** : Elevazione a potenza; *, /, % : Moltiplicazione, divisione e modulo (resto della divisione tra interi); !, ~ : Negazione logica e negazione bitwise; <<, >> : Spostamenti bitwise (shift); <=, >=, <, > : Diseguaglianze; ==, != : Uguaglianza e disuguaglianza; &, ^, | : AND, XOR e OR bitwise; &&, || : AND e OR logici. • exit [STATUS] : Termina uno script restituendo l’exit status dell’ultimo comando eseguito al pr. padre; n : Termina uno script, restituendo n (con “n” numero intero) come exit status; $n : Termina uno script, restituendo il parametro $n (con “n” numero intero) ricevuto dallo script. • $1, $2 … $n : Contenuto dei parametri inviati allo script, in ordine di posizione. Particolari:
$*, $@ : Contiene tutti i parametri in serie; $# : Contiene il numero di parametri ricevuti dallo script; $? : Contiene l'exit status dell'ultima pipeline eseguita in foreground; $! : Variabile che contiene lo status del più recente processo in background; $0 : Variabile che contiene il nome della Shell in uso; • nomearray [n] : Rappresenta l’ennesimo elemento di un array. • ${nomearray [n]} : Dereferenzia l’ennesimo elemento di un array (ne indica il contenuto).
Manuale rapido shell Bash | Pagina 5
• if [ condizione ] (o if test condizione) then true_commands else false_commands fi : Costrutto di selezione, esegue ramo then se la condizione restituisce 0, il ramo else altrimenti. CONDIZIONI
[ -e nomefile ] : Restituisce 0 se il file specificato esiste; [ -f nomefile ] : Restituisce 0 se il file specificato è regolare; [ -s nomefile ] : Restituisce 0 se il file specificato ha dimensione maggiore di 0; [ -d nomefile ] : Restituisce 0 se il file specificato è una directory; [ -b nomefile ] : Restituisce 0 se il file specificato è un dispositivo a blocchi; [ -c nomefile ] : Restituisce 0 se il file specificato è un dispositivo a caratteri; [ -r nomefile ] : Restituisce 0 se il file specificato ha permesso di lettura; [ -w nomefile ] : Restituisce 0 se il file specificato ha permesso di scrittura; [ -x nomefile ] : Restituisce 0 se il file specificato ha permesso di esecuzione; [ -O nomefile ] : Restituisce 0 se l'utente corrente è il proprietario del file specificato; [ -N nomefile ] : Restituisce 0 se il file specificato è stato modificato dall’ultima lettura; [ nomefile1 -nt nomefile2 ] : Restituisce 0 se “nomefile1” è più recente di “nomefile2”; [ nomefile1 -ot nomefile2 ] : Restituisce 0 se “nomefile1” è meno recente di “nomefile2”; [ nomelink1 -ef nomelink2 ] : Restitusce 0 se entrambi i link puntano allo stesso file; [ int1 -eq int2 ] : Restituisce 0 se “int1” è uguale a “int2” (numeri interi); [ int1 -ne int2 ] : Restituisce 0 se “int1” è diverso da “int2”; [ int1 -gt int2 ] : Restituisce 0 se “int1” è maggiore di “int2”; [ int1 -ge int2 ] : Restituisce 0 se “int1” è maggiore o uguale a “int2”; [ int1 -lt int2 ] : Restituisce 0 se “int1” è minore di “int2”; [ int1 -le int2 ] : Restituisce 0 se “int1” è minore o uguale di “int2”; [ str1 = str2 ] : Restituisce 0 se “str1” è uguale a “str2” (stringhe). Si accetta anche ==; [ str1 != str2 ] : Restituisce 0 se “str1” è diversa da “str2”; [ str1 < str2 ] : Restituisce 0 se “str1” è minore di “str2” in ordine ASCII; [ str1 > str2 ] : Restituisce 0 se “str1” è maggiore di “str2” in ordine ASCII; [ -z str ] : Restituisce 0 se “str” è la stringa null, ossia ha lunghezza 0; [ -n str ] : Restituisce 0 se “str” non è la stringa null. • case “arg ” in x1) x1_commands ;; x2) x2_commands ;; *) else_commands ;; esac : Equivale al costrutto C “switch”, testando “arg” (che può essere variabile o comando). • for arg in lista do istruzioni
Manuale rapido shell Bash | Pagina 6
done : Ciclo in cui “arg” assume ad ogni iterazione i valori contenuti in “lista”. • for (( i=0; i < MAX ; i++ )) do istruzioni done : Ciclo “for” classico del linguaggio C (MAX non deve essere preceduta da $). • while condizione do istruzioni done : Ciclo “while”, ripete l’iterazione se la condizione è vera, termina altrimenti. • until condizione do istruzioni done : Ciclo “while” inverso, ripete l’iterazione se la condizione è falsa. • nomefunzione () { istruzioni return n } : Dichiara e definisce una funzione (o procedura) che andrà chiamata con nomefunzione [ARG] La dichiarazione dev’essere specificata prima della chiamata all’interno dello script.
Manuale rapido shell Bash | Pagina 7