Linux - La Shell Bash

Documenti analoghi
Linux e la shell Bash

Lab. di Sistemi Operativi - Esercitazione - Comandi Shell

- comando sort: con chiavi di ordinamento -

La Shell: esecuzione dei comandi

Shell BASH. Variabili Redirezione

La Shell di Unix. l utente impartisce i comandi al sistema digitandoli ad un apposito prompt;

L ambiente UNIX/Linux. I filtri Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Lezione 2: Comandi avanzati della Shell di Unix

Senza Soluzioni. Può un altro utente non appartenente al gruppo di mgiorgio, eseguire gli stessi comandi?

Ulteriori comandi sui file

SHELL: File e Filesystem

Linux e la shell Bash

ORGANIZZAZIONE del FILE SYSTEM SISTEMA OPERATIVO UNIX FILE SYSTEM. FILE astrazione unificante del sistema operativo

GLUG Govonis. Corso Avanzato GNU / Linux. Lezione del Shell

File System ext2. Struttura del filesystem ext2.

Il filesystem di Unix/Linux (I)

Lab. di Sistemi Operativi - Esercitazione n 2 - a.a. 2012/2013

Bash: history list (I)

Esercitazione GNU/Linux n. 2

Gestione avanzata dei file

E' un interprete di comandi: legge ciascuna linea di comando, la interpreta e la esegue

Link e permessi. Corso di Laurea Triennale in Ingegneria delle TLC e dell Automazione. Corso di Sistemi Operativi A. A

File binari e file di testo

Il sistema operativo LINUX Esercitazione 3. Esercizio 1. Esercizio 2. Esercizio 5 - Soluzione. Il sistema operativo LINUX Esercitazione 4.

Linux e la shell Bash

Lezione 1: Introduzione alla Shell di Unix

Il sistema operativo LINUX La shell

Codice Corso: UNX010. Durata: 3 giorni

Excel Base- Lezione 3. Barbara Pocobelli Estav Nord Ovest. Il comando Trova

Corso Linux ARCES. Lezione 3: Lavorare con la Shell

BREVISSIMA GUIDA AL SISTEMA UNIX / LINUX

Corso di Laboratorio di Sistemi Operativi A.A Fabio Buttussi

Shell: variabili di sistema. Per visualizzare il valore di tutte le variabili d ambiente si usa il comando set

Manipolazione di testo

Processi. Introduzione. Effective user/group id. Fork

Shell di Linux e Comandi Utente

Laboratorio di Algoritmi e Strutture Dati

Usare Python in Linux

File System I parte. File System

Lab. di Sistemi Operativi

Comandi Unix. Introduzione. G. Lettieri May 24, Negli esempi seguenti, si suppone che la directory corrente contenga i file:

L utility Unix awk [Aho-Weinberger-Kernighan]

Linguistica Computazionale: esercitazioni

Introduzione. P4 termina prima di P3, P2 e P3 prima di P1 P1 P2 P3 P4 P1 P1 P2 P3 P4. Padre. P1,..., P4 sono processi. Figlio

Formattazione avanzata. I/O Avanzato e File. Formattazione dell output. Formattazione avanzata. Forma completa degli specificatori

CORSO LINUX PER LA CERTIFICAZIONE LPI ESSENTIALS

Uso del terminale in ambiente UNIX

L ambiente UNIX/Linux. Comandi UNIX & Linux (parte A) Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

CORSO ACCESS PARTE IV

Il DOS diagramma di flusso. I comandi del DOS. I comandi: vista funzionale. Parametri. Opzioni. I comandi: sintassi

Sistemi Operativi, Secondo Modulo, Canale M Z Riassunto della lezione del 06/03/2017

Introduzione ai sistemi UNIX/Linux. Introduzione ai sistemi UNIX/Linux

L interfaccia command line di Ubuntu è il Terminale che usa un sistema command line detto bash.

Lab. di Sistemi Operativi - Lezione in aula - a.a. 2012/2013

fare hard link fra file system diversi e su directory.

