INDICE
1 - INTRODUZIONE AL S.O. UNIX
2 - L'ACCESSO A UNIX
Il sistema operativo Unix è nato nel 1969 nei laboratori AT&T
a opera di Ken Thompson su un elaboratore PDP-7 della Digital Equipment.
La prima versione era scritta in un linguaggio direttamente comprensibile
alla macchina: il linguaggio assembly.
Nel 1973 fu riscritto completamente utilizzando il linguaggio "C",
ideato da Brian Kernighan e Dennis Ritchie. In questo modo poteva essere
trasportato su altri elaboratori che possedessero il traduttore per questo
linguaggio.
Da allora e sino ai primi anni '80 Unix non ebbe grande fortuna. Oggi,
invece, e’ praticamente diventato lo standard industriale in ambiente di
multiutenza.
Il s.o. UNIX possiede le seguenti caratteristiche:
UNIX, comunica all'utente che la shell e' pronta ad accettare comandi mediante la visualizzazione di un simbolo, detto "prompt", che di solito e' il "$".
Esistono diverse shell, sostanzialmente simili fra loro ma con differenti specializzazioni (la shell di Bourne è quella più utilizzata ed è di impiego generico, la c shell, la visual shell)
2.1 - Login e logout
L'operazione con la quale l'utente si collega al s.o. UNIX e' detta "login", quando, dopo il collegamento appare il messaggio:
login:
l'utente deve immettere il suo identificatore, detto "username" (comunicato
preventivamente dal gestore del sistema),
successivamente, quando compare un messaggio del tipo:
password:
l'utente deve immettere una sua parola chiave, riservata e personale.
Una volta che l'utente ha completato la fase di "login", il sistema
visualizza il "prompt" (di solito il "$") ed e' pronto ad accettare comandi.
Quando l'utente vuole allontanarsi dal sistema e' opportuno che chiuda
la sua sessione di lavoro in modo da non renderla accessibile ad altri.
Questa fase prende il nome di "logout" e per eseguirla, al prompt
di UNIX, e' sufficiente premere i tasti Ctrl-d. A questo punto lo
stesso terminale e' pronto ad ospitare altri utenti.
2.2 - Sintassi dei comandi
I comandi immessi dall'utente sono interpretati dalla shell di UNIX e, se corretti dal punto di vista sintattico, vengono eseguiti.
In generale, la sintassi di un comando UNIX ha la forma:
dove:
<comando> indica un generico comando UNIX
<opzioni> sono una lista di uno o piu' caratteri che modificano parzialmente l'effetto del comando da eseguire (variano da comando a comando)
<argomenti> sono una lista di uno o piu' oggetti su cui il comando opera.
In UNIX e' possibile digitare su una stessa linea piu' di un comando, avendo cura di separare i vari comandi con il carattere ";".
NOME COMANDO: cat
EFFETTO: visualizza il contenuto di un file
SINTASSI: cat <filename>
NOME COMANDO: ls
EFFETTO: visualizza l'elenco dei file presenti
nella directory corrente
SINTASSI: ls [<opzioni>] [<argomenti>]
OPZIONI:
$ ls
Visualizza la lista dei soli nomi (file e directory) presenti
nella directory corrente
$ ls -l Visualizza:
total 4
drwxr-xr-x 2 mm
other 80 Jan
25 13:08 backup
-rw-r--r-- 1 mm
other 0
Jan 25 13:15 ls-l.txt
-rw-r--r-- 1 mm
other 53 Jan
25 13:15 ls.txt
drwx------ 2 mm
other 96 Jan
25 11:03 programs
NOME COMANDO: passwd
EFFETTO: consente di modificare la corrente password
SINTASSI: passwd
Il sistema chiede all'utente la password corrente. Una
volta immessa il sistema chiede quella nuova; l'utente digita la nuova
password e, per verifica, il sistema ne richiede la digitazione. Al termine,
al nuovo login, la password risultera' modificata.
Per motivi di sicurezza e riservatezza dei propri dati, ciascun utente dovrebbe modificare la password su base periodica, al fine di evitare accessi indesiderati nella sua area di lavoro.
3.1 - File e directory
In UNIX i file sono classificabili in uno dei seguenti 3 tipi:
Per facilitare l'accesso ai file, Unix consente all'utente di assegnare
un nome al file (che può essere lungo sino a 14 caratteri e può
contenere le 26 lettere dell'alfabeto e le 10 cifre oltre al segno di sottilineatura
("_") e il punto (".")).
- Comandi principali
NOME COMANDO: pwd
EFFETTO: mostra a video la directory corrente
(print working directory)
SINTASSI: pwd
NOME COMANDO: cd
EFFETTO: consente di cambiare la directory corrente
SINTASSI: cd <dirname>
NOME COMANDO: mkdir
EFFETTO: consente di creare una nuova directory
SINTASSI: mkdir <dirname>
NOME COMANDO: rmdir
EFFETTO: consente di rimuovere una directory
SINTASSI: rmdir <dirname>
Per rimuovere una directory e' necessario
prima aver cancellato tutti i file e le eventuali subdirectory presenti
in essa.
Esempi:
$ cd usr/rossi la directory corrente diventa rossi
$ cd / la directory corrente diventa la "root"
$ cd programs la directory corrente diventa "programs"
(e’ una subdirectory di quella attuale)
$ mkdir usr/rossi/programs crea la subdirectory programs
della directory rossi presente in usr
NOME COMANDO: man
EFFETTO: mostra l’aiuto su un dato comando
SINTASSI: man <nome_comando>
Con questo comando verranno visualizzate, le informazioni relative all'uso del comando indicato (tratte dalla guida di riferimento del sistema operativo) oppure un messaggio di errore nel caso in cui non fosse disponibile alcuna spiegazione sul comando specificato.
In un s.o. in multiutenza, e' molto importante assicurare la protezione
dei file dei vari utenti, nonche' quelli del s.o.
UNIX a tale scopo associa ad ogni file dei parametri, detti "protezioni",
impostabili dal proprietario del file o dal system administrator,
che consentono una maggiore o minore protezione durante le operazioni
alle quali un file puo' in generale essere soggetto:
| CODICE ATTRIBUTO | PERMESSO |
| r | lettura |
| w | scrittura |
| x | esecuzione |
| - | nessuno |
| CODICE UTENTE | DESCRIZIONE |
| u | proprietario (user) |
| g | gruppo (group) |
| o | altri (other) |
| a | tutti (all) |
| CODICE OPERAZIONE | EFFETTO |
| + | permesso aggiunto |
| - | permesso revocato |
Le protezioni relative ad un file si possono anche applicare ad una
directory, che e' vista anch'essa come un file. In tal modo e' possibile
modificare le protezioni di una directory per aprirla o per inibirla completamente
o parzialmente ad altri utenti.
- per i file ordinari
d per le directory
I campi restanti sono ripartiti in blocchi da 3 sottocampi ciascuno.
Il primo blocco indica i permessi consentiti all'user; il secondo blocco indica i permessi relativi al group; l'ultimo blocco indica i permessi concessi agli other.
Ognuno dei 3 gruppi di permessi e' costituito, a sua volta, da 3 permessi: lettura (read), scrittura (write) ed esecuzione (execute).
Ad esempio, la maschera drwxr-xr-x:
| d | rwx | r-x | r-x |
| tipo file
(- file ordinari d directory) |
Permessi consentiti all'utente user
(r w x ) |
Permessi consentiti al group
(r w x ) |
Permessi consentiti agli altri
(r w x ) |
evidenzia che si tratta di un file directiry di cui il proprietario
ha tutti i diritti mentre lascia al gruppo e agli altri la possibilità
di lettura ed esecuzione ma non di srittura.
I permessi sulle directory (r,w,x) hanno rispettivamente il significato:
Nei seguenti comandi <filename> e' utilizzato per indicare il generico
nome di un file. In questo nome si sottintende l'eventuale percorso.
E' possibile usare i caratteri "jolly" ossia l' "*" ed il "?", rispettivamente
per rimpiazzare piu' caratteri o un singolo carattere.
NOME COMANDO: cp
EFFETTO: consente di copiare un file in un altro
SINTASSI: cp <filename_1> <filename_2>
NOME COMANDO: mv
EFFETTO: consente di spostare file o di cambiare il nome
a un file
SINTASSI: mv <filename_1> <filename_2>
NOME COMANDO: more
EFFETTO: visualizza un file a pagine aspettando la pressione
della barra spaziatrice per proseguire
SINTASSI: more <filename>
NOME COMANDO: rm
EFFETTO: elimina uno o piu' file
SINTASSI: rm <filename>
OPZIONI: -i chiede la conferma prima della cancellazione
NOME COMANDO: pr
EFFETTO: stampa un file con eventuali opzioni di stampa
SINTASSI: pr [<opzioni>] <filename>
OPZIONI:
-k stampa su k colonne
-h <testo> pone in ogni pagina <testo> come intestazione
-d stampa il file con interlinea doppia
-l<numero> stampa il file con <numero> linee per
pagina ( lo standard e' 66)
NOME COMANDO: chmod
EFFETTO: Consente la modifica degli attributi di un file
SINTASSI: chmod [<opzioni>] <filename>
OPZIONI: Le opzioni sono i codici di attributo di attributo,
i codici di utente ed i codici di operazione, secondo le tabelle descritte
in § 5.2.
Esempi:
$ ls -l
total 24
.....
-rw-r--r-- 1 mm other
947 Feb 9 13:50 pgm7.c
.....
$ chmod o+x pgm7.c
$ ls -l pgm7.c
-rw-r--r-x 1 mm other
947 Feb 9 13:50 pgm7.c
$ chmod o-x pgm7.c
$ ls -l pgm7.c
-rw-r--r-- 1 mm other
947 Feb 9 13:50 pgm7.c
I codici ottali sono i seguenti:
| CODICE ATTRIBUTO | PERMESSO |
| 4 | lettura |
| 2 | scrittura |
| 1 | esecuzione |
| 0 | nessuno |
Per avere un permesso composto e' sufficiente dare la somma aritmetica dei permessi componenti: ad esempio, assegnando agli other il codice ottale 4, si attribuisce a questi il permesso di sola lettura, mentre attribuendo il codice 5 (4+1) si attribuiscono i permessi di lettura ed esecuzione.
Esempio:
$ ls -l lettera.txt
-rw-r--r-x 1 mm other 53 Jan 25 13:15 lettera.txt
$ chmod 744 lettera.txt
-rwxr--r-- 1 mm other 53 Jan 25 13:15 lettera.txt
Questo comando sottrae ai peressi delle 3 categorie di utenti i valori 0, 2 e 2. Per cui, l'utente avra' permessi invariati, il gruppo viene privato del permesso di lettura, come anche gli altri.
4.1 - Il sistema e le informazioni su esso
UNIX mette a disposizione dell'utente comandi per fornire informazioni
relative alle varie funzioni del sistema relativamente a:
- utenti;
- stato dei file;
- stato dei dischi;
- unita' presenti;
- stato dei processi.
Esempi di comandi
NOME COMANDO: date
EFFETTO: fornisce la data e l'ora corrente del sistema
SINTASSI: date
NOME COMANDO: who
EFFETTO: visualizza informazioni sugli utenti collegati
al momento
SINTASSI: who
NOME COMANDO: df
EFFETTO: fornisce lo spazio libero presente su disco
SINTASSI: df
NOME COMANDO: file
EFFETTO: consente di analizzare i vari tipi di file presenti
SINTASSI: file <filename>
NOME COMANDO: tty
EFFETTO: mostra il percorso assoluto del terminale associato
all'utente
SINTASSI: tty
4.1 - L'editor vi
L'editor e' uno dei primi programmi di un s.o. ad essere utilizzato dall'utente, in quanto tramite esso è possibile caricare i testi in memoria di massa o modificare testi gia' presenti.
Un testo puo' essere un qualunque documento, come lettere, relazioni o altro, oppure un programma scritto in un dato linguaggio.
In questo capitolo esamineremo soltanto i comandi piu' utilizzati, dell’editor vi disponibile sotto UNIX, rimandando al manuale relativo l'utente che desiderasse approfondirne la conoscenza.
Il vi puo' trovarsi in una delle 3 seguenti modalita':
MODO COMANDO
Il modo comando e' il modo standard in cui si trova il
vi al momento dell'ingresso in
un testo.
Se il vi si
trova in un'altra modalita', per entrare in modo
comando e' sufficiente premere il tasto ESC.
Quando il vii
e' in modo comando e' possibile eseguire tutta una serie di comandi, caratterizzati,
ciascuno, da una lettera, come indicato dalla tabella seguente:
Alcuni comandi impostabili in modo testo possono essere
preceduti da un valore numerico che indica il numero di volte che il comando
deve essere eseguito.
Ad esempio:
6dd cancella le successive 6 righe
5x cancella 5 caratteri a partire da quello corrente
| i - inserisce il testo nella posizione corrente |
| I - inserisce il testo all'inizio della linea corrente |
| a - inserisce il testo a destra della posizione corrente del cursore |
| A - inserisce il testo alla fine della linea corrente |
| o - apre una riga al di sopra di quella corrente |
| O - apre una riga al di sotto di quella corrente |
| r - rimpiazza il carattere corrente |
| R - sovrascrive sul testo preesistente |
| x - cancella il carattere corrente |
| X - cancella il carattere precedente quello corrente |
| dd - cancella la linea corrente e la memorizza per eventuali copie |
| D - cancella dalla posizione corrente fino a fine linea |
| u - annulla l'effetto dell'ultimo comando impostato |
| : - entra in modo due punti |
| p - restituisce il contenuto di eventuali parti cancellate (comando d) |
MODO TESTO
Dal modo comando si entra in modo testo digitando una
qualunque delle lettere sotto indicate, ottenendo l'effetto scritto a fianco
di ciascuna di esse. Una volta entrati in modo testo si puo'
digitare il testo da caricare.
Per uscire dal modo testo e passare in modo comando e'
sufficiente premere il tasto ESC.
| i - inserisce il testo nella posizione corrente |
| I - inserisce il testo all'inizio della linea corrente |
| a - inserisce il testo a destra della posizione corrente del cursore |
| A - inserisce il testo alla fine della linea corrente |
| o - apre una riga al di sopra di quella corrente |
| O- apre una riga al di sotto di quella corrente |
MODO DUE PUNTI
Per entrare in modo ":" occorre:
- premere il tasto ESC
- digitare il carattere ":".
In basso alla schermata comparira' il prompt costituito
appunto dal carattere ":", a fianco del quale l'utente puo' impostare i
comandi, di cui i piu' importanti sono riportati in tabella.
| w - salva il file corrente sul disco |
| q - esce dal vi solo se non ci sono stati cambiamenti dall'ultimo salvataggio |
| wq – salva il file corrente ed esce dal vi |
| q!- esce senza salvare |
| x - corrisponde al comando wq |
| r <filename> - inserisce sotto la linea corrente il file <filename> |
| ! - consente il temporaneo ritorno alla shell per l'esecuzione di un comando. |
Al termine della sua esecuzione il controllo torna al vi.
Movimenti del cursore
All'interno del vi ci si puo' spostare nel testo mediante
i tasti cursore. In alternativa si possono usare i tasti seguenti, dopo
essersi posti in modo comando:
| k - alto l - destra |
| j - basso h - sinistra |
| w - inizio prossima parola |
| e - fine prossima parola |
| b - inizio parola precedente |
| ^- inizio linea |
| $ - fine linea |
| Ctrl-d - avanza 12 linee |
| Ctrl-u - indietreggia di 12 linee |
| Ctrl-f - avanza di 23 linee |
| Ctrl-b - indietreggia di 23 linee |
| Ctrl-y - sposta la schermata di una linea in alto |
| Ctrl-e - sposta la schermata di una linea in basso |
| Ctrl-g - visualizza nell'ultima riga informazioni sullo stato del testo |
| G - posiziona il cursore alla fine del testo |
NOME COMANDO: vi
EFFETTO: consente di editare un file
SINTASSI: vi <filename_1>
NOME COMANDO: g++
EFFETTO: consente di compilare un file, l'output si chiamerà
a.out
SINTASSI: g++ <filename_1>
es: g++ proca1.c
NOME COMANDO: a.out
EFFETTO: manda in esecuzione il file eseguibile a.out
SINTASSI: a.out