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 ($).
Su LINUX tutto appare come un file o un processo.
Processo
Un 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.
File
Un file è una collezione di dati. Può essere creato dall' utente usando text
editors, compilatori etc.
La struttura delle directory
Tutti 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 (/).
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.
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
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
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.
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
Individuazione univoca dei file
Andate nella home directory e date i comandi
ls 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 ~/..
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
Edit layer
i : inizia a scrivere a inizio riga
a : inizia a scrivere a fine riga
o : crea una nuova riga sotto
O : crea una nuova riga sopra
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>
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.
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.txt
Aprire 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
Cancellare file e directory
rm nomefile
rmdir nomedir
(remove),
(remove directory)
Il comando rm cancella (rimuove) un file. Per cancellare le directories si
usa il comando rmdir (purchè la directory sia vuota).
Permessi di accesso
Ad 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
Directory o file
Altri
Gruppo
.
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
Possessore
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.
Mostrare su schermo il contenuto dei files
clear
(clear screen)
cat file
(concatenate)
Mostra il contenuto di un file sullo schermo.
more file
Scrive 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.
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
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 ).
SCHERMO
Standard input
Standard output
COMANDO
Input ridirezionato
Output ridirezionato
FILE
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 > list1
Il 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
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
Ridirezione dell' input
Il 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
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?
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
Convenzioni sui nomi dei files
Una 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.
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 comando
Se 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
Un comando utile (for)
Esegue una serie di operazioni su di un insieme di file.
for nome
do elenco comandi done
df -k
Il 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
/dev/hd0
/dev/hd1
/dev/hd2
ic
Total KB
19368
24212
9744
free
9976
4808
9352
%used
48%
80%
4%
iused
4714
5031
1900
%iused
5%
19%
4%
Mounted on
/
/usr
/usr/appl
du -k
Il 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.
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
Scarica

preslinux