A P P U N T I su U N I X

INDICE
 
1 - INTRODUZIONE AL S.O. UNIX

2 - L'ACCESSO A UNIX

3 - IL FILE SYSTEM 4 - LO STATO DEL SISTEMA 5 - ELABORAZIONE TESTI IN UNIX 6 - EDITING, COMPILAZIONE ED ESECUZIONE DI PROGRAMMI C++

 1 - INTRODUZIONE AL S.O. 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:

 
Una macchina UNIX puo' pensarsi formata da piu' livelli: L'utente UNIX, in generale  lavora al livello 2 mediante comandi o a livello 3 con programmi, pertanto usa le risorse tramite il "kernel", che e' in grado di assicurare la loro gestione sicura, corretta ed efficiente,

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 - L'ACCESSO A UNIX

 
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:

<comando> [<opzioni>] [<argomenti>]

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 ";".

 



2.3 – Comandi principali UNIX:

 

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:

Esempi:

 
$ ls          Visualizza la lista dei soli nomi (file e directory) presenti nella directory corrente

 

$ ls -l             Visualizza:

la lista dei file presenti, con le seguenti indicazioni:; Esempio:

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 - IL FILE SYSTEM

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.

 

 
3.2 - Permessi e protezioni sui file

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
  Ad ogni tipo di utente e' assegnato un codice secondo la seguente tabella:
  CODICE UTENTE DESCRIZIONE
u proprietario (user)
g gruppo (group)
o altri (other)
a tutti (all)
e l'accesso ad un file puo' essere discrezionale in base alla categoria a cui appartiene un dato utente.
 
   
  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.
 

Il primo campo indica il tipo di file e puo' contenere i seguenti valori:

- 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:

 

  



 -  Comandi sui file

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 - LO STATO DEL SISTEMA
 

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  - ELABORAZIONE TESTI IN UNIX

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':

Normalmente, all'avvio il vi si presenta in modo comando.

 

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
 

  


6-  EDITING COMPILAZIONE ED ESECUZIONE DI PROGRAMMI C++
 
 

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