Shell. Una shell di comandi ci consente, dunque, di eseguire tutte le operazioni di cui abbiamo bisogno!

Elencare i contenuti di una directory

Lezione 3: Programmazione della Shell di Unix

Laboratorio di Sistemi Operativi

Esercitazione 2 GUIDA

GESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009

Funzioni di I/O per numeri. Input e output di valori numerici. Input formattato scanf. Stream preesistenti

File System e Interprete Comandi

Interfaccia del file system

Command line kung fu

Laboratorio di Informatica Generale I UD Prima esercitazione

Editor di testo. Ing. Simone Brienza. Corso di laurea magistrale in Ingegneria Elettronica

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

WORD PROCESSING.

Sistemi Operativi, Secondo Modulo, Canale M Z Riassunto della lezione del 29/02/2016

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

Manipolazioni elementari di flussi di testo strutturati

Tipi di pulsante, caselle di controllo e altri controlli sulla barra degli strumenti Moduli

Come ordinare facilmente i dati in un foglio di calcolo Excel definendo chiavi e parametri.

Prova in itinere 7 Giugno 2016 Università di Salerno

Inserire un nuovo foglio

Introduzione ai sistemi UNIX/Linux

Scrivere testi - ed. Un programma che consente di creare file testo si dice editor. L editor standard e più semplice di UNIX è ed.

Introduzione all'uso del sistema operativo Ubuntu

Input/Output di numeri

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.

Il sistema operativo LINUX Script di Shell

I comandi del DOS. Come si fornisce un comando al DOS

Comandi principali di Linux (1)

I Metacaratteri della Shell Unix

Laboratorio di sistemi operativi A.A. 2010/2011 Gruppo 2 Gennaro Oliva Processi

L ambiente UNIX/Linux. Espressioni regolari e comando find Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Archiviazione, ricerca dei file e pianificazione dei processi

Corso di Sistemi Operativi I/II. Introduzione a Linux. Il File System. Ruggero Donida Labati

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Linux e la shell Bash

Definire una chiave primaria. Microsoft Access. Definire una chiave primaria. Definire una chiave primaria. Definire una chiave primaria

Linguistica dei Corpora (2) Lezione 3: Manipolare testi (non solo con cqp)

4. I moduli in Access 2000/2003

Scritto da Martedì 12 Luglio :14 - Ultimo aggiornamento Venerdì 15 Luglio :47

Corso di Laboratorio di Sistemi Operativi

Linux - La Shell Bash

Lavorare in ambiente UNIX. Prompt dei comandi (shell) Pipe e filtri (I/O) Tips and tricks

Formazione a Supporto dell Inserimento Lavorativo. Elementi di Word avanzato. Docente Franchini Gloria

Transcript:

DEI DEI -- Politecnico di di Bari Bari Linux - La Shell Bash I link Hard link e soft link Il comando ln Redirezione dell I/O Concatenamento di comandi: la pipeline Visualizzazione ed diting di file Filtri e ricerche Esercizi 1

Link 1/2 Gli elementi all interno di un file system GNU/Linux non sono in realtà memorizzati con il loro nome, ma tramite dei numeri: gli index nodes o inode Un cilindro è organizzato in i-node e data-blocks. 2

