• Non ci sono risultati.

Introduzione a Linux

N/A
N/A
Protected

Academic year: 2021

Condividi "Introduzione a Linux"

Copied!
22
0
0

Testo completo

(1)

Introduzione a Linux

Linux ` e un sistema operativo di tipo Unix, ma gratuito e sviluppato liberamente da molti pro- grammatori sparsi per il mondo.

E stato inventato dal finlandese Linus Torvalds, ` all’epoca 22enne, come modifica di Minix, una variante di Unix, nel 1991.

Hello everybody out there using minix -

I’m doing a (free) operating system (just a hobby, won’t be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready.I’d like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system(due to practical reasons)

among other things). I’ve currently ported bash(1.08) and gcc(1.40),and things seem to work.This implies that I’ll get something practical within a few months, andI’d like to know what features most people would want. Any suggestions are welcome, but I won’t promise I’ll implement them :-)

Linus (torvalds@kruuna.helsinki.fi)

PS. Yes - it’s free of any minix code, and it has a multi-threaded fs.

It is NOT protable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that’s

all I have :-(.

(2)

Il file system di Linux

Come Windows e praticamente in tutti i siste- mi operativi, anche Linux organizza i files in una struttura ad albero

• In cima a tutto sta la directory radice, in- dicata con ”/”.

• Questa pu` o contenere altre cartelle oppure files. Un esempio ` e la cartella ”home” che contiene i files degli utenti.

• Le sottocartelle si indicano quindi col nome preceduto da ”/”.

• Se esiste l’utente Topolino, la i suoi file

sono nella sottocartella ”Topolino” di /home,

che viene indicata con /home/Topolino.

(3)

• Se qui c’` e il file Pluto.txt, questo file ` e in- dicato in modo univoco come

/home/Topolino/Pluto.txt. Dico che questo

` e il percorso assoluto del file.

• Se mi trovo nella cartella /home, posso in- dicare anche solo il percorso di un file re- lativo alla mia posizione: il file precedente sar` a anche Topolino/Pluto.txt

• Questa struttura si pu` o ramificare a pia- cere, ed ogni cartella pu` o contenere altre cartelle o files.

• La cartella dove mi trovo si pu` o indicare

con ”.”, quella immediatamente superiore

con ”..”

(4)
(5)

Comandi principali

Per gestire le directory (cartelle)

cd cambia directory

ls mostra i file e le sottodirectory mkdir crea una directory

rmdir cancella una directory vuota

pwd stampa a schermo la directory corrente

cd . non fa nulla

cd .. passa nella directory superiore

Per gestire i file (documenti) touch crea un file

more e less visualizzano, un po’ alla volta,

un file di testo della directory corrente mkdir crea un directory

rmdir cancella un directory vuota

rm cancella un file

cp copia uno o pi`u file mv sposta uno o pi`u file

grep trova del testo all’interno di un file

Per gestire i processi

top vede i processi attivi e il consumo di CPU ps vede i processi dell’utente

kill uccide un processo

Per ridirigere input e output

< filename leggi l’input dal file ”filename”

> filename scrivi l’output in ”filename”

(cancellando tutto il resto del file)

 filename appendi l’output alla fine di ”filename”

(6)

Uso e opzioni dei comandi pi` u comuni

- cd senza argomenti riporta nella home direc- tory, quella in cui ci si trova dopo essersi colle-

gati; per l’utente Topolino questa ` e /home/Topolino.

- cd .. sposta nella directory superiore;

- cd dir sposta nella directory di percorso rel- ativo dir;

- cd /dir sposta nella directory di percorso as- soluto dir.

- rm cancella un file solo se si ha il permesso di cancellarlo.

- more e less devono essere seguiti dal nome del file da visualizzare, che deve essere rigoro-

samente un file di testo. Esempio: more pippo.dat, less main.c.

- cp file1 dir1 fa una copia del file1 nella di-

rectory dir1.

(7)

- cp file1 file2 fa una copia di file1 di nome file2 nella stessa directory. Attenzione!! file2 potrebbe gi` a esistere e nessuno vi chiederebbe se volete proprio sovrascriverlo! se copiate pi` u file in una directory mydir e poi vi accorgete che mydir in realt` a non esiste, tutti i file saranno stati copiati in un file di nome mydir uno sull’altro:

alla fine il file mydir conterr` a solo una copia dell’ultimo file copiato; per evitare questo ed altri problemi usare l’opzione cp -i che chiede conferma prima di sovrascrivere.

- mv file1 mydir sposta file1 nella directory mydir.

- mv file1 file2 rinomina file1 file2. Valgono

in questo caso i problemi segnalati per cp con

l’aggravante che i file vengono anche cancel-

lati dalla posizioe originaria, e quindi se mydir

non esiste potreste proprio prederli! Anche qui

esiste l’opzione mv -i che ` e caldamente racco-

mandata!

(8)

Caratteri jolly (wildcards)

Nei nomi di file * indica una qualunque se- quenza di caratteri: quindi ls *.cpp elencher` a tutti i file il cui nome finisce per ”.cpp”. In- vece [aAx] indica uno dei caratteri ’a’,’A’ e ’x’.

il nome del file [bB]*.txt indica tutti i file che cominciano per ’b’ oppure ’B’, finiscono per

’.txt’ e contengono in mezzo qualunque tipo e numero di caratteri. [a-z] indica tutte le let- tere minuscole, [0 − 9] tutte le cifre, e cos`ı via.

Infine il carattere ”?” sostituisce esattamente un carattere.

Domanda: trovo in una mia cartella il file *: ` e

il caso che lo cancelli con ”rm *”?

(9)

Compilatori

Per Linux sono state scritte moltissime appli- cazioni, inclusi compilatori C, C++ e FORTRAN.

Il compilatore C ++ si chiama g++ e per com- pilare un programma bisogna dare il comando

g + + programma

E utile conoscere alcune opzioni di g + + `

-o nome stabilisce il nome del file eseguibile (a.out se non ` e specificato)

-c compila senza linkare

-Wall avverte per qualunque errore vero o presunto nel programma -O1, -O2, -O3 ottimizza sempre di pi` u

-O0 non ottimizza affatto (utile per il debugging) -lm linka con la libreria libm.

per linkare con libgsl si usa -lgsl

-g attiva il debugger.

-p attiva il profiler.

Esempio:

g++ −o prog −O2 −W all −lm main.c integra.c

(10)

Editor

Il programma deve essere scritto con un editor e non con un word processor. Buoni editor in anbiente carattere sono emacs e vi per i puristi;

negli ambienti di sviluppo integrato geany e an- juta e l’editor gedit.

E comodo imparare a usare subito i movimenti ` del cursore, pagina su e gi` u, e il “taglia, copia e incolla” che si pu` o fare col mouse ma di solito ha degli shortcut, e precisamente

CTRL-C per copia CTRL-X per taglia

e CTRL-V per incolla.

Inoltre per selezionare un’area si porta il cur-

sore all’inizio, quindi, tenendo premuto il tasto

delle maiuscole lo si sposta alla fine della se-

lezione

(11)

Come esempio, considero il programma gedit, ma molti altri programmi hanno comandi simili

• Lanciare il programma ”gedit”.

• dal menu scegliere ”File” e poi ”Open”.

• Comparir` a una finestra in cui si pu` o scegliere il file da editare: selezionarlo e scegliere

”Open”.

• Ci si pu` o muovere nel file con le freccette

oppure con il mouse.

(12)

• Per selezionare del testo si pu` o muovere le freccette tenendo premuto il tasto ”Shift”

(”Maiuscole”) oppure portare il mouse all’inizio della parte da selezionare, poi spostarlo alla

fine tenendo premuto il tasto sinistro.

• A questo punto si preme il tasto destro del mouse e comparir` a un menu dal quale si pu` o scegliere se tagliare, copiare o cancel- lare; le prime due operazioni si possono fare anche con CTRL+X e CTRL+C.

• Fatto questo, si pu` o inserire il testo se- lezionato in un’altra posizione nel file spo- standosi l` a e scegliendo ”Incolla” dal meno del tasto destro del mouse oppure premendo CTRL+V.

• si pu` o cercare del testo nel file con CTRL+F o rimpiazzando del testo con altro testo con CTRL+H.

• Finite le modifiche del file, lo si pu` o salvare

scegliendo ”File” e quindi ”Salva”.

(13)

Documentazione in Linux

Ci sono varie utility per avere informazioni sui singoli comandi Linux e sulle loro possibili opzioni.

man Si pu` o sapere tutto su un comando del sistema operativo linux con il comando man.

Ad esempio man ls mostra tutte le opzioni per avere il listato di una cartella e man grep mostra le molte possibilit` a del comando grep.

info Sono un tentativo del progetto GNU di scrivere una documentazione in forma ipertes- tuale in tempi in cui internet e il linguaggio HTML non esistevano. Sono piuttosto com- plicate da navigare, ma per fortuna oggi ` e pos- sibile visualizzarle graficamente. Il modo tes- tuale inizia comunque col comando

info comando

(14)

apropos Il comando apropos serve quando vogliamo fare qualcosa ma non sappiamo come farlo. Se avete sonno provate apropos sleep oppure apropos game se non sapete cosa fare.

cartella /usr/share/doc In questa cartella molti programmi installano i file con la doc- umentazione. Darci un’occhiata, se non si ` e soddisfatti delle altre informazioni, pu` o riser- vare piacevoli sorprese.

internet Ovviamente questa ` e la fonte di do- cumentazione pi` u completa, se non altro perch´ e comprende tutte le precedenti. Una possibilit` a

` e andare a vedere i siti www.cplusplus.com o

www.learncpp.com per il linguaggio C++ e il

sito www.nr.com per gli algoritmi numerici.

(15)

Comandi utili in Linux

• cat file.txt fa scorrere il file sullo schermo,

cat file1.txt > file2.txt sovrascrive file2.txt col contenuto di file1.txt, cat file1.txt  file2.txt appende il contenuto di file1.txt alla fine di

file2.txt;

• date mostra data e ora, date +%Y mostra l’anno a 4 cifre date +%y mostra l’anno a 2 cifre, date +%x mostra solo la data date +%X mostra solo l’ora

• cal mese anno mostra il calendario, cal anno quello di tutto l’anno;

• bc ` e un piccolo calcolatore. Introduce in

una shell, da cui si esce digitando ”quit”,

(16)

che permette di fare le operazioni +,-,*,/,sqrt(),

^ (potenza)

• chmod file agisce sui permessi dei file che sono lettura (r), scrittura (w) ed esecuzione (x), e possono essere applicati all’utente (u), al gruppo (g) o a tutti gli altri (o). I permessi possono essere aggiunti (+) tolti (-) o assegnati (=). Esiste anche un modo pi´ u compatto per assegnare i permessi u- sando i numeri;

• chown cambia il proprietario di un file: chown marcello file assegna file all’utente mar- cello. L’opzione -R applica ricorsivamente chown se invece di un file agisco su di una directory

• chgroup fa lo stesso cambiando gruppo.

Si pu´ o anche usare chown utente:gruppo

file per cambiare le due cose insieme

(17)

• cut -c 20-30 file.txt seleziona i caratteri delle colonne da 20 a 30 nel file

• head -n file.txt mostra le prime n righe (10 se ometto n)

• tail -n file.txt fa lo stesso con le ultime n

• diff file1.txt file2.txt mostra le differenza tra due file. Si pu` o anche usare con due cartelle

• df o df -h mostra l’occupazione di spazio su disco

• file miofile mostra che tipo di file ` e miofile

(di test, eseguibile, etc.)

(18)

• tar serve a creare un unico file da pi` u file per archiviarli (` e acrinmo di tape archive).

tar cvf archivio.tar file1 file2 ... unisce file1, file2... in un unico file archivio.tar.

Questo pu` o poi essere compresso, cosa che si pu` fare anche con tar cvfz archivio.tar file1 file2 .... Il contenuto dell’archivio si vede poi con tar tvf (o tzvf ) archivio.tar o espanso nuovamente con tar xvf (o xzvf ) archivio.tar

• gzip file / gunzip file.gz servono a com- primere / decomprimere un file

• find serve a trovare file con caratteriste

particolari. Ad esempio find . -name *.jpg

trova tutti i file jpg sotto la cartella cor-

rente, find ˜ -size +1000000 trova tutti i

file sotto la cartella home che hanno di-

mensione maggiore di un megabyte, find .

-mtime +2 trova tutti i file modificati da

pi` u di due giorni.

(19)

Programmazione della shell bash

La shell pu` o essere utilizzata come linguaggio di scripting. A questo scopo esistono mezzi per creare cicli, istruzioni condizionali e fun- zioni. Inoltre si possono utilizzare i comandi della shell all’interno dello script, e si possono definire piccoli script direttamente nel termi- nale.

• Istruzioni condizionali if [ condizione_1 ] then

istruzioni 1

elif [ condizione_2 ] then

istruzioni 2 else

istruzioni 3

fi

(20)

• cicli

for n in ‘seq 1 100‘ # prendo i primi 100 numeri do i=$n # li memorizzo in una variabile

let "i=i*i" # ne faccio il quadrato

echo $i # e lo stampo sullo schermo done # devo chiudere il ciclo

let i=100 # assegno il valore 100 ad i

# attenzione agli spazi

# tra "[" ed "i" e tra "0" e "]"

while [ $i -ge 0 ] do

(( i=i-1)) # lo stesso che let i=i-1 echo $i # stampa i a schermo

done # il ciclo e‘ finito

(21)

let i=100 # esegue finche’ la condizione e’ falsa until [ $i -lt 0 ]

do

echo $i

(( i=i-1 ))

done

(22)

Esercizi

Scrivere uno script di shell che

• Calcoli il fattoriale di un numero

• Calcoli la somma di n numeri

• Trovi tutti i file di testo in una directory e calcoli la somma di tutti i loro caratteri

• Verifichi che tutte le sottocartelle di una

cartella hanno il permesso di esecuzione

Riferimenti

Documenti correlati

● A gennaio 2005 hanno rilasciato sotto licenza OpenSource il proprio sistema operativo Solaris. ● Il 13 novembre ha rilasciato Java sotto

[r]

• Se mi trovo nella cartella /home, posso in- dicare solo il percorso di un file relativo alla mia posizione: il file precedente sar` a anche Topolino/Pluto.txt.. • Questa struttura

• se copiate pi` u file in una directory mydir e poi vi accorgete che mydir in realt` a non esiste, tutti i file saranno stati copiati in un file di nome mydir uno sull’altro: alla

 Per leggere dati da un file presente sul disco, Per leggere dati da un file presente sul disco, occorre dapprima costruire un oggetto di tipo occorre dapprima costruire un

Ora però si stanno preparando per la Festa della Vite che si tiene nel mese di ottobre a Borgo, dove le vie sono strette e quindi la banda sta facendo le prove in fila per 3.. A

ARCHIVIO.C Il secondo programma deve gestire un archivio di persone che vengono memorizzate in un file INI diviso in due sezioni: nella prima sezione, “Struttura” , c’è un

man  comando legge le pagine man relative a  comando info  comando legge le pagine info relative a  comando apropos  stringa cerca nel database whatis la