In questa seconda parte della guida per principianti affronteremo i primi passi all’interno di un sistema Ubuntu Linux. In particolare vedremo: come effettuare il login per entrare nel sistema, l’utilizzo della console, i comandi di base per la gestione dei file e delle directory, dei permessi; e la gestione dei processi; infine come terminare la sessione, uscire dal sistema o spegnerlo.
Prima di iniziare abbiamo bisogno di:
- un sistema Linux qualsiasi funzionante;
- in account utente per l’accesso a tale sistema;
- la password per tale “account;
Entrare nel sistema (login)
L’accesso ad un sistema Linux richiede il login che è l’operazione con la quale si specifica al sistema il proprio “account” utente e la propria “password”. Se il sistema sul quale state lavorando è stato appena installato l’account da utilizzare è root mentre alla richiesta di password bastera premere INVIO
oppure specificare la password che vi è stata chiesta durante l’installazione.
L’account root e l’equivalente di administrator in Windows NT, ovvero, l’account che ha pieni poteri sull’intero sistema. E’ buona norma, per motivi di sicurezza, evitare l’utilizzo di tale account per operazioni che non lo necessitano esplicitamente.
Attenzione anche al case delle lettere che ha importanza, ovverto alle maiuscole/minuscole. Assicuratevi che il “led” della tastiera con la dicitura “Caps Lock” sia spento prima di digitare i vostri dati. Per spegnerlo premere sul tasto corrispondente (lo trovate sulla sinistra, il primo tasto della terza fila).
In Linux il login può essere effettuato tramite interfaccia a caratteri o in modalità grafica (XDM). In modalità a caratteri, dopo il login, il sistema mostra una serie di messaggi di “fortune”, ovvero una serie di aforismi sul mondo del computer molto simpatici; in modalità grafica, invece, il sistema avvia tutte le applicazioni che avete scelto di default e vi mette a disposizione il desktop e il relativo sistema a finestre. Chiaramente per avere la console entrando tramite il login grafico dovete cercare e lanciare l’icona del “terminale”.
Se trovate il login in Linux un operazione fastidiosa è possibile configurare il sistema in modo tale che entri direttamente con un determinato account utente. Ovviamente ciò non è consigliabile su un sistema diverso da quello casalingo.
Di solito sotto DOS il prompt e "C:>"
, sotto Linux le cose possono essere molto più complicate. Il prompt più semplice di solito termina con il simbolo "$"
(per gli utenti standard), oppure con "#"
(per l’utente root).
Il prompt della shell in Linux è una cosa molto personale. Alcuni addirittura riportano l’attuale fase lunare, altri quanto tempo manca al termine dell’orario di lavoro. Il prompt di solito indica anche in che directory ci si trova all’avvio. Per gli utenti normali questa è nel percorso /home/NOMEUTENTE Se l’account è agx, la home directory sarà /home/agx . A questa regola fà eccezione root che ha “casa” in /root .
La personalizzazione del prompt non è un argomento per principianti, sappiate che la sua personalizzazione non è però complicata, basta modificare una variabile d’ambiente, chiamata PS1, con una serie di codici che visualizzano informazioni e colori a piacere.
Attenzione: per navigare all’interno del “file system” bisogna avere le giuste “permission” (permessi). Normalmente un utente non può uscire al di fuori di /home/NOMEUTENTE perchè non ne ha i permessi. Può comunque, all’interno della propria “casa”, fare qualsiasi operazione, come ad esempio, creare altre sotto-directory.
Se siete entrati come root per andare alla radice del file system digitare il comando : cd /
La Console di Linux / Utilizzo del mouse
La Console testuale di Linux
A questo punto sarete già stati presi dall’orrore perchè pensate che Linux sia molto simile all’DOS. Be vi sbagliate di molto. La vostra distribuzione non ha evidentemente configurato “xdm” che è un programma che fa partire direttamente la parte grafica di Linux (X-Window) e che mostra una graziosa dialog box per il login. Sul mio sistema la dialog box è accompagnata da una pixmap del “diavolo della tasmania” (@19xx Warner Bros) che si mangia Windows …
Se avete effettuato il login tramite terminale dovete sapere subito che Linux è dotato di molte “console virtuali”. Cioè potete avere più schermi, dove girano programmi diversi di utenti diversi. Una delle mie prime esperienze in tal senso fu quella di creare 8 utenti fittizzi con cui divertirmi a scambiare messaggi tra di loro: non male se pensate che con Windows dove buttare via tutto quello che state facendo per rifare il login con un utente diverso…
Per cambiare da una console virtuale all’altra basta premere il tasto ALT
accompagnato da un tasto funzione. La console di partenza, nel caso vi capita di perdervi, si otttiene premendo ALT
+ F1
. Le distribuzioni attuali di solito pre-configurano il sistema in modo da avere disponibile 6 console virtuali ( da F1 fino ad F6 ), ma ovviamente c’è anche ci ne usa 32 e più !
In Linux è anche possibile passare dall’ambiente grafico X-Window ad un qualsiasi ambiente terminale, similmente a come spiegato prima, premendo CTRL+ALT+F1
. Non state usando Windows, qui il sistema non lo dovete MAI riavviare. Esistono inoltre dei programmi console, come Quake 1, che fanno uso di una libreria che accede direttamente all’hardware VGA della scheda video e che fanno uso della virtual console nr. 8 . Quindi se state giocando a QUAKE potete tornare al terminale iniziale premendo ALT+F1
oppure ritornare a X-Window con ALT+F7
. Quindi per ritornare a giocare a Quake 1 premere ALT+F8
da una console virtuale oppure CTRL+ALT+F8
da X-Window. Non dovete riavviare il sistema.
Le altre console, anche se attualmente non configurate per accettare il login, possono comunque essere utilizzate per visualizzare dei risultati. Per rendervene conto digidate il comando: ls > /dev/tty12
quindi premete ALT+F12
per passare alla console virtuale nr. 12, noterete che è stato visualizzato il contenuto della directory corrente. Premere ALT+F1
per tornare indietro.
Io di solito configuro il sistema in modo tale che su /dev/tty1 non compaia il login ma bensì i log del sistema. Questo si può ottenere configurando correttamente inittab e syslogd.
Hot Keys
Alcune combinazioni di tasti possono essere molto utili in Linux, eccone alcune:
- History – con l’uso delle frecce
SU'
eGIU'
è possibile ottenere la lista di tutti i comandi precedentemente digidati; - Backscrolling – lo scrolling dello schermo indietro o in avanti si ottiene premendo
SHIFT + PAGINA SU'
oSHIFT + PAGINA GIU'
. Questo permette di vedere testo che precedentemente era sullo schermo; - Resettare lo schermo – un inconveniente della console e la visualizzazione di spazzatura sullo schermo. Questo di solito succede quando con il comando “cat” si cerca di visualizzare un file binario. La console interpreta i codice del file binario come comandi della tastiera e si imposta in strane modalità visualizzando caratteri strani. Per fissare tale incoveniente si usa il comando reset se tale comando non è presente sul vostro sistema si può fare ugualmente con la pressione della seguente combinazione di tasti:
echo, SPAZIO, CTRL + V, ESC + c, INVIO;
Ecco altri hot keys interessanti:
CTRL + c
– interrompre il programma in esecuzione;CTRL + d
– segnala la fine dell’operazione di input;CTRL + u
oppureCTRL + x
– cancella la linea attuale;CTRL + z
– mette il programma in pausa;TAB
– QUESTO E’ IL TASTO PIU’ USATO. Completa automaticamente il percorso o il nome del file digidato da tastiera;CTRL + t
– Inverte le due lettere dove si trova il cursore, utilissimo se quando si sbaglia per la troppa fretta. Esempio: ‘doro’ diventa ‘door’;Shift + Scroll Lock
– visualizza informazioni sulla memoria;AltGr + Scroll Lock
– visualizza lo stato dei registri;Ctrl + Scroll Lock
– visualizza lo stato del sistema;AltGr + Fn
– Passa alla console virtualw “n”+12;Alt + RightArrow
– Passa alla console virtuale successiva;Alt + LeftArrow
– Passa alla console virtuale precedente;AltGr + PrintScreen
– Passa all’ultima console virtuale;
Utilizzo del mouse
Se è attivo il “daemon” (demone,servizio) “gpm” è possibile effettuare operazioni di “cut & paste” di testo tra le varie control virtuali. Premere il tasto sinistro del mouse e tracinarlo per selezionare il testo da copiare, quindi posizionarsi sul punto “x” e premere il tasto destro per incollare il testo.
Al lupo, al lupo
Ci sono molti modi per ricevere aiuto circa un determinato comando. Provate con i seguenti comandi:
nome_comando -h
nome_comando --help
help
help
-nome_comandodhelp
-cerca all’interno della documentazione Debiandhelp
-cerca nella documentazione RedHatman
-nome_comando visualizza la pagine di manualeapropos
-nome_comando cerca un determinato argomentowhatis
-nome_comando ricerca nel manuale della guida per una parolainfo
– consultazione dei documenti relativi a prodotti GNU
I comandi di base sono di solito documentati tramite l’uso di “man”, se lo avete lanciato premete il tasto "q"
per chiudere la pagina.
Il File System Linux
Prima di spiegare i comandi per l’utilizzo del file system è necessarrio introdurre prima i concetti sui quali si basa il file sistem Unix rispetto al classico DOS:
- nello scrivere un percorso (path) si usa la slash
"/"
(come quando scrivete un indirizzo internet) e non la back-slash"";
- sotto DOS i nomi dei file sono nella forma 8.3 ( PROVATES.TXT ); in Linux si possono usare nomi di file lunghi più di 255 caratteri e con più caratteri punto
"."
all’interno del nome. Es: Questo_e.un.nome-di.file-molto_lungo; - caratteri maiuscoli e minuscoli rendono due file differenti anche se hanno lo stesso nome. Quindi NOMEFILE.tar.gz è nomefile.tar.gz sono differenti;
- i nomi dei file non sono collegati in alcun modo ad estensioni particolari. Ad esempio un file eseguibile non deve avere estensione .COM, .EXE o .BAT ma per essere eseguito deve avere solo le giuste “permission”;
- in Linux i file eseguibili sono di solito marcati con un asterisco
"*"
dai programmi che visualizzano l’elenco di una directory; - sotto DOS i file di backup terminano con l’estensione .BAK, in Linux invece terminano con una tilde
"~";
- in Linux un nome di file che inizia con un punto
"."
è considerato “hidden” (nascosto/invisibile); - Il passaggio dei parametri a un comando in DOS avviene mediante l’uso della slash
"/"
mentre in linux si usa il segno meno"-"
singolo o doppio"--"
. E da notare che alcuni famosi programmi DOS (PKZIP e ARJ) usano già questa sintassi Unix;
Struttura delle directory
Il dos/windows automaticamente monta tutte le unità (floppy, hard-disk, cd-rom) usando le lettere dell’alfabeto come c:
, d:
, ecc. In Linux il disco principale contenente il “ROOT FileSystem” viene montato sotto la root directory, cioe "/"
. Gli altri file system, come cdrom e connessioni di rete possono essere “montati” in qualsiasi parte dello stesso, anche se lo standard dice che dovrebbero stare in una sottocartella del percorso "/mnt"
.
Guardando sotto "/"
noterete una serie di cartelle di difficile interpretazione, tutto però ha una logica ben precisa. Linux è uno Unix ed è stato quindi creato come sistema multiutente. Le directory di primo livello /bin, /sbin, /root contengono i programmi necessari all avvio del sistema in modalita singola utente (solo amministratore). Le directory di secondo livello /usr/bin, /usr/sbin contengono tutti i programmi che possono essere eseguiti dagli utenti dalla macchina e non solo dall’amministratore. Gli utenti hanno una loro cartella personale sotto il percorso /home dove possono fare tutto quello che vogliono. Infatti l’utente “pluto” può compilare ed usare una sua versione dei programmi in /home/pluto/bin da /home/pluto/src. Infine /usr/local / e usata per preparare software da usare localmente.
Gestione delle Directory
Questi sono alcuni dei comandi per la gestione delle directory:
- ls – elenca i file contenuti in una directory, cioè DIR;
- cd – come in DOS serve a cambiare la directory corrente;
- md – crea una sottodirectory, come MKDIR in DOS;
- rd – rimuove una sottodirectory, come RMDIR in DOS;
- cp – copia file o sottodirectory, come COPY in DOS;
- mv – muove o rinomina una sottodirectory, come MOVE in DOS;
- rm – rimuove file o sottodirectory, come DEL in DOS;
- pwd – restituisce il nome del percorso della cartella/directory corrente;
- du – dà indicazione sullo spazio usato dai file;
- df – dà indicazione sullo spazio libero sui dischi;
Ecco alcune delle wildcard usate nei comandi Linux che manipolano files o directory:
- “;” Permette di inserire più comandi in successione sulla stessa riga. Esempiop: ls /bin ; ls /sbin ; ls /tmp
- “&” Esegue un comando in background. Esempio: httpd &
- “|” pipe, concatena il risultato di un comando a quello successivo
- “#” commento
- “” indica alla shell che il comando che si sta scrivendo continua sulla riga successiva.
- “$” indica una variabile di sistema. Esempio: $PATH=/bin:/sbin
- “?” wildcard (un carattere qualsiasi ma solo in quella posizione) Esempio: /bin/c?t
- “*” wildcard (qualsiasi carattere tranne i file nascosti) Esempi: “ls gcc*” o “ls *.rpm” o “ls lib*.so.*”
- “.*” wildcard (come ‘*’ ma include anche i file nascosti)
- “[Cc]” wildcard (solo i caratteri specificati ed in quella posizione) Esempio: “
ls
[Cc]at
“, cerca per i files “Cat” e “cat”
Elencare il contenuto di una directory
Il comando “ls” ha la seguente sintassi: ls "opzioni" "percorso".
Le opzioni principali sono:
- “-a” elenca tutti i file includendo sottodirectory e file nascosti;
- “-d” mostra solo le directory;
- “-k” mostra le dimensioni in kilobyte;
- “-l” visualizza informazioni addizionali come le permission, le dimensioni e le date;
- “-o” utilizza colori diversi per i file e le directory;
- “-R” recurse subdirectory, come DIR /S in DOS;
- “-S” ordina i file secondo le dimensioni;
- “-t” ordina i file secondo la data di modifica;
- “-X” ordina i file per estensione;
Se il risultato del comando “ls” supera le dimensioni dello schermo, è possibile usare la sintassi (equivalente a DIR /P in DOS): "ls | more"
per visualizzare il risultato una pagina alla volta.
Il comando cd funziona come in DOS, tranne che in Linux si hanno due possibilità di utilizzo particolari:
- “cd -“, annulla l’ultimo comando “cd” ritornando alla precedente directory;
- “cd ~”, posiziona la shell nella home directory dell’utente attuale;
Completamento automatico del Path
Se la shell che state utilizzando è bash vi potrà tornare molto utile la feature del “completamento automatico del path” (Path Completion). In pratica mentre nella shell si sta digitando il nome di un percorso o di un file, la pressione del tasto TAB
provoca il completamento automatico. Se ciò non è possibile perchè il nome digidato corrisponde a più di una combinazione verrà emesso un segnale di beep dopodichè un’ulteriore pressione del tasto TAB
provoca la visualizzazione di tutti i file che corrispondono alla stringa sinora digidata. Molto spesso l’autore utilizza questa feature per visualizzare il contenuto di una directory. Ad esempio se sto cercando di visualizzare un file di cui non ricordo il nome nella mia home directory. Posso digitare: cat /home/agx e quindi premere due volte TAB
per ottenere tutti i file della directory senza dover richiamare prima il comando ls. Posso poi digitare il nome del file desiderato senza dover riscrivere il comando "cat"
.
Il comando md
è usato per creare directory. La sintassi è md /directory
.
Il comando rd
(o rmdir
) , invece, rimuove una directory che deve essere già stata svuotata da tutti i file. La sintassi è rm /directory
.
Il comando du
visualizza lo spazio usato dalla directory, non quanto spazio è libero. La sintassi è : du {-a} {-s} {-m}
- “-a” visualizza l’uso dello spazio per tutti i file del percorso specificato
- “-s” visualizza l’uso dello spazio totale solo per il percorso specificato
- “-m” visualizza le informazioni in Megabytes
Il comando df
visualizza lo spazio libero sui dischi del sistema. Esempio: df -h
Permessi Utente
Lanciando il comando “ls -al
” noterete che visualizza le directory ed i file in un formato esteso rispetto allo standard, questo include informazioni sulle permission e l’ownership.
Ecco come appare:
drwxr-xr-x 2 dosuser dos 256 Apr 28 15:40 ./ drwxr-xr-x 15 dosuser dos 928 Apr 28 14:50 ../ -rw-r--r-- 1 dosuser dos 20 Apr 28 16:05 .bash_history -rw-r--r-- 1 dosuser dos 6993 Oct 5 16:01 _bhist -rw-r--r-- 1 dosuser dos 1150 Apr 28 15:55 _blogin -rw-r--r-- 1 dosuser dos 40 Dec 30 1996 _blogout -rw-r--r-- 1 dosuser dos 1131 Dec 31 1996 _inputrc -rwxr-xr-x 1 dosuser dos 220 Nov 8 1996 man2txt.sh*
Il primo campo sono le permission. Sono nella forma: ‘drwxrwxrwx’, quando uno di questi flag non è presente è indicato con ‘-‘. Il flag ‘r’ indica che il file è leggibile. ‘w’ che è scrivibile ed ‘x’ che è eseguibile.
Il primo flag ‘d’ indica se il file è una directory. Diversamente ‘-‘ indica un file normale mentre ‘l’ signiifca che il file è un link ad un’altro file. La prima serie di ‘rwx’ sono riferite alle permissione che ha l’owner’ (il padrone) del file che è il nome indicato nella terza colonna (dosuser). La seconda serie di ‘rwx’ sono le permission che ha il gruppo sul file. Il gruppo è indicato alla 4a colonna (dos). La terza serie di ‘rwx’ sono le permission che hanno tutti gli altri utenti su quel file.
Un utente che crea un file con permission '-rw---'
, sarà l’unico ad avere accesso a quel file. E’ da notare che le permission per la directory ‘./’ corrispondo alle permission che ha la directory corrente. Ricordatevi anche che i file nascosti sono quelli che iniziano con un punto, e che per essere visualizzati bisogna usare l’opzione -a con il comando “ls”.
Come vengono applicate le permission ?
Le permission assegnate ad un file dipendono innanzitutto dalle permission della directory dove è situato il file. Un file pubblico (“-rwxrwxrwx”) non può essere visto da tutti se le permission della directory sono “-rwx–“. Un utente per accedere ad i file di una directory deve avere i permessi di lettura (r) ed esecuzione (x) su di essa e di lettura (r) ed esecuzione (x) sul file.
Come creare Link Simbolici
Unix ha un tipo di file che non esiste in DOS: il link simbolico. In pratica si tratta di un puntatore ad un file o a una directory; semplicisticamente potremmo dire che un link simbolico è molto simile agli “shortcuts” di Windows però può essere utilizzato direttamente nei comandi. Esempi di link simbolici sono /dev/modem .
Come creare link simbolici è un operazione semplice, si usa il comando: ln -sf
Esempio: ln -s /usr/doc/g77/DOC g77manual.txt
Comandi per la gestione dei file
Questi sono i comandi per la gestione dei file :
- cp – COPY
- rm – cancella un file, i.e. DEL
- rm -R – con l’opzione -R funziona come il comando DOS “DELTREE”
- mv – muove/rinomina un file
- cat – visualizza un file, come TYPE
- more – visualizza un file ma una pagina per volta
- less – come “more”
Il comando di copia, cp ha la seguente sintassi: cp "options" source_file target_file
Le opzioni più usate sono:
- “-i” chiede conferma prima di sovrascrivere un file
- “-r” copia anche le sottocartelle (ricorsivamente)
- “-a” si comporta allo stesso modo di XCOPY
- “-f” sovrascrive file già esistenti senza chiedere conferma
Il comando di rimozione, rm ha la seguente sintassi: rm "options" "elenco di file e directory da cancellare"
Utili opzioni sono:
- “-i” chiede conferma prima di cancellare un file
- “-r” rimuove un’intera directory
- “-R” rimuove una directory e tutte le sottocartelle
Il comando mv ha la seguente sintassi: mv "options" old_file_or_dir_name new_directory_name]/[new_file_name
Il comando cat
semplicemente visualizza tutti i file elencati sulla linea di comando, ed è per questo usato per “concatenare” diversi file, ad esempio: cat pippo pluto paperino > topolinia
L’opzione “-n” di cat è usata per numerare le righe mentre vengono visualizzate.
“more” e “less” visualizzano una pagina per volta il file specificato sulla riga di comando oppure inviato tramite pipe. Esempi: cat pippo | more
equivalente di more pippo
Utili tasti da tenere in mente sono:
INVIO
per avanzare di una rigaSPAZIO
per avanzare di una paginap
per tornare indietro di una paginaq
per uscire dal programma.
Eseguire programmi …. pardon, processi
Per eseguire un programma basta digitare il suo nome e premere INVIO. Se la directory dove è incluso il programma non è presente all’interno del PATH di ricerca il sistema fallirà a trovare il programma che non sarà eseguito anche se si trova nella stessa directory in cui si trova il prompt della shell. Per ovviare a ciò indicare il nome del percorso del programma oppure ./nome_programma se si trova nella directory attuale.
Ad esempio se volete aprire un’applicazione Ubuntu come FireFox dovrete prima scovare dove si trova, ad esempio lanciando “whereis firefox
” che ritornerà il risultato /usr/bin/firefox
.
A questo punto digitando /usr/bin/firefox
e premendo INVIO il programma finalmente si aprirà.
Concatenare Programmi
Su una stessa riga possono essere eseguiti più programmi, basta separarli con “;”. Esempio: ls /bin ; ls /root
Se una linea di comando è troppo lunga per stare su una sola riga, si puo usare il carattere “” per “andare a capo”. Il sistema visualizzare il prompt "continue>"
per indicare che è possibile continuare a digitare il comando precedente.
Se si vuole eseguire un programma solo se il programma precedente è terminato con successo basta separarli con i caratteri “&&”. Esempio: cp /etc/passwd /tmp/grabbed_passwd_file && cat /tmp/grabbed_passwd_file
Eseguire processi in background
Per eseguire un processo in background basta aggiungere il simbolo “&” alla fine della riga di comando. Esempio: pppd &
La shell ritornera un codice del tipo:
[1] 123
che identifica il numero assegnato a tale “job” (cioè 1 ) e il numero del PID (123) assegnato al processo.
Eseguire processi in background è molto utile, si può formattare un disco, zippare molti files oppure lanciare una stampa molto grande allo stesso tempo, sempre avendo il prompt dei comandi a piena disposizione.
Fermare un processo
Basta premere CTRL + c
.
Monitorare i processi
Per vedere la lista dei processi utenti basta usare il comando ps Per poter vedere TUTTI i processi del sistema si usa la sintassi: ps -ax
Jobs, Backgrounds and Foreground
I processi che girano in background sono chiamati jobs, forse per un antica eridità del VMS. Alcune cose utili da sapere:
- Per sospendere un processo che gira in foreground premere:
CTRL + z
- Per riavviare un processo sospeso, ma in background:
bg
- Per vedere la lista dei jobs attivi:
jobs
- Per portare un processo sospeso e riavviarlo in foreground:
fg
fg
Terminare un processo in esecuzione
Alcuni processi non possono essere fermati con CTRL + C e vanno quindi “killati” (uccisi). Per uccidere un processo si usa la sintassi: kill
Molto spesso se un processo non ne vuole sapere di “morire” si può mandargli direttamente altri tipi di segnale, la sequenza che di solito si usa è:
kill -15 kill -9
Spegnere il sistema
Reboot Veloce
Basta premere CTRL+ALT+CANC
se si è in modalita testo. Altrimenti uscire prima dall’X-Window con CTRL+ALT+BACKSPACE
La sintassi correttà per fermare o riavviare il sistema è: shutdown "opzioni" now
Con l’opzione “-h” si ferma il sistema, mentre con “-r” si effettua un reboot.
Uscita temporanea
Si puo lasciare accessa la macchina, Linux spegnerà autoticamente il monitor e renderà lo schermo nero. Però dovrete uscire dai terminali nei quali siete entrati usando il comando “exit” oppure “logout”.
Cambiare utente al volo
In ogni momento è possibile lavorare con un nuovo utente per mezzo del comando su Per usarlo digitare: su nome_nuovo_utente quando avete finito usate “exit” per ritornare all’utente precedente. Ovviamente potete fare il login con più utenti diversi !
Questo e’ tutto per ora. Per una guida completa di Linux cercate in rete gli ‘Appunti Linux’, è il miglior manuale possibile (oltre 2000 pagine).