Il kernel Il kernel di LINUX è il cuore del sistema operativo: alloca risorse (tempo e memoria) ai...

27
Il kernel Il kernel di LINUX è il cuore del sistema operativo: alloca risorse (tempo e memoria) ai programmi e manipola i files e le comunicazioni come risposta a chiamate a funzioni di sistema. . La shell La shell funziona da interfaccia tra utente e kernel. Quando un utente si collega, il programma che gestisce il login verifica lo username e la password e quindi inizia l' esecuzione di un altro programma detto shell. La shell è un interprete di comandi (CLI). Interpreta i comandi dati dall' utente e provvede alla loro esecuzione. I comandi sono dei programmi: quando termina la loro esecuzione la shell restituisce un nuovo prompt ($).

Transcript of Il kernel Il kernel di LINUX è il cuore del sistema operativo: alloca risorse (tempo e memoria) ai...

Page 1: Il kernel Il kernel di LINUX è il cuore del sistema operativo: alloca risorse (tempo e memoria) ai programmi e manipola i files e le comunicazioni come.

Il  kernelIl  kernel di LINUX è il cuore del sistema operativo:  alloca risorse

(tempo e memoria)  ai programmi e manipola i files e le comunicazioni come risposta a chiamate a  funzioni di sistema.

.

La shellLa shell funziona da interfaccia tra utente e kernel. Quando un utente si collega, il programma che gestisce il login verifica lo username e la

password e quindi inizia l' esecuzione di un altro programma detto shell. La shell è un interprete di comandi

(CLI). Interpreta i comandi dati dall' utente e provvede alla loro esecuzione.  I comandi sono dei programmi: quando termina la loro

esecuzione la shell restituisce un nuovo prompt   ($).

Page 2: Il kernel Il kernel di LINUX è il cuore del sistema operativo: alloca risorse (tempo e memoria) ai programmi e manipola i files e le comunicazioni come.

Su LINUX tutto appare come un file o un processo.

ProcessoUn  processo è un programma in esecuzione caratterizzato da un identificatore o Process IDentificator (PID). Ogni processo ha un

processo padre da cui è stato chiamato (PPID). Esistono Processi particolari detti daemon che sono residenti e

sempre operativi che servono per soddisfare le richieste del sistema e degli utenti. alcuni esempi sono: mail,  ftp,  http, telnet, lpd.

FileUn file è una collezione di dati. Può essere creato dall' utente usando

text editors,  compilatori etc.

Page 3: Il kernel Il kernel di LINUX è il cuore del sistema operativo: alloca risorse (tempo e memoria) ai programmi e manipola i files e le comunicazioni come.

La struttura delle directoryTutti i file sono raggruppati nella struttura delle directory. L' insieme dei files (file-system) è organizzato gerarchicamente come albero invertito. Il punto di partenza della gerarchia è

usualmente chiamato  "root"  ed e' indicato da uno slash (/).

Page 4: Il kernel Il kernel di LINUX è il cuore del sistema operativo: alloca risorse (tempo e memoria) ai programmi e manipola i files e le comunicazioni come.

Home directory

Quando ci si collega la directory corrente è costituita dalla cosiddetta home directory  stabilita una volta per tutte dall'amministratore di sistema (detto root). La home directory ha lo stesso nome dello

username.

Elencare files e directories

ls (list schema)

Il comando  ls  elenca il contenuto della home directory. Se nella directory non c'è alcun file visibile si riottiene il prompt.

Page 5: Il kernel Il kernel di LINUX è il cuore del sistema operativo: alloca risorse (tempo e memoria) ai programmi e manipola i files e le comunicazioni come.

File nascosti

Files il cui nome inizia col punto  (.) sono chiamati files nascosti ed usualmente contengono informazioni utili alla configurazione di programmi  o alla personalizzazione dell' ambiente di lavoro. Il

motivo per "nasconderli"  è di  non ingombrare eccessivamente di nomi l'elenco dei files e directories. Per elencare tutti i files, inclusi

quelli nascosti, si può usare il comando:      ls -a

Le  directory   .   e   ..

, "." indica il nome della directory corrente per cui ".." indica il genitore della directory corrente. Quindi il comando

Page 6: Il kernel Il kernel di LINUX è il cuore del sistema operativo: alloca risorse (tempo e memoria) ai programmi e manipola i files e le comunicazioni come.

Creare una directory

mkdir nome (make directory)

Crea la sotto directory “linuxstuff” nella home directory per metterci i files che saranno creati nel corso di questa introduzione

Verifica la sua presenza con il comando ls

