GLUG Govonis Corso Avanzato GNU / Linux Lezione del 02.01.2012 Shell
GLUG Govonis Di cosa parleremo?
GLUG Govonis lavorare con la linea di comando
GLUG Govonis lavorare con la linea di comando i comandi di elaborazione dei contenuti dei file
GLUG Govonis lavorare con la linea di comando i comandi di elaborazione dei contenuti dei file standard input/output /error, pipes e redirezione
GLUG Govonis lavorare con la linea di comando i comandi di elaborazione dei contenuti dei file standard input/output /error, pipes e redirezione ricerche ed elaborazione sui file
Lavorare con la linea di comando Per comprendere il funzionamento della linea di comando, bisogna capire come funziona la shell
Shell Che cos'è una shell? In un sistema operativo, la shell è il programma che permette agli utenti di comunicare con il sistema e di avviare i programmi. È una delle componenti principali di un sistema operativo, insieme al kernel.
GUI shell kernel hardware
Shell Nel corso degli anni sono stare create numerose shell per Unix, le piu' famose Bourne shell (sh) C shell Korn shell altre sono state sviluppate come evoluzione delle shell originali tra cui tektronix C shell (tcsh) molto diffusa nei sistemi xbsd Bourne again shell (bash) di default in GNU/Linux
Shell La shell di default di GNU/Linux e' Bash Bourne again shell fu scritta nel 1989 ad opera di Bian Fox e della Free Software Foundation bash e' compatibile con il programma originale (sh) ma comprende anche funzioni tipiche di altre shell Unix (C shell, Korn shell) alcuni comandi sono interni alla shell molti altri sono programmi separati che risiedono nelle directory di sistema /bin /sbin...
Comandi Come si accede alla shell? Loggandosi da console login: <username> + <password> Da interfaccia grafica (GUI) <applicazioni><accessori><terminale>
shell Tutte le volte che si lancia un programma che deve interagire con la riga di comando, questo si aspetta di avere a disposizione e già aperti 3 file, che convenzionalmente sono chiamati Standard input Standard output Standard error
Comandi Comandi interni ed esterni I comandi interni sono inclusi nella shell. I comandi esterni sono programmi installati nel file system sotto la directory /bin e vengono eseguiti dalla shell
Comandi interni Comandi interni: cd change directory Per navigare all'interno del file system
Comandi interni Comandi interni: pwd print working directory Stampa a video l'attuale directory di lavoro
Comandi interni Comandi interni: echo Visualizza un testo
Comandi interni Comandi interni: time Stampa il tempo di esecuzione di un programma
Comandi interni Comandi interni: exit logout Per terminare la shell
Comandi interni Trucchi Storia dei comandi history Permette di accedere usando i tasti freccia in alto e in basso alle linee di comando eseguite in precedenza
Comandi interni bash memorizza nell history list gli ultimi 500 comandi inseriti dall utente; l history list viene memorizzata nel file.bash history nell home directory dell utente al momento del logout (e riletta al momento del login)
Comandi interni Oltre alle frecce è possibile mediante l'uso del carattere! richiamare una specifica voce sulla riga di comando stessa, indicandola sia per numero che tramite le prime lettere.!! richiama il comando più recente
Comandi interni!n richiama il comando numerato n nella history! n richiama il comando precedente di n posizioni nella history.!stringa richiama l'ultimo comando eseguito che inizia per stringa
Comandi interni History -c pulisce la cronologia
Comandi interni Trucchi Completamento di comando Digitare parte di un comando e poi il tasto TAB
Comandi id visualizza lo UserID (UID) e il GroupID (GID) dell'utente corrente. UID e GID sono identificativi numerici assegnati ad ogni utenti.
Comandi lastlog visualizza per ogni utente del sistema la data dell'ultimo log. last visualizza tutti i login recenti sul sistema.
Comandi shutdown riavvia il sistema (è possibile specificare entro quanti secondi, se riavviare o stoppare).
Comandi who visualizza gli utenti correntemente loggati sul sistema. whoami visualizza il nome utente associato con l'attuale user ID
Comandi uname fornisce alcune informazioni di sistema uname -a tutte le infomazioni uname -o sistema operativo uname -m tipo di macchina
Comandi Formato comune dei comandi GNU/Linux Unix comando -opz arg1 arg2... argn comando il comando che si intende dare corrisponde ad un comando proprio del sistema Unix/Linux o sviluppato da un utente tramite un linguaggio di programmazione - opz una serie di modalita' particolari (opzioni) con le quali si vuole eseguire quel comando arg1 arg2... argn gli argomenti sui quali quel comando deve agire.
Variabili d'ambiente La bash definisce automaticamente alcune variabili e ne utilizza delle altre qualora siano definite
Variabili d'ambiente Per visualizzare il contenuto delle variabili possiamo utilizzare il comando echo echo $PATH la lista delle directory in cui si trovano i comandi.
Variabili d'ambiente echo $HOSTNAME il nome della macchina echo $HISTSIZE il numero di comandi da mantenere nella history
Redirezione e pipe Redirezione dell' I/O La redirezione dell'i/o è la capacita della shell di modicare i file a cui fanno riferimentolo standard input, lo standard output e lo standard error I due operatori piu elementari sono <" e >" che permettono rispettivamente di redirigere lo standard input e lo standard output sul file specicato dall'utente dopo l'operatore
Redirezione e pipe Redirezione dell' I/O ls > testo.txt Il contenuto della directory corrente non viene visualizzata a video ma sul file testo.txt
Redirezione e pipe Operatori > crea un nuovo file contenente lo standard output. Se il file esiste lo sovrascrive >> aggiunge a un file lo standard output. Se il file non esiste lo crea 2> crea un nuovo file contenente lo standard error 2>> aggiunge a un file lo standard error. Se il file non esiste lo crea < utilizza il contenuto del file specificato come standard input
Redirezione e pipe L'operatore " consente di collegare lo standard output del comando che lo precede con lo standard input del comando che lo segue. Questo viene fatto utilizzando una pipe", un servizio di comunicazione fra processi fornito dal kernel che, come indica il nome stesso, costituisce una sorta di conduttura di collegamento fra i due comandi. es. ls more In questo modo diventa possibile fornire come dati in ingresso ad un comando quelli prodotti in uscita da un altro. Si possono così lanciare in sequenza una serie di comandi in cui ciascuno elabora i risultati del precedente, effettuando combinazioni ed elaborazioni anche molto complesse.
Comandi per controllare il contenuto dei file comando cat questo è un comando elementare che serve a leggere uno o piu le in ingresso, passati come argomenti, e a scriverne il contenuto sullo standard output. comando join permette di eseguire una unione per righe, opera solo su due file, che devono essere passati come argomenti, ed esegue l'unione sulla base della presenza di un campo comune
Comandi per controllare il contenuto dei file comando sort permette di ordinare il contenuto di un file. Il comando prende come argomento un file e ne stampa il contenuto con le righe in ordine alfabetico. sort -f ordina alfabeticamente ignorando maiuscole/minuscole sort -M ordina per mese (Jan dec) sort -n ordina per numero sort -k ordina per campo sort -r ordina in ordine decrescente
Comandi per controllare il contenuto dei file comando uniq Elimina le linee duplicate Utile da utilizzare in pipe con sort es. sort testo.txt uniq
Comandi di elaborazione dei contenuti dei file Comando head Visualizza le prime 10 linee di un file head -n num Head -c num visualizza le prime num linee visualizza i primi num byte
Comandi di elaborazione dei contenuti dei file Comando tail Visualizza le ultime 10 linee di un file tail -n num tail -c num tail -f visualizza le ultime num linee visualizza gli ultimi num byte mantiene il file aperto e visualizza le nuove linee aggiunte (tracking di un log file)
Comandi di elaborazione dei contenuti dei file Comando less Visualizza un file una videata alla volta <barra spaziatrice> visualizza prossima videata <Esc> V visualizza videata precedente Freccia su e giù sposta in su o in giù di una linea g per andare a una determinata linea es. g50 q per uscire dal programma
elaborazione dei contenuti dei file Comando wc Word count Conta le linee, le parole e i byte di un file
Usare le espressioni regolari Comando grep il comando prende come primo argomento la stringa da cercare seguita dal nome del file o dei file (se se ne indica piu di uno) in cui effettuare la ricerca. Il comando stampa in uscita ogni riga del file nella quale ha rilevato una corrispondenza, e se si sono indicati piu le precede la riga con il nome del file. grep -c grep -r grep -i stampa il numero di linee che soddisfano ricerca ricerca ricorsiva directory e sotto directory ignora maiuscolo/minuscolo nella ricerca
Usare le espressioni regolari Espressioni regolari Indicano una lista o un intervallo di caratteri [ac] qualsiasi carattere dell'insieme specificato quindi a e c [a-c] qualsiasi carattere nell'intervallo speicificato quindi a, b, c
Usare le espressioni regolari Comando sed Stream Editor Permette di effettuare modifiche a un file, come aggiungere testo, inserire testo, aggiungere testo da un file Sostituire del testo con quello specificato sed 'a\text' file aggiunge text al file sed 's/regexp/sostituto sostituisce testo che coincide con regexp con sostituto
I comandi per le ricerche dei file Comando locate Il comando più veloce per cercare un file in maniera generica sul filesystem è locate, che, come suggerisce il nome, serve a localizzare sul filesystem tutti i file che contengono nel loro pathname la stringa passata come argomento. Il vantaggio di questo programma è la sua velocità, esso infatti non effettua la ricerca con una scansione del contenuto del disco, ma su un piccolo database interno che contiene l'elenco di tutti i file presenti nel sistema.
I comandi per le ricerche dei file Comando find Il comando per cercare un file direttamente sul filesystem. Le maggiori potenzialita di find derivano dalla sua capacita di effettuare ricerche con i criteri piu svariati, da quelli sul nome del file in varie forme ( -name, -regex, -path), a quelli per gruppo e utente ( -group, -user), secondo i permessi (-perm), secondo i vari tempi (-atime, -ctime, -mtime)
Documentazione Documentazione
Documentazione Sito http://help.ubuntu-it.org http://en.flossmanuals.net /gnulinux
Riferimenti Utilizzare il proprio desktop di Ubuntu Documentation Project <ubuntu-doc@lists.ubuntu.com>
Riferimenti Introduzione a Linux di Machtelt Garrels Informatica e GNU/Linux di Daniele Masini Amministrare GNU/Linux Di Simone Piccardi
Riferimenti http://www.gnu.org http://www.fsf.org http://www.govonis.org