In questa pagina vengono riassunti i comandi basilari per entrare sulle
macchine Linux del laboratorio, creare/modificare/cancellare file e directories
in Linux, utilizzare l’editor vi per scrivere
i vostri programmi, compilare ed eseguire programmi c sulle macchine
Linux.
Per entrare sulle macchine di laboratorio dovete digitare login
e pasword:
login: ....
password: ....
Creazione di un file: utilizzazione dell’editor vi
(piu' semplicemente potete invocare gedit !!!!)
Per creare un file contente un vostro programma dovete usare uno degli
editor disponibili in Linux. Due degli editor piu’ diffusi sono vi e emacs.
Per invocare vi e creare un file digitare
vi nome_file return (dovete sempre battere return per eseguire uno
dei comandi riportati qui di seguito)
per entrare in modalita’ scrittura digitate ESC i, oppure ESC
a
A questo punto potete scrivere il vostro programma. Per andare a capo
battete il testo di return, per spostarvi all’interno del testo che avete
scritto usate le freccette. Per uscire da vi digitate:
ESC :q! per uscire senza salvare quanto fatto
ESC: wq per salvare e uscire da vi
ESC: w vi permette invece di salvare quanto scritto senza uscire
da vi
Per cancellare una lettera all’interno di una parola che avete scritto
premete ESC, posizionatevi sulla lettera e battete il comando dl (delete
letter); per cancellare una intera parola posizionatevi
sulla prima lettera e battete dw (delete word). Per sostituire il valore
di una lettera battete esc, posizionatevi sulla lettera, digitate il comando
cl (change letter) seguito dalla lettera o parola
che volete inserire al suo posto e digitate nuovamente esc; per cambiare
il valore di una parola posizionatevi sulla prima lettera della parola,
battete cw (ch’ange word), inserite la parola con
cui la volete sostituire e battete nuovamente esc.
Altri comandi utili sono
Esc:numero_linea per posizionarsi sulla linea avente il numero indicato
(ad esempio esc:4 vi fara’ posizionare sulla quarta linea), ESC/nomeparola
per ricercare una parola nomeparola
all’interno del testo che avete scritto (ad esempio ESC/integer1 vi
posizionera’ sulla prima occorrenza di integer1 all’interno del testo)
e ESC:$ per posizionarsi alla fine del testo che avete
scritto.
Per ulteriori informazioni sui comandi di vi, o per informazioni su emacs, digitate man vi o man emacs.
Comandi base di Linux
Per creare una nuova directory:
mkdir nome_directory
Ad esempio, se siete nella directory
/home/prog1 e volete crearvi una directory laboratorio dovete digitare
il comando:
mkdir laboratorio
Per elencare i file e le directory
contenute nella directory corrente digitare:
ls
Se ad esempio una directory /home/prog1/laboratorio
contiene una directory tempo, e due file esercizio1.c e esercizio2.c, digitando
ls comparira’ sullo schermo
Esercizio1.c esercizio2.c
tempo/
Una delle opzioni piu’ usate del
comando ls e’ l’opzione ?l. Digitando nel caso precedente ls ?l nella directory
/home/prog1/laboratorio otterrete in output informazioni piu’
dettagliate sui file contenuti
sulla directory, ad esempio:
-rwxrwxrwx 1prog1 prog1
4096 ott 17 9:00 esercizio1.c
La prima colonna (-rwxrwxrwx)
dice se e’ una directory o un file (primo carattere d nel caso di una directory,
- nel caso di un file), e chiarisce i diritti di lettura (r = diritto di
lettura
attivo, - diritto di lettura non
attivo), scrittura (w = diritto di scrittura attivo, - diritto di
scrittura non attivo), ed esecuzione del file (x = diritto di esecuzione
attivo, - diritto di
esecuzione non attivo), da parte
dell’utente (caratteri 2-4), del gruppo a cui l’utente appartiene (caratteri
5-7) e di tutti gli altri (caratteri 8-10). Il comando da usare per dare
a tutti il
diritto di leggere, scrivere ed
eseguire il file e’ chmod 777 nomefile Per maggiori dettagli su tale comando
chiamate l’help in linea digitando man chmod
La seconda e terza colonna
indicano il nome dell’utente a cui il file appartiene e del suo gruppo
di appartenenza, la quarta colonna indica la dimensione del file, la quinta
la data
dell’ultima modifica effettuata
sul file, la sesta il nome del file.
Per muoversi tra directory differenti
digitare
cd path_dalla_directory_corrente_a_quella_di_destinazione
Ad esempio se siete nella directory
/home e volete spostarvi sulla directory /home/prog1/laboratorio dovete
digitare cd prog1/laboratorio/
Per ritornare indietro di un passo
nell’albero delle directory (ad esempio da /home/prog1/laboratorio a /home/prog1)
basta digitare cd ...
In generale, ../ indica la directory
precedente e ./ la directory corrente nell’albero delle directory
Per copiare un file digitare cp
nome_file_da_copiare nome_file_destinazione
Ad esempio se siete nella directory
/home/prog1/laboratorio e volete copiare il contenuto del file esercizio1.c
in un nuovo file tempo.c dovete digitare cp esercizio1.c tempo.c
L’operazione di copia e’ non distruttiva
(il contenuto del file esercizio1.c rimane inalterato). Se invece i due
file sono su directory diverse dovete indicare il path del file. Ad esempio
se siete nella directory /home/prog1
e volete copiare il contenuto del file pippo nella directory home in un
file pippo_lab nella directory /home/prog1/laboratorio dovrete digitare
cp ../pippo
laboratorio/pippo_lab
Per rinominare un file digitare
mv vecchio_nome_file nuovo_nome_file
Ad esempio se siete nella directory
/home/prog1/laboratorio e volete cambiare il nome del file esercizio1.c
in tempo.c dovete digitare mv esercizio1.c tempo.c
L’operazione di rinomina e’ distruttiva
(scompare il file esercizio1., si genera un file tempo.c con lo stesso
contenuto). Se i due file sono su directory diverse dovete indicare il
path
del file. Ad esempio se siete
nella directory /home/prog1 e volete rinominare il file pippo nella directory
home in un file pippo_lab, spostandolo contemporaneamente nella directory
/home/prog1/laboratorio dovrete
digitare
mv ../pippo
laboratorio/pippo_lab
Per cancellare un file utilizzare
il comando
rm nomefile
Ad esempio, se siete in una directory
/home/prog1/laboratorio e volete cancellare un file esercizio1.c, dovrete
scrivere
rm esercizio1.c
Se siete nella directory /home/prog1
e volete cancellare lo stesso file dovrete scrivere
rm laboratorio/esercizio1.c
Per cancellare tutti i file all’interno
della directory corrente scrivere rm *
(ATTENZIONE all’uso dell’rm!!)
Quando avete cancellato tutti
i file all’interno di una directory e’ possibile cancellare la stessa directory
digitando rmdir path_directory. Ad esempio se siete nella directory
/home/prog1/laboratorio che contiene
una directory tempo vuota, e’ possibile cancellarla digitando rmdir tempo
Per individuare il path della directory
in cui vi trovate digitare
pwd
Ad esempio se siete nella vostra
home directory, /home/prog1 digitando pwd otterrete /home/prog1
Per avere maggiori dettagli sulle
opzioni associate ad un comando digitate
man nome_comando
Ad esempio il comando
man cp
vi fara’ apparire una schermata:
CP(1) FSF
CP(1)
NAME
cp ? copy files and directories
SYNOPSIS
cp [OPTION].... SOURCE
DEST
cp [OPTION] ... SOURCE ...
DIRECTORY
cp [OPTION] ... ?target
? directory=DIRECTORY SOURCE...
DESCRIPTION
Copy source to destination,
or multiple sources to directory.
Etc.etc.
che vi fornira’ informazioni dettagliate
sul significato e opzioni del comando.
Compilazione ed esecuzione di programmi c
Il compilatore c presente sulle macchine Linux e’ il gcc. Per poter
compilare un vostro programma dovete averlo editato ( ad esempio con vi
e emacs) e salvato con una estensione .c
(attenzione e’ importante che la lettera c sia minuscola. .C e’ usato
per programmi in C++). Ad esempio potete avere salvato il vostro programma
nel file esercizio1.c
Per compilare il vostro programma dovete digitare gcc esercizio1.c
La fase di compilazione creera’ un eseguibile memorizzato nel file
a.out
Per eseguire il programma e’ sufficiente digitare a.out
Se il sistema dovesse segnalarvi l’incapacita’ di trovare il file a.out,
e la compilazione e’ andata a buon fine, digitate ./a.out , cosi' indicando
esplicitamente il path (directory corrente, file
a.out)
E’ possibile esplicitare un nome diverso da dare all’eseguibile digitando
gcc ?o nome_eseguibile esercizio1.c
Ad esempio gcc ?o es1 esercizio1.c creera’ un eseguibile es1.