Page 7: Il kernel Il kernel di LINUX è il cuore del sistema operativo: alloca risorse (tempo e memoria) ai programmi e manipola i files e le comunicazioni come.

Cambiare directory

cd nome-directory (change directory).

Cambia directory ponendoti nella directory appena creata.Verificane il contenuto

Crea al suo interno la directory “projects”       

        cd . indica di stare dove si e'  (la directory  unixstuff ).

        cd .. ci porterà una directory piu' in su nella gerarchia  (nel presente  esempio,  nella home directory).

Provare.

cd senza argomenti  fa sempre tornare nella home directory.

Page 8: Il kernel Il kernel di LINUX è il cuore del sistema operativo: alloca risorse (tempo e memoria) ai programmi e manipola i files e le comunicazioni come.

Dove sono?

pwd (print working directory)Stampa l’indirizzo assoluto (a partire dalla directory root) della

directory corrente

Trova l’indirizzo assoluto della  home-directory

Page 9: Il kernel Il kernel di LINUX è il cuore del sistema operativo: alloca risorse (tempo e memoria) ai programmi e manipola i files e le comunicazioni come.

Individuazione univoca dei file

Andate nella home directory e date i comandils unixstuff. Cosa ottenete?

ls projects. Cosa ottenete?

Per usare comandi su files (o directory) occorre individuare univocamente il file.

Che comando devo utilizzare per vedere il contenuto della directory projects a partire dalla home directory?

Si può sempre fare riferimento alla home directory mediante il carattere  tilde ~ . Per esempio, ls ~/unixstuff elencherà il

contenuto di  unixstuff  indipendentemente da quale è la directory di default corrente.

Prevedete cosa  elencherà allora il comando    ls ~

E cosa verrà visualizzato dal comando  ls ~/..

Page 10: Il kernel Il kernel di LINUX è il cuore del sistema operativo: alloca risorse (tempo e memoria) ai programmi e manipola i files e le comunicazioni come.

Scrivere un file con VI: basi

vi nomefile

Se il file non esiste viene aperto (ma non creato fino al salvataggio)

VI consiste di due strati: all’inizio il programma entra nel command layer

:w salva:w nomefile salva su file nuovo:q esci senza salvare:q! esci forzando a non salvare:wq salva ed esci

<ESC>

i : inizia a scrivere a inizio rigaa : inizia a scrivere a fine rigao : crea una nuova riga sottoO : crea una nuova riga sopra

Edit layer

Command layer

Page 11: Il kernel Il kernel di LINUX è il cuore del sistema operativo: alloca risorse (tempo e memoria) ai programmi e manipola i files e le comunicazioni come.

Scrivere un file con VI: basi

Creare nella directory project il file dati.txt, scriverci il proprio nome e cognome e uscire

Verificare che sia stato creato

Dimensioni di un file

ls –l

Riaprire il file dati.txt e aggiungere una riga che indichi il luogo e la data di nascita

Verificare la nuova dimensione del file

wc file (word count)

Conta  i caratteri, le parole e le righe in un file.

Page 12: Il kernel Il kernel di LINUX è il cuore del sistema operativo: alloca risorse (tempo e memoria) ai programmi e manipola i files e le comunicazioni come.

Copiare file

cp file1 file2 (copy)fa una copia del file file1 nella directory corrente e lo chiama file2.

cp file1 dir (copy)fa una copia del file file1 nella directory dir.

Copiare il file dati.txt nel nuovo file datinuovi.txtAprire il nuovo file e aggiungere una riga: MATRICOLA numero di

matricola

Cambiare nome ai file

mv file1 file2 (move)mv   cambia il nome file1 in file2

Il comando cambia il nome completo di un file  (inclusa la specifica sulle directory) simulando l'effetto di spostare il file da una directory

ad un'altra.

Cambia nome a datinuovi.txt, spostandolo nella directory precedente e chiamandolo matricola.txt

Page 13: Il kernel Il kernel di LINUX è il cuore del sistema operativo: alloca risorse (tempo e memoria) ai programmi e manipola i files e le comunicazioni come.

Cancellare file e directory

rm nomefile (remove),rmdir nomedir (remove directory)

Il comando   rm  cancella (rimuove) un file. Per cancellare le directories si usa il comando  rmdir  (purchè la directory sia vuota).

Page 14: Il kernel Il kernel di LINUX è il cuore del sistema operativo: alloca risorse (tempo e memoria) ai programmi e manipola i files e le comunicazioni come.

Permessi di accessoAd ogni file (e quindi anche ad ogni directory) sono associati diritti di

