LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip....

31
1 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica LINUX LINUX a livello di utente a livello di utente Questi lucidi sono stati prodotti sulla base dei seguenti riferimenti: Corso UNIX di Roberto Polillo dell’Università di Milano Corso Unix di Marco Liverani dell’Università di Roma Corso di Laboratorio di sistemi Operativi – Dip. Informatica dell’Università di Bari a cura di De Carolis, Bianchi. Corso di Linux di Paolo Torroni LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Shell Interfaccia di alto livello tra utente e SO • Processore comandi evoluto: •interpreta e mette in esecuzione comandi da: • standard input • file comandi • linguaggio comandi con elevato potere espressivo - Negli anni '60: Dennis Ritchie e Ken Thompson di AT&T UNIXTM: ? creazione di uno strumento con cui gli utenti potessero interagire con questo nuovo sistema. - Altri S.O. utilizzavano interpreti di comandi. - Nacque la Bourne shell (nota semplicemente come sh), creata da S.R. Bourne. - Sviluppate diverse shell, come la C shell (csh) e la Korn shell (ksh). Bourne Again Shell o bash: per saperne di più sulla bash, leggete la relativa pagina man, che comparirà digitando man bash. bash è installata di default con Red Hat Linux.

Transcript of LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip....

Page 1: LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Accesso a Linux: login e password Il sistema (in realtà un programma

1

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

LINUXLINUX

a livello di utentea livello di utente

Questi lucidi sono stati prodotti sulla base dei seguenti riferimenti:• Corso UNIX di Roberto Polillo dell’Università di Milano• Corso Unix di Marco Liverani dell’Università di Roma• Corso di Laboratorio di sistemi Operativi – Dip. Informatica

dell’Università di Bari a cura di De Carolis, Bianchi.• Corso di Linux di Paolo Torroni

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

ShellInterfaccia di alto livello tra utente e SO

• Processore comandi evoluto: •interpreta e mette in esecuzione comandi da:

• standard input• file comandi

• linguaggio comandi con elevato potere espressivo

- Negli anni '60: Dennis Ritchie e Ken Thompson di AT&T ⇒UNIXTM: ? creazione di uno strumento con cui gli utenti potessero interagire con questo nuovo sistema. - Altri S.O. utilizzavano interpreti di comandi. - Nacque la Bourne shell (nota semplicemente come sh), creata da S.R. Bourne. - Sviluppate diverse shell, come la C shell (csh) e la Korn shell (ksh).

Bourne Again Shell o bash: per saperne di più sulla bash, leggete la relativa pagina man, che comparirà digitando man bash.bash è installata di default con Red Hat Linux.

Page 2: LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Accesso a Linux: login e password Il sistema (in realtà un programma

2

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Shell Unix - Linuxaccesso al sistema

• Un utente può attivare piu’ shell, anche diverse: tcsh, csh, bash,...• Shell di login (shellparticolare)

• fornisce un accesso al sistema a ciascun utente

La shell è rappresentata da un processo assegnato

all’utente

INIT

Shell(Paolo)

Shell(Anna)

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Accesso a Linux: login e passwordPrerequisiti

•Un "account" utente per l'accesso a tale sistema •La "password" per tale "account"

Entrare nel sistema (login) L'accesso ad un sistema Linux richiede il "login" : l'operazione con la quale si

specifica al sistema il proprio "account" utente e la propria "password".

Attenzione: il "case" delle lettere ha importanza. Assicurative che il "led" della tastiera con la dicitura Caps Lock sia spento prima di digitare i vostri dati.

Login: nomeutentepassword: *********

Prompt[nomeutente@nomepc nome]$ _ se utente normale

[root@nomepc nome]# _ se utente root

Prompt personalizzabile attraverso la variabile d’ambiente PS1

Page 3: LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Accesso a Linux: login e password Il sistema (in realtà un programma

3

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Accesso a Linux: login e passwordIl sistema (in realtà un programma che si chiama login) controlla che esista un utente con il nome dato username e che la password corrisponda a quella registrata nel file /etc/passwdA questo punto, avete una "identità” o username, a cui corrisponde uno userid (o uid) numerico e appartenete ad alcuni gruppi, a cui corrispondono dei groupid (o gid) numerici. Nota: Questa "identità" spesso viene chiamata "account"

<login>do{

<ricevi comando dal file di input><interpreta il comando><esegui comando>

}while (!EOF);<logout>

INITesegue GETTY

GETTY visualizza “Login:” ed attende un input utente

LOGINEffettua il riconoscimento utente. Esegue file di configurazione “profile”

La SHELL prende il controllo

SHELL termina INIT e, si risveglia e fa partire un altro GETTY

Password correttaPassword non corretta

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Shell di login• La shell di login viene attivata automaticamente all'atto di login. • Interpreta prima di tutto uno script uguale per tutti gli utenti e scritto dal sistemista: /etc/profile. • Successivamente esegue uno script definito dall'utente, nella propria home directory. Il nome di questo script varia a seconda del tipo di shell. Per la bash, esegue solo il primo script fra: ~/.bash_profile, ~/.bash_login, ~/.profile

• L'utente puo' quindi "personalizzare" il suo ambiente di lavoro usando lo script di login. • Inoltre, anche alla sua attivazione la shell esegue automaticamente lo script ~/.bashrc , sempre con operazione source.• All'uscita della sessione viene eseguito lo script ~/.bash_logout.

Page 4: LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Accesso a Linux: login e password Il sistema (in realtà un programma

4

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Shell

Sistema multiutente ⇒ problemi di privacy(possibili interferenze): necessità di proteggere / nascondere informazione

Concetto di gruppo (es. staff, users, root, ...): possibilità di lavorare sugli stessi documenti;

Ogni utente appartiene a un gruppo ma può far parte anche di altri a seconda delle esigenze e configurazioni:

Per iniziare una sessione bisogna essere in possesso di una combinazione:·username (es. soa01001, soa01002, ...)·password (es. dfh@2#q, **a890, aPP&x., ...) ;

nota: maiuscole / minuscole sono caratteri diversi!! (la password **a890 è diversa da **A890).

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Livelli di esecuzione (runlevels)

• 0 – halt• 1 – single-user mode• 2 – multi-user senza servizi di rete (NFS)• 3 – multi-user• 4 – non usato• 5 – multi-user con interfaccia grafica (X11)• 6 – reboot

• “/etc/inittab” è il file di configurazione dei run level• “/etc/rc.d/” contiene gli script di inizializzazione per ciascun livello

Ogni runlevel è una particolare configurazione del kernel in cui certe cosesono permesse ed altre no.

Page 5: LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Accesso a Linux: login e password Il sistema (in realtà un programma

5

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

• Per default l'installazione definisce il livello 3 come initdefault: • alla partenza il sistema operativo e' in multiuser mode ed attiva tutti i

servizi di rete previsti. • Non e' attivo l'X-server (evocabile con il comando 'startx') previsto con

il livello 5.• Per definire un diverso initdefault e' necessario modificare il file

/etc/inittab. Per esempio, modificando il record id:3:initdefault: in id:5:initdefault:al prossimo reboot il sistema attivera' automaticamente anchel'X-server.

• Il processo di BOOT carica e inizializza tutti i servizi (daemon)• INIT legge quali cose fare da /etc/inittab dove e' segnato il runlevel

iniziale (solitamente il 3), e cosa fare per ogni runlevel.• Esiste la directory /etc/rc.d che contiene tutti gli script opportuni,

divisi per runlevel.• Chiaramente un certo daemon puo' essere presente in piu‘ runlevel

(tipicamente nel 2 e nel 3).

Livelli di esecuzione (runlevels)

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

"runlevel" di Linux.Il runlevel 3 e' quello che vi permette di avviare il sistema in modalita' testo (ovvero vi verra' offerta una semplice schermata di login).

Il runlevel 5 invece e' quello grafico, che avvia il server X subito.

Le due "modalita'" non sono esclusive, si può sempre avviare il server grafico dalla modalita' console oppure passare a una semplice console da Kde o Gnome.

Se si entra in LINUX in modalita' console (da LILO: linux 3), dopo il login scrivete startx per avviare il server X.

Se invece entrate in modalita' grafica (o di default oppure da LILO: linux 5) si può:

a) passare alle console di login premendo CTRL+ALT+F1 (fino a F6), per tornare alla grafica CTRL+ALT+F7.

b) aprire una shell di root all'interno dell'ambiente grafico.basta clickare sull'icona che assomiglia a uno schermo nero con davanti una conchiglia (shell) nel Panel di kde.A questo punto avrete una shell dell'utente con cui siete entrati in kde.

Page 6: LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Accesso a Linux: login e password Il sistema (in realtà un programma

6

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Utenti - GruppiUsername: a cui corrisponde un nome identificativo dell’account (massimo 8 caratteri)

userid (o uid): numero intero univoco: un database separato fuori del kernelcollega username a uid (file etc/passwd) . Se due o più utenti hanno lo stesso uidè come se fosse lo stesso utente ma con due nomi diversi.

gruppi, a cui corrispondono dei groupid (o gid) numerici:

Un gruppo permette distinzione tra gli utenti. Ogni utente deve risiedere in un gruppo. Se esso non risiede in un gruppo particolare, lo stesso utente formerà un gruppo a sé stante, di cui egli è il solo membro.

Tramite i gruppi è possibile definire delle azioni che sono concesse a più utenti facenti parte di uno stesso gruppo.

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

/etc/passwdContiene informazioni sugli utenti definitiSchema:username:password:UID :GID:‘comment’: home directory : login command

/etc/shadowContiene informazioni sulle password crittografate degli utenti definitischema: username : encrypted password : last change of password : minimum days that the password should exist withoutchanging : maximum days of the password's existance : days until the user gets a message that his password will expire : number of days that the account will stay out of order before it can be totally deleted : exactdate of password's expiration

/etc/groupcontiene informazioni sui gruppi definitischema: group name : password : GID : users of the group

Page 7: LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Accesso a Linux: login e password Il sistema (in realtà un programma

7

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Shell: utilizzo delle pagine man

man spazio nome del comando Es: man su, compare la pagina man delcomando su.

ScorrereAvanti = Barra spaziatrice;

Scorrere Indietro=premete b.

Uscire =il tasto q.

Uno dei modi più semplici per scoprire come utilizzare molti comandi e applicazioni è tramite il comando man (abbreviazione di "manuale”). In un formato estremamente condensato, le pagine man forniscono il riassunto delle funzionalità del comando, le opzioni disponibili e la sintassi utilizzata per eseguire il comando.

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Shell: stampa delle pagine man

Es: per stampare una pagina man per man: man man | col -b | lpr

comandoparametro pipe filtro comando di stampaNel dettaglio: il comando invia l'output della pagina man attraverso il filtro di col, che formatta adeguatamente l'output per la stampante rimuovendo i caratteri di formattazione video.

Questo metodo è chiamato piping. Uno dei modi più semplici per scoprire come utilizzare molti comandi e

applicazioni è tramite il comando man (abbreviazione di "manuale”)In un formato estremamente condensato, le pagine man forniscono il riassunto delle funzionalità del comando, le opzioni disponibili e la sintassi utilizzata per eseguire il comando.

Page 8: LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Accesso a Linux: login e password Il sistema (in realtà un programma

8

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Formato ComandiNome comando -opzioni argomenti

Esempio: ls -l temp.txt

Sintassi:• se un opzione/argomento può essere omesso si mette

tra [opzione]• se due opzioni/argomento sono mutuamente esclusivi,

vengono separati da | .. Ad es: arg1 | arg2• quando un arg può essere ripetuto n volte si

aggiungono i puntini arg...

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Comandi di controllo dell’ambiente

• Logout per uscire da una login• Passwd per cambiare password dell’utente• Stty per impostare le opzioni per il terminale• Finger per visualizzare le informazioni sugli utenti• Ps per visualizzare i processi del sistema• Env per visualizzare i parametri di configurazione

dell’ambiente• Set per “settare” i parametri di configurazione• Alias per definire abbreviazioni o nuovi nomi di un

comando, • History per visualizzare gli ultimi comandi digitati.

Page 9: LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Accesso a Linux: login e password Il sistema (in realtà un programma

9

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Shellpasswd cambia la password dell'utente correnteps visualizza i processi del sistemaes:ps -x Process Identifier terminale stato del processo tempo di CPU nome comando

PID TT STAT TIME COMMAND7032 p1 S 0:00 -csh7120 p1 D 0:00 find/-name test7231 p1 R 0:00 ps

su lancia una shell con i privilegi dell'utente indicato.Es: su rootQuesto comando lancia una shell con i privilegi di superuser.

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Shell: variabili d’ambienteVisualizzare le variabili di ambiente digitando al prompt della shell:

env

Viene visualizzato elenco di variabili di ambiente della bash. Ognuna di queste variabili contribuisce a personalizzare l'ambiente.

Ad es. PATH definisce ciò che viene chiamato il percorso di default.

Per il vostro account la variabile path può somigliare a : PATH=/usr/local/bin:/usr/X11R6/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/pippo/bin

…ed indica dove il sistema può trovare i programmi.

Page 10: LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Accesso a Linux: login e password Il sistema (in realtà un programma

10

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

HistoryRipetizione veloce su linea di comandoQuando si vuole ripetere un comando che si è digitato prima, è sufficiente premere il tasto con la freccetta in su. In questa maniera si accede alla historydei comandi.Se l'history dei comandi digitati è troppo lunga e/o si ricordano le prime lettere del comando, si può richiamarlo direttamente anteponendo ad esso il punto esclamativo.Ad esempio se si è digitato il comando:% ls -lR| grep fortune |sort +4nper trovare i file "fortune" ordinati per grandezza e lo si vuole richiamare, è sufficiente dare il comando:% !lsoppure% !l

Questa funzionalità é particolarmente utile quando si devono riscrivere comandi molto lunghi. In pratica quando gli si passa qualcosa del tipo "!nome" la shell interpreta il comando "Esegui l'ultimo comando digitato, che si trova nella history, che inizia con nome".

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Se poi il problema è la cattiva digitazione di un comando (sempre sulla linea di comando), è possibile correggere l'errore senza doverlo riscrivere.Ad esempio :

% ls -lR| grep fortune |sort +4ncon il comando '^ra^re' viene sostituita la stringa 'ra' con 're' e viene eseguito automaticamente il comando risultante.

% ^ra^rels -lR| grep fortune |sort +4n./fortune-0.2/debian:./fortune-0.2:./fortune.it-1.51:-rw-r--r-- 1 8044 users 429 Oct 26 1998 fortune.lsm-rw-r--r-- 1 8044 users 514 Oct 24 1998 fortune.6-rw-r--r-- 1 501 150 1733 Jan 9 1998 fortune.it-1.51.lsmdrwxr-xr-x 2 501 150 4096 Jan 9 1998 fortune.it-1.51drwxr-xr-x 3 8044 users 4096 Jul 16 17:05 fortune-0.2-rw-r--r-- 1 8044 users 5179 Oct 25 1998 fortune.c-rwxr-xr-x 1 root root 10080 Jul 16 17:05 fortune

Page 11: LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Accesso a Linux: login e password Il sistema (in realtà un programma

11

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Shelllastlast indica gli ultimi accessi al sistema.es: last -n 20 Mostra gli ultimi 20 accessi es: last -x -n20Mostra gli ultimi 20 Shutdown e cambi di run-level

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

System level user command

• Who visualizza chi è “loggato” sul sistema in un dato momento• Whatis cmd descrive brevemente il comando specificato come parametro• Which cmd fornisce informazione sull’alias del comando specificato• Whereis cmd fornisce il path del comando specificato• Date visualizza la data e l’ora corrente di sistema• Cal visualizza il calendario• Bc attiva una calcolatrice con le operazioni aritmetiche base• Wc file conta le linee, le parole ed i caratteri di un file• Spell segnala errori di spelling• Lpr file invia allo spool di stampa un file• Lpq mostra lo stato della coda di stampa• Lprm job rimuove job dalla coda di stampa

Page 12: LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Accesso a Linux: login e password Il sistema (in realtà un programma

12

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Shelldate

date imposta la data e l'ora del sistemaes: date Eseguendo semplicemente il comando date, riporta la data e l'ora corrente. es: date -s '02 May 2000 10:55:10' Questo esempio setta la data al 2 Maggio 2000, e l'ora alle 10:55:10, omettendo l'ora si setta automaticamente all'ora 00:00:00 es: date --date '20 days ago' Stampa la data di 20 giorni fa es: date --date '3 months ago' Stampa la data equivalente al giorno corrente di 3 mesi fa. es: date --date '1 month 1 day'Stampa la data corrispondente a quella fra un mese ed un giorno.es: date --date '1 month 1 day ago' Stampa la data di un mese ed un giorno fa. es: date +'%T' Stampa l'ora corrente nel formato ore:minuti:secondi

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Comandiesempi di comandinadja@std05a:~$ whoami

nadja

nadja@std05a:~$ dateFri Apr 20 12:48:24 CEST 2001

nadja@std05a:~$ whoroot tty1 Apr 9 14:02root ttyp1 Apr 12 17:11 (:0.0)nadja ttyp2 Apr 17 12:21 (gaia

Page 13: LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Accesso a Linux: login e password Il sistema (in realtà un programma

13

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

pwd: determinare la directory in cui si trova l’utente

Il comando pwd significa print working directory.

Quando si digita pwd, si chiede al sistema Linux la posizione corrente. Il sistema risponde "mostrando" sul monitor la directory in cui ci si trova, conosciuto anche come standard output.

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Comandi di base per il file system

• ls elenca file• cd cambia directory corrente• pwd mostra la directory corrente• mkdir crea directory• cp copia• rm rimuovi• mv sposta• chown cambia il proprietario • chmod cambia i permessi di accesso• ln crea un collegamento• cat mostra il contenuto di un file

Page 14: LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Accesso a Linux: login e password Il sistema (in realtà un programma

14

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Uso dei metacaratteriI metacaratteri servono a specificare un pattern per identificare un insieme dinomi di file già esistenti. La shell provvede a sostituire i metacaratteri con i nomi di file.

· * sta per qualsiasi sequenza (anche vuota) di caratteri: es. *.java, file.*· ? sta per esattamente un carattere: es. file.do?· [ ] specificano una lista o un intervallo di caratteri

(es. [a-c], [A-Za-z]: file.do[ct])· gli apici possono essere usati per indicare che eventuali metacaratteri non

vanno espansiEsempio:

ptorroni@lab3-linux:~$ lsXrootenv.0 f12.txt hw temp vi.txt f1.txt f2.txt p.c temp.c

ptorroni@lab3-linux:~$ ls f?.txtf1.txt f2.txt

ptorroni@lab3-linux:~$ ls f*.txtf1.txt f12.txt f2.txt

ptorroni@lab3-linux:~$ ls [f-t]*.*f1.txt f12.txt f2.txt p.c temp.c

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

lsSintassi (sempl): ls [-opzioni…] [file…]opzioni:- l (long format): per ogni file una linea che contiene i diritti, il numero di link, il proprietario del file, il gruppo del proprietario, l’occupazione di disco (blocchi), la data e l’ora dell’ultima modifica o dell’ultimo accesso, e il nome- t (time): la lista ordinata per data dell’ultima modifica- u: la lista ordinata per data dell’ultimo accesso- r (reverse order): inverte l’ordine- a (all files): fornisce una lista completa (i file che cominciano con il punto non vengono visualizzati file nascosti)- F (classify): aggiunge al termine del nome del file un carattere che ne indica il tipo (eseguibile:*, direttorio: /, link simbolico: @, FIFO: |, socket:=, niente per file regolari)

Page 15: LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Accesso a Linux: login e password Il sistema (in realtà un programma

15

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Esempio: lsnadja@lab3-linux:~$ ls –l

total 3-rw-r-r- - 1 nadja staff 57 apr 1 13:00 f1.txt-rw-r-r- - 1 nadja staff 1024 apr 4 12:00 f2.txt

tipo di file

diritti(user,group,others)link

propietariogruppodimensione(byte)

data ultima modifnome

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Shellcdserve per muoversi attraverso le directory. Esempio: albero delle directory: /home/antonio/documenti/personali/fattura10.txt posizione corrente: /home/antonioper portarsi nella directory dove si trova il documento fattura 10, digitare il seguente comando: cd documenti/personali. Per portarsi nella propria directory home digitare il comando cdmentre per portarsi nel primo livello dell'albero delle directory digitare cd /mentre con cd .. si va alla directory superiore.

Page 16: LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Accesso a Linux: login e password Il sistema (in realtà un programma

16

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Risposte ai Comandi

echo "Hello World"

il sistema operativo rispondera' con:

Hello World

Linux ripete quello che è stato specificato come parametro.

Il comando echo risultera' fondamentale per gli script di shell.

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

File SystemDati e Programmi sono organizzati mediante una struttura di files e directories:

file: collezione di datidirectory: collezione di file o di directoryIl file system possiede un insieme di utilities per creare, modificare, riprodurre, distruggere ecc. files o dir.

FILE = Flusso indifferenziato di byte ("byte stream") che può contenere informazioni qualsiasi– (dati, programmi sorgente, programmi oggetto,...)– File di tipo testo (formati da linee di caratteri ASCII)

caratteri - newlines - eof– File binari: sequenze di codici binari

000110001…..

Il sistema non impone nessuna struttura alla sequenza di byte• Un file è identificato da un nome (max 256, car alfabetici, numerici e underscore) • Nomi di file riservati: / (slash) root directory - . (period) directory attuale - .. (double period)

directory padre - ~ (tilde): home directory• Non può iniziare con un numero o con un punto (?)• Estensione: (.estensione) raggruppa file in base al loro contenuto.

Page 17: LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Accesso a Linux: login e password Il sistema (in realtà un programma

17

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

file filecerca di determinare l’uso che ne può essere fatto.

odlegge contenuto file bytexbyte (file dump).

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Stampa Stampa file:

lpr nomefile[s]

Tecnica di spool: inserite in una coda ed eseguite in backgroundVisualizza coda dei job di stampa

lpq

Cancellare un job di stampa dalla coda:lprm Idjob

opzione -P

Page 18: LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Accesso a Linux: login e password Il sistema (in realtà un programma

18

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

LinkI link sono particolari file ordinari che puntano ad altri fileo directory.• + flessibilità della struttura gerarchica del FS• consentono condivisione file tra dir diverse, no duplicazioneUtilizzo dei link: la struttura del FS diviene un grafo aciclico

La condivisione di un file è ottenuta mediante la primitiva LINKoppure tramite il comando ln

ln /usr/user1/prog/a link_a

Il file a è identificato mediantedue cammini differenti:/usr/user1/prog/a/usr/user2/prog/link_a

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Link

Hard-link o fisici:quelli visti finora - non possono essere usati tra FS differentiSoft-link o simbolici: informazioni sul percorso per trovare il file

opzione -s

Page 19: LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Accesso a Linux: login e password Il sistema (in realtà un programma

19

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Come riconosco un link• Hard-link o fisici:

i-node

• Soft-link o simbolici:

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

DIRECTORY

dir: etc home eccfile ordinario: README

/ radice (root)ramo

etc home bin dev nodo

users web bashdir corrente

README foglie

Sono sequenze di byte, come i file ordinari. A differenza dei file ordinari :– Non contengono dati ma un elenco di nomi di file e relativi riferimenti ad altre strutture dati del file system– Non possono essere scritte da programmi ordinari

Una directory è un indice contenente i riferimenti (i-number) di tutti i file memorizzati nella directory stessa

Page 20: LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Accesso a Linux: login e password Il sistema (in realtà un programma

20

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Comandi per la gestione del FSpwd,cd, rm, cp, mv, mkdir, rmdir

Tipiche dir del FS

/bin comandi eseguibili/dev files speciali (I/O devices)/etc files per l’amministrazione del sistema, /lib librerie di programmi/tmp area temporanea/home home directory degli utenti

Ad ogni utente viene assegnata, da parte del system administrator, una directory di sua proprietà (home directory) che ha come nome lo username dell’utente stesso.In essa, l'utente potrà creare tutti i file (o subdirectory) che desidera.Spesso, ma non sempre, le home directory sono sotto la directory di sistema /homePer denotare la propria home directory si può usare l'abbreviazione "~“.

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

File SpecialiOgni device di I/O viene visto, a tutti gli effetti, come un file (file speciale)

– A blocchi: associati a dispositivi che presentano blocchi di informazione accessibili direttamente (es. dischi)– A caratteri: associati a dispositivi che presentano un flusso di caratteri in ingresso o uscita (es. terminali, stampanti)

Richieste di lettura/scrittura da/a file speciali causano operazioni di input/output dai/ai device associati

–Tutte le operazioni di I/O relative ai dispositivi fisici vengono effettuate applicando le normali primitive definite per file normali, sui corrispondenti file speciali

cp file /dev/lpCopia file sulla stampante, producendone la stampa

Page 21: LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Accesso a Linux: login e password Il sistema (in realtà un programma

21

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

File Speciali

Vantaggi: Trattamento uniforme di file e device

File & device independence: programmi portabili efacilmente interfacciabili con ogni tipo di device

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

File e directory: permessiAd un file possono essere attribuiti i seguenti permessi:

–Lettura (r-ead)–Scrittura (w-rite)–Esecuzione (e-x-ecute)

I permessi sono definiti per:– utente proprietario (user)– gruppo (a cui appartiene il proprietario) (group)– altri (others)

Al momento della creazione di un file o di una dir:vengono assegnati i permessi di lettura e scrittura al proprietario

Page 22: LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Accesso a Linux: login e password Il sistema (in realtà un programma

22

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

File e directory: permessiPer i file ordinari:r: leggere il contenutow: modificare il contenutox: eseguire il file (ha senso

solo se il file contiene un programma)

NB: i permessi definiti su un file dipendonodai permessi della directory che contiene il file

Per i file speciali:r: leggere dal device (input)w: scrivere sul device(output)x: non significativo

Per le directory:r: leggere il contenutodirectory (es.: ls, con xabilitato)w: modificare la directory,rimuovere files (con xabilitato)x: accesso (scansione) della directory (per leggere, modificare, eseguire un file in essa contenuto)

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

chmodchmod [ugoa][+-][rwx] filenamePermette di cambiare i permessi di accesso (lettura, scrittura, esecuzione) su un file; il comando può essere eseguito solo dall’utente proprietario (o dal superuser)

Page 23: LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Accesso a Linux: login e password Il sistema (in realtà un programma

23

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

chmod

Una volta stabilita questa corrispondenza i permessi possono essere dedotti o impostati utilizzando un numero ottale.Combinazione di 3 numeri ottali:rwx

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

chown

chown newuserid file...

change owner: cambia l’utente propietario di un fileL’utente identificato da newuserid diventa il nuovoproprietario dei fileIl comando può essere eseguito solo dal proprietario "cedente” (o dal superuser)

chgrp

chgrp newgid file...

change group: cambia il gruppo propietario di un fileIl gruppo identificato da newgid diventa il nuovo gruppo proprietario dei fileIl comando può essere eseguito solo dal proprietario "cedente” (o dal superuser)

Page 24: LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Accesso a Linux: login e password Il sistema (in realtà un programma

24

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

I FILTRISED editor non interattivo basato sulla individuazione del testo da modificare tramite le espressioni regolari fornite dall’utente.Es. sed –e ‘1,100d’ filetesto > file.1

sed –e ‘3s /unix/UNIX/g’ filetestoGREP ricerca sullo standard input l’occorrenza di una espressione regolare fornita dall’utente e, se trova una linea che concorda con questa, la copia sullo standard outputEs: grep “mario” file.txt oppure grep ‘[A-Z].*’ file.txt

ps –ef | fgrep sendmail (fgrep=fast grep su stringhe fisse di testo)ls –l |grep ‘^d’

AWK linguaggio di programmazione interpretato, utilizzbile nell’information retrieval, nella generazione di report, nella manipolazione di testi, ecc…Es: awk ‘begin { fs=“:”} $7 == “/usr/bin/csh” {csh++}END \

{print “utenti con shell:”,csh} etc/passwdawk ‘/^[pP]ippo/’ file.txt

FIND effettua la scansione ricorsiva della directory alla ricerca di un file che soddisfi l’espressione riportataEs: find / -user Pippo

find . –name “core” -printSORT effettua l’ordinamento di uno o più file o di linee sullo standard outputEs: sort /etc/passwdVI editor

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Operazioni su file

Ricerca

Opzioni

Page 25: LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Accesso a Linux: login e password Il sistema (in realtà un programma

25

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Esercizi• Utilizzare tutti i comandi che abbiamo visto finora:

– ls, cd, pwd , mkdir, cp, rm, mv, chown, chmod, ln, catPer effettuare le seguenti operazioni:

• Creare una cartella dentro la vostra home• Creare una serie di file nella cartella creata contenenti:

1. Il contenuto delle sottodirectory della home 2. Il contenuto della home con i file nascosti3. Come 2 ma in ordine alfabetico inverso4. Come 2 ma in ordine cronologico inverso– Creare un link simbolico ad uno dei file creati nella cartella home– Togliere i diritti di scrittura a tutti i file creati– Cancellare uno dei file creati– Provare a sovrascrivere uno dei file creati

– Visualizzare i processi del sistema– Salvare in un file solo quelli del vostro utente– Salvare in un file l’elenco dei processi ordinati per PID– Salvare in un file l’elenco dei processi ordinati per UID

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Soluzioni • Creare una cartella dentro la vostra home : mkdir

/home/studente/prova • Creare una serie di file nella cartella creata contenenti:

– Il contenuto della home : ls /home > homels– Il contenuto della home con i file nascosti : ls –la > homela– Come 2 ma in ordine alfabetico inverso: ls –lar prova >nomefile– Come 2 ma in ordine cronologico inverso ls –lacr prova > nomefile2

• Creare un link simbolico ad uno dei file creati nella cartella home:– ln –s ~/prova/homela ~/link

– Togliere i diritti di scrittura a tutti i file creati– chmod –w * oppure chmod 555 *

– Cancellare uno dei file creati : rm homela– Provare a sovrascrivere uno dei file creati con la visualizzare dei

processi del sistema: ps –aux > nomefile– Salvare in un file solo quelli del vostro utente: ps u > psuser– Salvare in un file l’elenco dei processi ordinati per PID :

– ps –aux –-sort=pid– Salvare in un file l’elenco dei processi ordinati per UID:

– ps –aux –-sort=uid

Page 26: LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Accesso a Linux: login e password Il sistema (in realtà un programma

26

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Esempi ricerca

% find . -name a.out -atime +7 -exec rm {} \;

Eliminare tutti i file nella working directory (o più sotto) di nomea.out il cui ultimo accesso è anteriore a 7 giorni

Trova tutti i file nella working directory (o più sotto)di nome a.out il cui ultimo accesso è anteriore a 7 giorni

% find . -name a.out -atime +7

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Esempi ricerca

Page 27: LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Accesso a Linux: login e password Il sistema (in realtà un programma

27

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Esempi ricerca

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Esempi ricerca

Page 28: LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Accesso a Linux: login e password Il sistema (in realtà un programma

28

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

viEseguendo il comando vi si entra in un ambiente di editing. L’area di lavoro è completamente dedicata al testo da elaborare, ad esclusione dell’ultima riga in basso che mantiene, di volta in volta, indicazioni sullo stato in cui si trova l’editor.

vi è stato progettato in modo da distinguere anche concettualmente l’immissione del testo dall’interpretazione di comandi che operano sul testo inserito.

In qualsiasi momento, per poter inserire un comando è sufficiente tornare alla modalità comandi premendo il tasto Esc. Inoltre il tasto Esc consente di annullare un comando non completato. Premerlo più volte di seguito non ha effetti collaterali.

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

vi: Apertura di un file L’esecuzione del comando vi senza argomenti, crea un nuovo

buffer vuoto. Se invece vogliamo editare un file esistente possiamo invocare vi seguito dal nome del file da editare.

vi nomefileIn alternativa, una volta avviato vi, è possibile aprire un file

con il comando :e :e nomefile

Inserimento del testoPremendo il tasto i oppure Ins si passa alla modalità di inserimento del testo, in cui è possibile digitare del testo normalmente. Solitamante questa modalità è identificata dalla presenza della stringa –INSERT – nella barra di stato. E` da notare che il carattere ˜ (tilde) identifica le linee vuote.

Page 29: LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Accesso a Linux: login e password Il sistema (in realtà un programma

29

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Modifica del testoLa pressione del tasto r attiva la modalità modifica del testo in cui il

testo inserito sovrascrive il testo esistente. L’attivazione di tale modalità è identificata dalla presenza della

stringa – REPLACE – nella barra di stato. Lo stesso risultato si ottiene premendo due volte il tasto Ins.

Cancellazione del testo

Per cancellare del testo è possibile utilizzare il comando x che cancella il carattere identificato dal cursore, oppure il comando dd preceduto da un numero n il quale, appunto, cancella n righe a partire da quella occupata dal cursore.

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Copia ed incolla Il comando yy, eventualmente preceduto da un numero, copia in un

buffer n righe a partire da quella in cui si trova il cursore. La funzione “Taglia” in realtà viene svolta dal comando dd che non

si limita a cancellare una riga ma la copia in un buffer. Per incollare si usano i comandi p oppure P. Il primo incolla a partire

dalla riga seguente a quella in cui si trova il cursore, il secondo a partire da quella in cui si trova il cursore.

Ricerche nel testo Per cercare una stringa all’interno di un file di testo si usa il /Tra l’altro questo comando svolge la stessa funzione in molte

situazioni (all’interno di man, less, more, ecc.). Dopo la pressione del tasto / è possibile digitare la stringa da cercare

che apparirà nella barra di stato. Per ripetere l’ultima ricerca effettuata si usa il tasto n.

Page 30: LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Accesso a Linux: login e password Il sistema (in realtà un programma

30

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Salvataggio e chiusura Per salvare il testo editato, si usa il comando :w, mentre per

uscire dal programma si usa il comando :q. I due comandi possono esseri combinati ( :wq ) per salvare ed

uscire nello stesso momento. Inoltre e’ possibile forzare l’uscita senza salvare (con

conseguente perdita delle modifiche), con il comando :q!

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica

Riepilogo vivi nomefile, apre il file in vi Esc torna alla modalità comandi :e (edit) apre un file i o Ins inserisce del testo r o due volte Ins sovrascrive il testo [n] dd taglia n righe [n] yy copia n righe p incolla dopo la riga corrente P incolla a partire dalla riga corrente/ cerca all’interno del testo n ripete l’ultima ricerca :w salva :q chiude :q! chiude senza salvare

Page 31: LINUX a livello di utentedisys/linux1.pdf · 3 LINUX liv. utente Sistemi Distribuiti UdB – Dip. Informatica Accesso a Linux: login e password Il sistema (in realtà un programma

31

LINUX liv. utenteSistemi Distribuiti

UdB – Dip. Informatica