Esercitazioni del corso di Laboratorio di Programmazione e Calcolo
     n. 1
    introduzione all'ambiente Linux


Avvio

Avviare il computer facendo partire Linux (SL - Scientific Linux 7.9).

Collegatevi usando come account
 
                didXXY

con XX=01...16 a seconda del numero del PC che state usando

Y=m per il gruppo 1 (martedi')
Y=v   per il gruppo 2
(giovedi')
la password verra' comunicata a voce dal docente.


Il Desktop

Linux ha delle interfaccie grafiche che emulano il desktop di Windows. Queste sono molteplici (kde, gnome...) e variano anche tra le varie distribuzioni di Linux e tra le diverse versioni. Non bisogna quindi abituarsi a basarsi troppo sulle icone ed i menu forniti dall'interfaccia.
D'altra parte l'interfaccia e' configurabile e puo' essere vantaggioso avere alcune icone sul Desktop o sulla barra dei comandi per le applicazioni di uso piu' frequente.
Il primo passo dell'esercitazione consistera' nel creare sulla barra dei comandi l'icona corrispondente all'avvio di una finestra dalla quale si possano dare istruzioni (terminal, shell o console) e, qualora non fosse gia' presente, un'icona dalla quale far partire un browser web.


La gerarchia delle directory di Unix

Una directery principale, chiamata root e indicata con /, contiene tutti le directory del calcolatore, le quali a loro volta contengono altre directory... fino al livello piu` interno che contiene i file (dati o programmi).
Invece di mostrare le directory (come le cartelle Windows o Mac), in Unix vengono mostrate le relazioni tra directory, mediante un albero rovesciato.
In cima abbiamo le radici (root) mentre i rami sono le sottodirectory.

bin, usr, home, dev, etc, sbin.... sono delle sottodirectory di root
didnnm, didnnv etc... sono sottodirectory di home (nn e' il numero del vostro PC).
Ogni gruppo ha un account (did01m ... did16m , did01v ... did16v) cui corrisponde una home directory sotto home.
 

Indirizzo di un file nel file-system Unix

Un file puo` essere identificato tramite il suo  pathname  completo (ad esempio il file cp della directory /bin/bin/cp  ), anche se  esistono delle scorciatoie.
In particolare gli eseguibili (
comandi) vengono cercati di default in una lista delle directory che include /bin e quindi generalmente non e` necessario indicare tutto il path (cammino) e /bin/cp equivale a cp.

Inoltre la directory in cui ci si trova in quel momento (present working directory, ottenibile mediante il comando pwd) non ha bisogno di essere specificato, quindi per copiare un file A in un file B entrambi nella directory corrente e` sufficiente scrivere

         cp   A  B

per copiare invece il file A dalla directory dell'utente didnnm nella directory corrente, home directory dell'utente didnnv, si puo` procedere mediante indirizzi assoluti

    cp        /home/didnnm/A            /home/didnnv/B
    cp        /home/didnnm/A                     B

oppure usando gli indirizzi relativi

         cp     ../didnnm/A                          B

(      ../        e` la directory al di sopra di quella attuale,  ./     e' la directory corrente)
 
 
 

Navigazione nel file-system

pwd

present working directory, nessun argomento, ritorna l'indirizzo della directory corrente

cd

change directory, seguito da un argomento con la directory di destinazione, che puo` essere un indirizzo assoluto o relativo
esempio, partendo dalla directory      /home/did01m

        cd    ..             ci porta in /home

        cd   /home      ci porta in  /home

        cd  Desktop                       ci porta nella sottodirectory Desktop

        cd  /home/didnnY/Desktop      ci porta nella sottodirectory Desktop(Y=A oppure Y=B)

        cd  ~/Desktop                   stessa cosa! (~ indica la propria home directory)
 

ls

list, fornisce la lista dei files della directory corrente o della directory di cui si fornisce l'indirizzo.

Questo comando ha delle opzioni utili, di cui per il momento ne indichiamo una sola: -F

(NB in Unix un comando seguito dal carattere - e poi da un'altro carattere indica un'opzione, per avere tutte le opzioni di un comando digitare man nome_del_comando, da una pagina del manuale si esce premendo q).

ls -F         mostra i diversi tipi di files presenti nella directory in modo diverso:

i sottodirectory seguite dal simbolo back-slash /
gli eseguibili seguiti dal simbolo *
i file di dati o di testo senza alcun simbolo particolare
 

Manipolazione di files

cp       A      B
copy: richiede due argomenti, l'indirizzo del file da copiare e quello del file su cui copiare

mv      A      B
move: sposta il primo file nel secondo

rm      A
remove: cancella il file A

more   A
mostra il contenuto del file A pagina per pagina

less     A
molto simile al precedente

cat      A
mostra il contenuto del file A tutto insieme

mkdir      D
crea la directory all'indirizzo D

rmdir      D
cancella la directory all'indirizzo D (solo se vuoto)
 

Creazione di files

esistono molti modi per creare files in Unix ma ci concentreremo sull'uso di uno dei piu` diffusi e potenti editor di testo: emacs.

Per fare partire una sessione di emacs basta digitare emacs, ma per poter mantenere l'uso della finestra di comandi ed evitare di avere problemi nel salvataggio del file si consiglia di digitare emacs nomefile &.

Il simbolo & alla fine di un comando lancia l'esecuzione del comando in background. Un ulteriore consiglio e' quello di lanciare sempre emacs indicando quale sia il file da editare, anche quando questo sia ancora da creare: emacs miofile.txt &, in questo modo si evita di trovarsi in un ambiente non ben definito (scratch) dal quale puo' essere difficoltoso salvare correttamente.
 

Questo editor puo` fare tantissime cose ma per oggi ci limitiamo ad usarlo per creare un file di testo, a vostro piacimento, e salvarlo mediante la sequenza di comandi

Ctrl-x    Ctrl-s    (Ctrl- tasto control tenuto premuto insieme al tasto indicato subito dopo)

emacs vi chiedera` di fornire il nome del file su cui salvare il contenuto del suo buffer.

Si esce con Ctrl-x Ctrl-c.
 
 
 

Applicate i comandi elencati qui sopra per eseguire le seguenti operazioni

a. controllare in che directory vi trovate

b. se non siete nella vostra home directory (/home/did01m o simili) portatevici

c. crearvi una sottodirectory ex1

d. verificare mediante il comando ls -F di averlo creato

e. spostarvi all'interno della directory ex1

f. verificare col comando ls che questo e` vuoto

g. creare al suo interno un nuovo file con emacs chiamandolo ex1.txt

h. leggerlo con il comando cat

i. leggerlo con il comando more: per avanzare di una pagina (files lunghi) premere la barra, per uscire premere q

j. leggerlo con il comando less

k. rinominarlo esercitazione1.txt

l. se vi rimane tempo continuate ad esercitarvi con emacs, esploratene i menu e provate i comandi abbreviati sotto elencati 
 

Ctrl-v spostamento in avanti di una pagina

Ctrl-p spostamento all'indietro di una riga

Ctrl-n spostamento in avanti di una riga

Ctrl-f spostamento in avanti di un carattere

Ctrl-b spostamento all'indietro di un carattere

Alt-f spostamento in avanti di una parola

Alt-b spostamento indietro di una parola

Ctrl-s ricerca in avanti

Ctrl-r ricerca all'indietro

Ctrl-x Ctrl-f nuova apertura di file

Ctrl-x Ctrl-s salva

Ctrl-x Ctrl-c esci

<canc> cancella il carattere precedente

Ctrl-k cancella la riga corrente dal cursore in poi

Ctrl-y incolla (l'ultima cosa cancellata)

Ctrl-x u undo (dell'ultima operazione)


Creazione di un file con i vostri nomi

Nella vostra home directory, create un file  Nomi_2023_24_xxY.txt  dove xx e' il numero del vostro gruppo e Y e' un numero (1 , 2) a seconda che frequentiate il laboratorio di martedi' (Gruppo 1) o giovedi' (Gruppo 2).

Il file dovra' contenere:

  - il nome del corso
  - l'anno accademico
  - il giorno in cui frequentate il laboratorio (martedi' o giovedi) e il numero corrispondente (gruppo 1 o 2)
  - il numero del vostro gruppo (xx)
  - il nome ed il cognome dei due studenti che compongono il gruppo