accesso che possono essere elencati con  ls -l.

-rwxrw-r--  1 ee51ab  beng95 2450 Sept29 11:52 file1  

  .

Permessi di accesso per i files.r (o -), indica permesso a leggere e copiare il contenuto del file.

w (o  -), indica  permesso di alterare il contenuto del file. x (o  -), indica permesso di esecuzione

Permessi di accesso per le directories.r permette di elencare il contenuto della directory;

w fornisce la possibilità di cancellare i files dalla directory o di copiarli (o muoverli) nella directory;

x concede il diritto di accedere alla directory.

Directory o file

Possessore

Gruppo

Altri

Page 15: Il kernel Il kernel di LINUX è il cuore del sistema operativo: alloca risorse (tempo e memoria) ai programmi e manipola i files e le comunicazioni come.

Mostrare su schermo il contenuto dei files

clear (clear screen)

cat file (concatenate)Mostra il contenuto di un file sullo schermo.

more fileScrive sullo schermo il contenuto del file una pagina alla volta.

head file [-num]Scrive sullo schermo le prime dieci righe (o le prime num righe) di un

file.

tail file [-num]

Scrive su schermo le ultime 10 righe (o le ultime num righe) di un file.

Page 16: Il kernel Il kernel di LINUX è il cuore del sistema operativo: alloca risorse (tempo e memoria) ai programmi e manipola i files e le comunicazioni come.

Ricercare nel contenuto di un file

grep parola file

. Ricerca  nei files parole o sequenze di caratteri.

grep Matricola matricola.txt   scrive ogni linea che contiene la parola Matricola. O no??

Il comando grep è "case sensitive";  cioè distingue maiuscole e minuscole:

Per ignorare la distizione tra maiuscole e minuscole  si puo' usare il modificatore -i

     Per ricercare una frase o una sequenza che contiene spazi occorre

racchiuderla tra apici.

  -v      mostra le linee che NON contengono -n      premette il numero di riga davanti ad ogni riga che riporta 

-c      riporta solo il conteggio delle linee che contengono la sequenza -l      riporta i nomi dei file che contengono la stringa cercata

Page 17: Il kernel Il kernel di LINUX è il cuore del sistema operativo: alloca risorse (tempo e memoria) ai programmi e manipola i files e le comunicazioni come.

Ridirezione

La maggioranza dei processi iniziati da comandi LINUX scrive sullo standard output (cioè scrive sul terminale o sulla finestra-terminale) e

prende l'input dallo standard input (cioè leggono dalla tastiera ).

COMANDO

Standard input Standard output

Input ridirezionato Output ridirezionato

FILE

SCHERMO

Page 18: Il kernel Il kernel di LINUX è il cuore del sistema operativo: alloca risorse (tempo e memoria) ai programmi e manipola i files e le comunicazioni come.

Ridirezione dell' output

Useremo il simbolo  >  per ridirigere l'output di un comando.

cat Quindi digitare alcuni nomi di frutti. Premere [Return] dopo ogni

nome.         pera         banana         mela         ^D      [control d per terminare]

cat > list1Il simbolo  > ridirige l'output di  cat, che normalmente andrebbe sullo

schermo, in un file di nome list1 Per leggere il contenuto del file dare:

     cat list1

Usando il precedente metodo, creare ultro file di nome  list2 contenente la seguente frutta: arancia, prugna, mango, uva. Leggere

il contenuto di  list2

Page 19: Il kernel Il kernel di LINUX è il cuore del sistema operativo: alloca risorse (tempo e memoria) ai programmi e manipola i files e le comunicazioni come.

Ridirezione dell' output