Link 2/2 Ad ogni file è associato un singolo ed unico i-node Un i-node è un contenitore di metadati che memorizza la maggior parte delle informazioni restituite da stat (numero di link, dimensione, proprietario, allocazione sul disco, etc.) e i puntatori ai data block, in cui viene memorizzato il contenuto di un file. All aumento delle dimensioni del file può corrispondere un aumento dei data block allocati per il file. Il data block di una directory viene detto directory block e contiene, per ogni file contenuto nella directory, una directory entry (#i-node, filename) contenente il nome del file e il numero di i-node ad esso associato. Un riferimento ad un file è detto link. Ogni file può avere un numero qualsiasi di link. UNIX ha due tipi di link: hard link e soft link. Entrambi possono essere creati con il comando ln. 3

Hard link 1/2 Un hard link è un puntatore all'i-node di un file esistente. Non viene creato un nuovo file ma solo un directory-entry (inode#, nome_file) nella directory contenente il nuovo collegamento. Un hard link eredita tutte le informazioni associate all'i-node del file originale e non c'è più modo di distinguere tra l'hard link e il file originale. Le directory hanno un numero di link almeno pari a 2: un puntatore è memorizzato nella voce corrispondente contenuta dalla directory padre ; un puntatore è contenuto nella stessa directory verso. La maggior parte di implementazioni UNIX moderne non consente di creare ulteriori hard link a directory. Questo limite viene imposto per evitare ricorsioni infinite nel tentativo di attraversare un albero che parte da un hard link che punta alla propria directory padre. 4

Hard link 2/2 Non è possibile effettuare un hard link con un file memorizzato su una partizione diversa da quella della directory in cui lo si vuole creare. Ogni volta che si crea un hard link ad un file, il link count per il file si incrementa di 1. Quando il comando rm riceve come argomento un hard link, il sistema decrementa il link count (nell i-node del file) di 1. Se il link count non è 0, il sistema rimuove solo la directory entry del file cancellato. Il contenuto del file e altre directory entry per quel file (hard link) rimangono inalterati. Se il link count è 0, il sistema rimuove la directory entry per quel file, libera l -inode del file e dealloca i data block che contenevano il file. La cancellazione di un file non implica automaticamente che l inode corrispondente venga liberato: ciò avverrà unicamente se non sono presenti altri hardlink che puntanto a tale inode. 5

Soft link o symbolic link Un soft link (o symbolic link) corrisponde ad un file che contiene, all interno dell unico data block ad esso associato, il percorso assoluto di un altro file. I soft link superano i limiti degli hard link in quanto consentono di: - creare collegamenti tra entità su filesystem diversi; - creare link a directory. Un soft link può essere utilizzato per: - creare puntatori a file o directory lasciando sempre ben chiara la distinzione tra il file originale e il link. Ogni volta che il sistema incontra un soft link sostituisce il suo contenuto con il percorso che lo individua Quando il comando rm riceve come argomento un soft link, cancella quest'ultimo e non il file a cui esso si riferisce. 6

ln ln: realizza i collegamenti tra file. Di default realizza un hard link. SINTASSI HARD LINK ln [opzioni] filesorgente1 [filesorgente2 filesorgenten] filedestinazione filesorgentex non può essere una diretory, X:1 N filedestinazione può essere una directory. FLAG -n non crea il link se filedestinazione esiste già SINTASSI SOFT LINK ln [opzioni] directorysorgente filedestinazione FLAG -s crea un collegamento simbolico a filesorgente o a directorysorgente con il nome filedestinazione. 7

Esempio comando ln ln /home/user/file1.txt hardlinkfile1 ls li 2622543 -rw-rw-r-- 2 annarita annarita 0 mag 4 18:04 file1.txt 2622543 -rw-rw-r-- 2 annarita annarita 0 mag 4 18:04 hardlinkfile1 Il numero di i-node coincide Il numero di link al file è 2, in quanto entrambi i file puntano allo stesso inode La data e l ora di creazione dell hard link coincide con la data di creazione del file sorgente Non occupa spazio su disco Il file hardlinkfile1 è un file lo si evince dal nell ACL ln s /home/user/file1.txt softlinkfile1 ls li 2622543 -rw-rw-r-- 2 annarita annarita 0 mag 4 18:04 file1.txt 417295 lrwxrwxrwx 1 annarita annarita 9 mag 5 15:47 softlinkfile1 -> file1.txt Il numero dell inode è differente La data e l ora di creazione differisce da quella del file sorgente Occupa spazio su disco Il file softlinkfile è un link lo si evince dalla lettera l nelll ACL La freccia indica il nome del file sorgente a cui il link punta 8

Canali di comunicazione e redirezione I programmi dispongono di 3 canali di comunicazione standard: 0 standard input (tastiera) 1 standard output (terminale) 2 standard error (terminale) SINTASSI comando operatore file < Redirige lo standard input del comando su un file anzichè da tastiera, equivalente a 0< > Redirige solo lo standard output su un file sovrascrivendone il contenuto, equivalente a 1>,modalità truncate >> Redirige lo standard output su un file aggiungendo il contenuto in coda al file di ridirezione, append mode 2> Redirige lo standard error in modalità truncate 2>> Redirige lo standard error su un file in modalità append n> Redirige il descrittore n-esimo (n>> append mode) n>&m Concatena i due canali di comunicazione associati ai descrittori di file n ed m &> Redirige sia lo stdout che lo stderr nel file specificato 9

Esempio ls -l > stdout.txt Contenuto del file stdout.txt total 16 -rw-r--r-- 1 user user 13 2010-05-31 06:36 esempio_sort_num.txt -rw-r--rw- 1 user user 28 2010-05-31 05:56 esempio_sort.txt -rw-r--r-- 1 user user 215 2010-05-31 11:55 esempio_uniq.txt -rw-rw-r-- 1 user user 125 2010-05-31 11:48 file_esempio.txt -rw-r--r-- 1 user user 0 2010-06-01 06:22 stdout.txt N.B. nella stessa linea di comando possono essere fatti più reindirizzamenti: comando < fileinput > fileoutput 2> fileerror 10

Concatenamento comandi: la pipeline (1/2) Il simbolo di pipe ( ) serve a redirigere lo standard output del comando a sinistra della pipe nello standard input del comando a destra della pipe. La shell attende che tutti i comandi della pipeline siano terminati prima di restituire un valore. SINTASSI [!] comando1 [ comando2] Se all'inizio nella pipeline c'è un punto esclamativo (!) il valore restituito corrisponde alla negazione logica del risultato normale. 11

Concatenamento comandi: la pipeline (2/2) Sulla stessa linea è possibile eseguire una lista di comandi separandoli con caratteri speciali SINTASSI comando1 ; comando2 I comandi separati da punto e virgola (;) sono eseguiti sequenzialmente (prima comando1 e poi comando2) SINTASSI comando1 && comando2 L'operatore di controllo && si comporta come l'operatore booleano AND. Il comando1 viene eseguito sempre, il comando2 soltanto se il primo ha terminato con successo. SINTASSI comando1 comando2 L'operatore di controllo si comporta come l'operatore booleano OR. Il comando1 viene eseguito sempre, il comando2 solo se il primo non ha terminato con successo oppure non si è potuto eseguire. 12

echo echo: stampa una stringa sullo standard output. SINTASSI echo [stringa] ESEMPI echo hello world! echo ~ Mostra il percorso della home-directory dell'utente loggato echo testo >> file_prova Inserisce la stringa "testo" in coda al file_prova 13

cat cat: (concatenate) legge ogni file argomento in sequenza e mostra sullo standard output il contenuto, ovvero concatena file. L'operazione non genera alcun file e si utilizza per controllare il contenuto di file testuali. SINTASSI cat [opzioni] file FLAG -n Numera le righe sullo stdout ESEMPI cat file1 Mostra sullo standard output il contenuto di file1. cat file1 file2 > file3 Genera file3 che è il risultato del concatenamento in sequenza di file1 e file2 14

file file : visualizza il tipo di uno o più file. SINTASSI file file_esempio ESEMPI file esempio_uniq.txt esempio_uniq.txt: UTF-8 Unicode text 15

less (more) less (more): visualizza un file in modo interattivo. Apre il paginatore e formatta il testo in pagine per facilitarne la lettura. SINTASSI less nomefile more è un paginatore alla stregua di less, ma consente solo lo scorrimento delle pagine in avanti. N.B. I paginatori si possono scorrere con i tasti invio, spazio e frecce. Per uscire dal paginatore si usa Q. Per chiedere l'help del paginatore si usa H. ESEMPI ls -l less Mostra mediate il paginatore less l'output del comando precedente 16

Esercizi 1. Visualizzate il contenuto del file /etc/passwd. 2. Visualizzate l'inizio e la fine del file /etc/passwd attraverso un paginatore. 3. Determinare la tipologia dei file /etc/passwd e /bin/ls. 17

sort sort: ordina il file ottenuto concatenando i file indicati e scrive il risultato sullo standard output. Se non è indicato alcun file, ordina lo standard input. SINTASSI sort [opzioni] [file1 filen] ESEMPI cat esempio_sort.txt RIGA A RIGA D RIGA C RIGA B sort esempio_sort.txt RIGA A RIGA B RIGA C RIGA D 18

sort (flag) -c Controlla se i file indicati siano già ordinati. Se non lo sono viene emessa una segnalazione di errore e il programma mostra la prima riga che non rispetta l'ordine sort -c esempio_sort.txt sort: esempio_sort.txt:3: disorder: RIGA C RIGA A OK RIGA D OK RIGA C ERR RIGA B 19

sort (flag) -n Esegue un ordinamento numerico considerando anche il segno meno e il punto decimale cat esempio_sort_num.txt 1.1 100 5 11 sort esempio_sort_num.txt 100 11 1.1 5 sort n esempio_sort_num.txt 1.1 5 11 100 20

sort (flag) -m Fonde insieme i file indicati che devono essere già ordinati -b Ignora gli spazi (e tabulazioni) vuoti iniziali -d Ignora tutti i caratteri che non siano lettere, numeri o spazi -f Non distingue tra lettere maiuscole e minuscole -i Ignora i caratteri speciali al di fuori del set ASCII puro -r Inverte l'ordine della comparazione -o file Invece di utilizzare lo standard output, utilizza il file indicato per inserire il risultato dell'operazione. 21

wc 1/2 wc (word count) conta e mostra righe, parole, caratteri e byte per ogni file. Di default conta righe, parole e byte. SINTASSI wc [opzioni] [file] FLAG -l numero di linee -w numero di parole -m numero di caratteri -c numero di byte Formato risposta: [righe] [parole] [caratteri] [byte] nome_file 22

wc 2/2 cat elencotel roberto 48000529 marco 3452328 mario 5567843 luigi 674211467 wc elencotel 4 8 60 elencotel wc -wlmc elencotel 4 8 60 60 elencotel 23

head head: copia le prime X linee o byte di un file sullo standard output (default X=10). Se nessun file è specificato, copia linee dallo standard input. SINTASSI head [opzioni] [filename] FLAG -c #X Mostra i primi #X byte di un file -c -#X Mostra i byte di un file esclusi gli ultimi #X byte -n #X Mostra le prime #X righe di un file (equivale a -#X) -n -#X Mostra le righe di un file escluse le ultime #X ESEMPI cat elencotel head -1 elencotel (equivale a $ head -n 1 elencotel) head -n -1 elencotel 24

tail tail copia il file sullo standard output, iniziando da un posto specificato (linee, blocchi o caratteri dall'inizio o dalla fine del file). Se non è specificato nessun file, copia lo standard input. Mostra le ultime righe o byte di un file, di default le prime 10 righe. SINTASSI tail [opzioni] [file] FLAG -c #X Mostra gli ultimi #X byte di un file -c +#X Mostra gli ultimi byte di un file a partire dal byte #X -n #X Mostra le ultime #X righe di un file (equivale a -#X) -n +#X Mostra le ultime righe di un file a partire dalla riga #X ESEMPI cat elencotel tail -c +3 elencotel tail -n 3 elencotel 25

uniq uniq: mostra od omette le linee ripetute. Se non è specificato nessun flag visualizza tutte le righe senza ripeterle. SINTASSI ESEMPI uniq [opzioni] [file_esempio] cat esempio_uniq.txt Questa riga è presente una sola volta. Questa riga è presente due volte. Questa riga è presente due volte. Questa riga è presente tre volte. Questa riga è presente tre volte. Questa riga è presente tre volte. uniq esempio_uniq.txt Questa riga è presente una sola volta. Questa riga è presente due volte. Questa riga è presente tre volte. 26

uniq (flag) -d Mostra solo le linee duplicate uniq -d esempio_uniq.txt Questa riga è presente due volte. Questa riga è presente tre volte. -u Mostra solo le linee uniche non duplicate uniq -u esempio_uniq.txt Questa riga è presente una sola volta. -c Per ogni riga indica il numero di occorrenze uniq -c esempio_uniq.txt 1 Questa riga è presente una sola volta. 2 Questa riga è presente due volte. 3 Questa riga è presente tre volte. 27

uniq (flag) -f N Salta il confronto delle prime N parole -i Nel confronto ignora la differenza tra lettere maiuscole e minuscole -s N Salta il confronto dei primi N caratteri -w N Confronta non più di N caratteri per riga 28

cut 1/2 cut Permette di estrarre sezioni di una riga di testo, delimitate da un carattere separatore. SINTASSI: cut [opzioni] [file] FLAG -b range Estrae solo i byte indicati nel range (N, N-M, -N, N-) -c range Estrae solo i caratteri indicati nel range (N, N-M, -N, N-) -d separatore Indica il carattere/stringa separatore da utilizzare (anzichè TAB) -f intervallo Indica la lista dei campi da estrarre (N, N-M, -N, N-) ESEMPI cat cut_file nome cognome matricola pippo pluto 123456 ciccio pallino 098765 29

cut 2/2 cut -f 2 cut_file cat cut_file_delim nome;cognome;matricola;email;cdl pippo;pluto;123456;p.p@p.it;aut ciccio;pallino;098765;ciccio@gmail.com;inf cut -d \; -f 2-3,5 cut_file_delim Considera ogni riga composta da più stringhe separate dal (;) e ne visualizza solo la seconda, la terza e la quinta. 30

diff - colordiff diff Trova differenze tra due file. Questo comando risulta molto utile per confrontare i file di configurazione. Se si sostituisce a uno dei file da confrontare il trattino (-), questo indica che il confronto verrà eseguito con lo standard input. SINTASSI FLAG ESEMPI diff [opzioni] file1 file2 -b Ignora le differenze nella quantità di spazi bianchi -B Ignora le differenze che consistono solo in righe vuote -r Confrontando due directory, confronta ogni sottodirectory ricorsivamente --brief Riferisce solo se i file sono diversi, senza mostrarne le differenze --ignore-case Considera allo stesso modo maiuscole e minuscole, ignorando ogni relativa differenza diff --brief /etc/passwd /etc/shadow colordiff il comando ha le stesse opzioni ed effetti di diff ma mostra un output colorato che permette una maggiore leggibilità. 31

Esercizi Scrivere una combinazione di comandi Unix che consenta di visualizzare: 1. la terza e la quarta riga del file elenco 2. le penultime 3 righe del file elenco 3. l n-esima riga del file elenco head - 4 elenco tail -2 tail - 4 elenco head -3 head -n elenco tail -1 Conta il numero di linee contenute nel file /etc/passwd wc - l /etc/passwd Visualizza le righe del file /etc/passwd in ordine alfabetico sort /etc/passwd 32

Esercizi Con un opportuno comando Unix visualizzare: 1. il contenuto del file /etc/passwd 2. Estrarre il primo campo dal file /etc/passwd ordinato alfabeticamente cat /etc/passwd cut d\: -f1 /etc/passwd sort Realizzare una combinazione di comandi unix per visualizzare l ultimo file in ordine alfabetico presente nella directory di lavoro ls sort tail -1 33

Esercizi Con opportuni comandi Unix modificare il file di testo votostudenti.txt formato da m righe rimuovendo la prima riga Gianni 20 Carlo 10 Bruno 15 Alice 30 wc -l votostudenti.txt (4 righe è il valore restituito) tail -3 votostudenti.txt > tmp mv tmp votostudenti.txt (rinomina il file tmp nel file votostudenti.txt) 34

Esercizi Realizzare una combinazione di comandi unix che, dato un file di testo esistente elenco, crea un nuovo file nominativo, contenente la riga di elenco che viene lessicograficamente per seconda. Il contenuto di un file elenco è il seguente: valeria aldo roberta bruno sandro paola sort elenco head 2 tail 1 > nominativo 35