repead.ru 1



LABORATORIO DI SISTEMI - APPUNTI LINUX PARTE 1 -

CLASSE 3BI – A.S. 2008/09

(PRINCIPALI COMANDI LINUX SU FILES E DIRECTORIES)

Unità di misura


Per la capacita’

Per comodità di calcolo i multipli del byte vengono generalmente arrotondati a potenze di 2 (benché questo sia formalmente sbagliato), invece che di 10; tale ambiguità ha portato l'IEC a definire nuovi prefissi per multipli binari; tali valori non sono comunque entrati nell'uso comune.

Questa ambiguità viene sfruttata a fini commerciali dai produttori di memorie, utilizzando i "corretti ma poco in uso" multipli decimali, in modo tale da far figurare quantità maggiori: ad esempio, un hard disk da 80 GB nominali potrà effettivamente contenere solo 74,5 GiB.


Multipli del byte

Prefissi SI

 

Prefissi binari

Nome

Simbolo

Multiplo

Nome

Simbolo

Multiplo

kilobyte

kB


103

kibibyte

KiB

210

megabyte

MB

106

mebibyte

MiB

220

gigabyte

GB

109

gibibyte

GiB

230

terabyte

TB

1012

tebibyte

TiB

240

petabyte

PB


1015

pebibyte

PiB

250

exabyte

EB

1018

exbibyte

EiB

260

zettabyte

ZB

1021

zebibyte

ZiB

270

yottabyte

YB

1024

yobibyte

YiB

280



Per il tempo:


10−12

1 picosecondo

1 ps, 10 ps, 100 ps

10-9

1 nanosecondo

1 ns, 10 ns, 100 ns

10−6

1 microsecondo

1 µs, 10 µs, 100 µs


10−3

1 millisecondo

1 ms, 10 ms, 100 ms

100

1 secondo

1 s, 10 s, 100 s



Documentazione



Per accedere alla documentazione dei comandi di Linux si utilizza man

man
nome

man
sezione nome

man formatta e visualizza le eventuali pagine del manuale che riguardano nome. nome può essere il nome di un comando, il nome di una funzione, il nome di un file di configurazione (solo pochi sono documentati) o altro.

Se sezione viene specificata, man cerca la documentazione soltanto in quella sezione (utile se nome è presente in più sezioni)

Esempi

man cat

visualizza la pagina di manuale di cat


man 3 printf

cerca la documentazione per printf nella sezione 3 .

N.B. L’esecuzione del comando man viene interrotta con ‘q’.

ALTRE POSSIBILITA’ PER OTTENERE INDICAZIONI SU UN COMANDO SONO:

help nome_comando

info nome_comando

nome_comando - - help

whatis nome_comando

Comandi Linux per la gestione di files e directory

cd

Si utilizza per spostarsi da una dir all’altra. Se non ci sono parametri, ci si sposta da qualsiasi punto dell’albero delle dir nella home dir

cd dir1/dir2

Ci si sposta nella directory dir2 che è una sottodirectory della directory dir1. La dir1 è una sottocartella della dir corrente

cd ..

Serve a spostarsi nella directory padre (per salire di un livello)

cd ../..

Serve a salire di due livelli nell’albero delle directory a partire dalla dir corrente

cd /

Ci si sposta nella directory radice

mkdir –p path/dir

Crea la directory di nome dir e tutte le directory non ancora esistenti contenute in path

mkdir dir

Crea la directory di nome dir


mkdir /dir

Crea la directory di nome dir sotto la directory principale (radice)

pwd

comunica quale sia la dir corrente (print working directory)

file dir

mostra il contenuto della directory dir e ne specifica il tipo di files

du dir

Mostra, in numero di blocchi, lo spazio occupato su disco dalla directory dir: ogni blocco sono 1024 byte

du -ha dir

mostra lo spazio occupato su disco dalla directory dir e da ciascun suo file o sottodirectory in formato “human”

tree dir

mostra il contenuto della directory dir in modo organizzato ad albero

rm -r dir

rimuove la directory dir e il suo contenuto

rmdir dir