La forma  >> appende lo standard output ad un  file.

        cat >> list1 Quindi inserire i nomi di altri frutti: pesca         uva         ananas

        ^D      [control d p finire con l' input]

cat list1 list2 > biglist Il contenuto dei files  list1 e list2 vene letto e l' output di questa

lettura consecutiva viene ridiretto sul  file biglist

Esiste inoltre il comando paste che consente di unire due files su due colonne affiancate.

paste list1 list2 > list12

Page 20: Il kernel Il kernel di LINUX è il cuore del sistema operativo: alloca risorse (tempo e memoria) ai programmi e manipola i files e le comunicazioni come.

Ridirezione dell' inputIl simbolo  < ridirige l' input di un comando.

Il comando  sort ordina una lista alfabeticamente o numericamente. Dare

        $ sort Quindi immettere nomi di ortaggi. Premere [Return] dopo ogni nome.        

patata         carota         cipolla         ^D      [control d per terminare l'input]

Usando  < si può ridirigere l' input in modo che sia letto da un file invece che da tastiera. Per esempio per ordinare la lista della frutta:

        sort < biglist

Per scrivere la lista ordinata su un file:         sort < biglist > slist

Page 21: Il kernel Il kernel di LINUX è il cuore del sistema operativo: alloca risorse (tempo e memoria) ai programmi e manipola i files e le comunicazioni come.

Pipe

Concatena due programmi ridirezionando l’output del primo come imput per il secondo

Una pipe viene indicata dal simbolo  |

        ls | sort

Ordina i file della directory corrente

        ls | wc

Conta quanti file sono contenuti nella directory corrente

In quanti file è contenuto il vostro cognome?

Page 22: Il kernel Il kernel di LINUX è il cuore del sistema operativo: alloca risorse (tempo e memoria) ai programmi e manipola i files e le comunicazioni come.

Caratteri jolly

Il carattere  * è detto un carattere jolly (wildcharacter), e sta per nessuno o più caratteri se presente nel nome di un file o directory.

ls *.txt

Page 23: Il kernel Il kernel di LINUX è il cuore del sistema operativo: alloca risorse (tempo e memoria) ai programmi e manipola i files e le comunicazioni come.

Convenzioni sui nomi dei filesUna directory è solo un tipo speciale di file. Le regole e le convenzioni sui nomi dei files si applicano alle directories.

Nel dare nomi ai files  i caratteri con significato speciale come / (slash) vanno evitati. Il modo più sicuro di dare un nome ad un file e' di usare solo caratteri alfanumerici, cioè lettere e numeri insieme al carattere di underscore (_) ed al punto (.). Convenzionalmente i nomi dei files terminano con un punto seguito da un gruppo di lettere che indica il contenuto del file. Per esempio i files che terminano per  .c (es: prog1.c) corrispondono convenzionalmente a sorgenti di programmi scritti in C . Attenzione:  anche se la scelta è convenzionale, talvolta alcune applicazioni richiedono esplicitamente un certo suffisso. Inoltre, alcune applicazioni danno lo stesso nome ai files che generano.  Per esempio alcuni compilatori, a meno di una definizione esplicita, producono files binari eseguibili di nome  a.out. In tal caso è altamente consigliabile cambiare nome al file in modo da mantener traccia del contenuto attraverso il nome.

Page 24: Il kernel Il kernel di LINUX è il cuore del sistema operativo: alloca risorse (tempo e memoria) ai programmi e manipola i files e le comunicazioni come.

Aiuto

man comando (manuale)

Si cercano informazioni nei manuali on-line  In particolare si può ottenere informazione circa le opzioni possibili per un particolare

comando e i loro effetti.

Per esempio, per trovare come usare il comando  wc (word count) :       man wc

apropos comandoSe non si e' sicuri circa il nome di un comando

        apropos keyword

darà la lista dei comandi con  keyword nella descrizione. Provare ad esempio

    apropos copy

Page 25: Il kernel Il kernel di LINUX è il cuore del sistema operativo: alloca risorse (tempo e memoria) ai programmi e manipola i files e le comunicazioni come.

Un comando utile (for)

Esegue una serie di operazioni su di un insieme di file.

for  nome   do elenco comandi  done

Page 26: Il kernel Il kernel di LINUX è il cuore del sistema operativo: alloca risorse (tempo e memoria) ai programmi e manipola i files e le comunicazioni come.

df -kIl comando df  informa sulla quantità libera di spazio e fornisce informazioni in Kilobytes dello spazio occupato e libero del file

system in cui siamo. Un esempio di un tipico output di df  è

Device    Total KB   free   %used   iused   %iused   Mounted on /dev/hd0     19368   9976    48%     4714     5%      / /dev/hd1     24212   4808    80%     5031    19%      /usr /dev/hd2      9744   9352     4%     1900     4%      /usr/applic

du -kIl comando du  e' utile per trovare quale directory ha  i files con

la maggior occupazione di spazio disco. Utile se si e' oltre la quota e si vuol trovare quale directory contiene i files più

ingombranti.      

Page 27: Il kernel Il kernel di LINUX è il cuore del sistema operativo: alloca risorse (tempo e memoria) ai programmi e manipola i files e le comunicazioni come.

tar

Il comando tar manipola archivi scrivendo o riscrivendo files da o in un archivio.

I flags più importanti sono: -c    crea (se esiste sovrascrive!)

-x    estrae (nello stesso ordine di creazione) -t    legge il contenuto e lo scrive sullo schermo

-v    verifica l'operazione -f    specifica il nome dell'archivio