Corso di Programmazione 1
Comandi essenziali per operare sulle macchine Linux del laboratorio
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 la seguente
login e pasword:
login: uNUM02
password: !a.a.02
dove NUM indica il numero della macchina su cui state.
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.