rimuove la directory dir solo se e' vuota

touch miofile

crea il file di nome "miofile" nella dir corrente

rm miofile

cancella il file miofile


cat miofile

mostra il contenuto del file miofile

more miofile

mostra il contenuto del file miofile

less miofile

mostra il contenuto del file miofile

ls | more

mostra il contenuto della directory corrente mettendo le pause di fine pagina

ls –a

mostra il contenuto della directory corrente compresi i files nascosti

ls –l

mostra il contenuto della directory corrente con: tipo, permessi, numero hard link, proprietario, gruppo, occupazione in byte, data e ora dell’ultima modifica.

TIPO E PERMESSI (descritti dai primi 10 caratteri a sinistra dell’output del comando):

drwxr-xr-x

  • Il primo carattere (o meglio byte) da destra puo valere:

d indicando che è una directory

- indicando che è un file

l indicando che è un link (simbolico)

b per un dispositivo speciale a blocchi

c per un dispositivo speciale a caratteri

p per un FIFO

s per un socket
  • Gli altri 9 caratteri che seguono, indicano i permessi assegnati su quel file rispettivamente:


i primi tre indicano i permessi dell'utente proprietario (user) di quel file

i successivi tre indicano i permessi assegnati al gruppo (group) (ossia tutti gli utenti appartenenti a quel gruppo)

gli ultimi 3 caratteri indicano i permessi assegnati a tutti gli altri utenti (others)

I permessi per ogni soggetto (user, group, others) possono essere di tre tipi:

r per indicare la lettura (in caso di directory visualizzazione del contenuto)

w per indicare la modifica o eliminazione

x per indicare il permesso di eseguire il file (in caso di directory attraversamento)

La presenza del segno - indica l'assenza di quel permesso


ls dir[1-4]

corrisponde a "ls dir1 dir2 dir3 dir4"

ls dir*

mostra il contenuto di tutte le directory che iniziano con la parola dir

cp file1 dir

copia file1 nella directory dir (file1 e dir sono nella dir corrente)

cp file1 file2

copia file1 in file2 nella dir corrente

cp –r dir1 dir2

Copia ricorsivamente il contenuto di dir1 in dir2

cp file1 /dir*

copia file1 nelle directory, a partire dalla radice, che iniziano con il nome dir

mv file1 file2


muove file1 in file2 (puo' essere usato per rinominare file1 con file2)

mv file1 dir

muove file1 nella directory dir

echo file*

mostra tutti i files che iniziano con il nome file

cat file1 file2 > file3

concatena file1 e file2 e li copia in file3 uno di seguito all’altro

chmod +r miofile

aggiunge il permesso in lettura al file miofile (altri valori w=scrittura x=esecuzione)

chmod -r miofile

toglie il permesso in lettura al file miofile (altri valori w x)

chmod u=+rwx,go=+rx miofile

Assegna al proprietario tutti i permessi, al gruppo e agli altri solo il permesso di lettura ed esecuzione. Utilizzando il segno ‘+’ i diritti vengono assegnati, utilizzando il segno ‘-‘ i diritti vengono tolti

umask

Mostra la maschera di default dei permessi. Viene visualizzata una terna di numeri ottali. corrispondete ciascuno alla assenza o alla presenza dei bit di permesso di proprietario, gruppo, altri. Un bit posto ad 1 nella maschera, corrisponde ad una assenza di permesso: 022 significa che per default il proprietario ha tutti i permessi (binario 000), il gruppo e gli altri hanno solo il permesso di lettura ed esecuzione (binario 010).


umask -S

visualizza la maschera dei permessi di default nel formato rwxrwxrwx

find /dir -name miofile -print

cerca il file di nome miofile a partire dalla directory dir contenuta nella root

find ./ -name “mio*”

cerca nella dir corrente tutti i file che iniziano con “mio”

find /dir -name \*file -print

cerca i file che terminano con la parola file a partire dalla directory dir contenuta nella root

grep parola /dir/*

cerca in tutti i file della directory dir (collocata nella radice) la parola “parola”



Differenza tra partizione e file system



Occorre distinguere tra

  • PARTIZIONE che e' una porzione di disco, quindi il supporto fisico

e

  • FILESYSTEM che e' una struttura per la memorizzazione dei file su disco in forma di albero organizzato in directories, sottodir, files e devices. Ad ogni partizione, viene associato un filesystem.


Creare un link (COLLEGAMENTO)

In GNU/Linux (e non solo) esistono due tipologie di link:


  • Link simbolico (soft link): è quello che siamo soliti incontrare anche in ambiente windows, cioe’ e’ un percorso
  • LINK FISICO (hard link): è collegamento che associa il link al contenuto FISICO (inode) del file collegato. E’ come indicare il medesimo spazio di memoria con due nomi: il nome del file e il nome del link.



Per creare un link simbolico si utilizza il comando ln con l'opzione –s :

ln -s file nome_collegamento


Per creare un link fisico si utilizza il comando ln :

ln file nome_link


Un collegamento simbolico è un file contenente un percorso relativo od assoluto al file o directory a cui fa riferimento; questo permette di creare collegamenti non solo all'interno della stessa partizione, ma anche da un file system ad un altro. Se file dovesse essere rimosso, il link nome_link non consente piu’ di accedere al file (link spezzato).


Un collegamento fisico fa riferimento ai dati (il contenuto) di un file, e in ciò si differenzia dai collegamenti simbolici e altri tipi di collegamenti che fanno riferimento a nomi di file. Un'altra differenza è che il collegamento fisico deve far parte dello stesso file system in cui si trovano i dati a cui fa riferimento, e che un collegamento fisico non può restare orfano (eliminando il file a cui fa riferimento il link fisico con rm file, i dati rimangono comunque accessibili dal link).


caratteri jolly:

nome* significa "tutto cio' (files e/o directory) che comincia con la parola nome"

nome[1-4] significa "nome1 nome2 nome3 nome4"

nome?xx significa "tutti i files o directory che iniziano per nome terminano per xx e hanno nel mezzo un qualsiasi carattere"

RIDIREZIONE DELL’OUTPUT E DELL’INPUT – PIPING DI COMANDI:

comando > output invia l'output del comando nel file o periferica output

comando >> output concatena in append l'output del comando nel file o periferica output (standard output)

comando < output prende l'input del comando dal file o periferica output (standard input)

comando 2> invia gli errori nel file o periferica output (standard error)


comando1 | comando2 concatena l'output di comando1 con l'input di comando2 (il simbolo ‘|’ si chiama “pipe”).

L’operazione di piping indica che l’output di comando1 diventa l’input di comado2.


Gestione dischi e supporti magnetici

Montare una periferica in Linux/Unix significa rendere accessibile la periferica come se fosse un file o un file system (parte di un albero di directory). Si ottiene cio’ mappando, mediante il comando mount, la periferica stessa su una porzione dell’albero delle directory del sistema.

Dopo tale operazione, l’accesso alla periferica avviene come se fosse un file.

I dischi vanno prima "montati" in una directory, quindi si possono usare accedendo alla directory sulla quale sono stati montati, prima di rimuoverli vanno "smontati".

Montare: mount -t tipo_di_ file_system dispositivo directory_montaggio

N.B. la directory di montaggio deve gia’ esistere (se non dovesse esistere, basta crearla. Esempio: mkdir /media/usb )

Esempio:


  • montaggio di una flash-memory riconosciuta, al momento dell’inserimento, come periferica sdb1 nel file system /media/usb

mount –t vfat sdb1 /media/usb

  • Visualizzare il contenuto della flash-memory appena montata:

ls -l /media/usb

  • Smontare: umount directory_montaggio

umount /media /usb

Non tutti gli utenti hanno i permessi per creare la dir nel mount-point scelto, o per effettuare l’operazione di mount.

Altri esempi di directory di montaggio abituali sono:

/cdrom per il dispositivo CDROM

/floppy per il dispositivo floppy

/mnt per file system o dispositivi di rete

I nomi dei dispositivi sono:

/dev/fd0


il floppy A:

/dev/fd0u11440

il floppy A: con l'indicazione del formato (al posto di "u" vi puo' essere "H")

/dev/hda

prima unita' master IDE/EIDE (canale primario)

/dev/hda1

prima partizione della prima unita' master (di solito C:)

/dev/hda2

seconda partizione della prima unita' master

/dev/hdb

prima unita' slave (di solito il cdrom) (canale primario)

/dev/hdb1

prima partizione della prima unita' slave

/dev/hdc

seconda unita' master (di solito un eventuale secondo HD) (canale secondario)

/dev/hdc1

prima partizione della seconda unita' master

/dev/hdd

seconda unita' slave IDE/EIDE (canale secondario)

/dev/hdd1

prima partizione della seconda unita' slave IDE/EIDE

/dev/sda

prima unita' SCSI o emulata SCSI

/dev/sda1

prima partizione prima unita' SCSI

/dev/lp0


prima porta parallela (di solito la stampante)

/dev/lp1

seconda porta parallela

/dev/cua0

prima porta seriale in output

/dev/cua1

seconda porta seriale (di solito un eventuale modem) in output

/dev/ttyS0

prima porta seriale (di solito il mouse) in input

/dev/ttyS1

seconda porta seriale in input

/dev/tty1

prima console virtuale (quella da cui impartite i comandi). Si puo' passare a tale console con i tasti[Alt+F1]

/dev/tty2

seconda console virtuale (quella da cui impartite i comandi). Si puo' passare a tale console con i tasti[Alt+F2]

/dev/tty3

terza console virtuale (quella da cui impartite i comandi). Si puo' passare a tale console con i tasti[Alt+F3]

/dev/tty4

quarta console virtuale (quella da cui impartite i comandi). Si puo' passare a tale console con i tasti[Alt+F4]

/dev/null

il device nullo

Alcuni esempi di tipi di file system: msdos, iso9660, minix, ext2, vfat.

N.B. per passare alle diverse console da modalita’ grafica utilizzare ctrl-alt-Fn


L’elenco dei file system montati all’avvio del sistema è contenuto nel file /etc/fstab

L’elenco del file system attualmente montati sul sistema è contenuto nel file /etc/mtab.

Spesso può non essere necessario indicare il tipo di filesytem in quanto il sistema è in grado di riconoscerlo da solo. In realtà il sistema li riconosce utilizzando i tipi indicati nel file di configurazione /etc/fstab.

mount -t vfat /dev/hda1 /mnt

se avete sulla prima partizione Win95-FAT16, monta il file system nella directory /mnt

mount /dev/hdb /cdrom

monta il cdrom nella directory cdrom

mount /dev/fd0 /floppy

monta il floppy A: in /floppy

umount /cdrom

smonta il cdrom

df

Utilizzo dello spazio su disco da parte dei vari file system: numero dei blocchi us ati e liberi per ciascuna partizione del disco

df -h

Visualizza l’utilizzo dello spazio su disco da parte dei vari file system in un formato facilmente comprensibile


Comandi essenziali per l'amministratore di sistema e l'utente


whoami

Comunica l'username (nome dell’utente)


who

Visualizza il nome degli utenti collegati al sistema

logname

Comunica il nome dell’utente con cui si è effettuato il login

passwd user

cambia la password dell'utente user

su -

permette di impersonare l’utente di root


su [account utente]


permette di impersonate un altro utente


users

comunica gli utenti collegati


Altri Vari

cal

Visualizza il calendario del mese corrente corrente

cal 2009

Visualizza il calendario dell’anno 2009

cal 12 2009

Visualizza il calendario del mese di dicembre dell’anno 2009

alias

Si utilizza per abbreviare comandi o per protezione dall’utilizzo non corretto di comandi “pericolosi”. (esempio: alias ls = ‘ls - - color’ ridefinisce il comado ls in modo che nel suo output risultino di colore diverso file, directory, link ecc.).


In generale : alias nome=valore


file nome_oggetto

Visualizza il tipo dell’oggetto nome_oggetto (es. directory, file ASCII, link simbolico, file eseguibile, script di shell ...)

date

comunica la data e ora corrente