Sommario
Estratto
Anche se le interfacce grafiche di Linux stanno assumendo un'importanza crescente, usare il mouse non è sempre il modo migliore per eseguire le operazioni di ogni giorno. E anche se le interfacce ed i programmi di Linux diventano sempre più semplici e sono ora in grado di offrire un gran numero di opzioni, la flessibilità e l'efficienza della riga di comando restano ancora imbattute. Nella prima parte di questo capitolo, vi spiegheremo come gestire la cosiddetta “shell Bash”, passando poi a illustrare il concetto dei diritti dell'utente su Linux. Il capitolo si conclude con una lista dei comandi fondamentali e con un'introduzione all'editor di testo vi.
Le righe di comando, come la shell, hanno il grande vantaggio di permettere la gestione di un intero sistema persino su computer non più nuovissimi e che non dispongano delle risorse necessarie a supportare un ambiente grafico. In questo caso, infatti, si utilizzano le console virtuali. Di console virtuali, ce ne sono ben sei, tutte in modalità testo. Per passare da una console all'altra, usate le combinazioni di tasti Alt-F1 fino a Alt-F6. Esiste anche una settima console, ma è riservata all'ambiente grafico X11.
Nella barra delle applicazioni di KDE, troverete un'icona raffigurante un monitor con una conchiglia shell. Cliccate su quest'icona e si aprirà la finestra della console, nella quale potete inserire i comandi. Questa shell è di solito una Bash (Bourne again shell). La Bash è stata sviluppata nell'ambito del progetto GNU. Una volta aperta la shell, vedrete nella prima riga il prompt. Esso è costituito generalmente dal nome dell'utente e dal nome del computer come pure dal path attuale, ma può anche venire configurato in base ai propri gusti. Quando il cursore si trova dietro questo prompt, potete inviare i comandi direttamente al sistema del vostro computer.
I comandi che potete immettere nella console sono costituiti da diverse parti. Essi iniziano sempre con la parola di comando, a cui seguono i parametri o le opzioni. Ogni comando viene eseguito solo quando premete Invio. Prima di premerlo, potete modificare senza problemi la riga di comando, aggiungendo qualsiasi altra opzione oppure correggendo eventuali errori di battitura. Uno dei comandi usati più spesso è ls , che potete usare da solo oppure accompagnato dai cosiddetti “argomenti”. Se immettete nella console solo ls, vi verrà mostrato il contenuto della directory in cui vi trovate.
Le opzioni sono precedute da un trattino. Se immettete il comando
ls -l, vi verrà mostrato il contenuto
della stessa directory, ma in forma estesa. Accanto al nome dei file,
apparirà anche la data nella quale è stato creato il file, la grandezza del
file in byte ed altri dati di cui parleremo più avanti. Una delle opzioni
più importanti in assoluto e disponibile per molti comandi è l'opzione
--help. Se digitate, ad esempio, ls
--help, otterrete una lista di tutte le opzioni del comando
ls.
Con il comando ls, potete farvi mostrare anche altre
directory: basta aggiungere al comando la directory che desiderate
visualizzare, come parametro. Quindi, il comando per visualizzare il
contenuto della sottodirectory Desktop, ad esempio,
sarà ls -l Desktop.
Per poter lavorare in modo efficiente con la shell, è necessaria la
conoscenza della struttura dei file e delle directory sotto Linux. Le
directory sono cartelle elettroniche al cui interno vengono archiviati file,
programmi e sottodirectory. La directory più alta nella gerarchia è la
directory root, alla quale potete accedere con
/. Da qui è possibile raggiungere
tutte le altre directory.
Nella /home directory si trovano le directory personali
dell'utente. La Figura 19.1, “Esempio di un albero di directory di Linux”
mostra l'albero standard delle directory su Linux, con le home directory
degli utenti xyz, linux e tux. L'albero delle directory del vostro
sistema Linux è diviso funzionalmente (secondo lo schema dello standard file
system). Per una breve descrizione delle directory di Linux, consultate la
tabella:
/
la directory root root directory, inizio dell'albero delle directory.
/home
le directory (private) degli utenti.
/dev
i file di dispositivo che rappresentano i componenti hardware
/etc
importanti file per la configurazione del sistema.
/etc/init.d
Script per il boot.
/usr/bin
comandi accessibili a tutti.
/bin
comandi necessari per l'avvio del sistema.
/usr/sbin
comandi riservati all'amministratore del sistema.
/sbin
comandi riservati all'amministratore del sistema e necessari per l'avvio del sistema stesso.
/usr/include
file header per il compilatore C.
/usr/include/g++
file header per il compilatore C++.
/usr/share/doc
diversi file di documentazione.
/usr/share/man
la documentazione del programma.
/usr/src
i file sorgente del software di sistema
/usr/src/linux
i file sorgente del kernel.
/tmp, /var/tmpfile temporanei.
/usr
contiene tutte le applicazioni.
/var
file di configurazione (p.e. quelli collegati da
/usr).
/var/log
file di protocollo.
/var/adm
amministrazione del sistema.
/lib
librerie condivise (per programmi collegati in modo dinamico).
/proc
il file system dei processi.
/sysfile system del “system” in cui sono raccolte per il kernel tutte le informazioni riguardanti i dispositivi
/usr/local
estensioni locali, indipendenti dalla distribuzione.
/opt
software opzionale, sistemi più voluminosi (come KDE, GNOME, Netscape).
Sono due le funzioni della shell che possono enormemente facilitarvi il lavoro:
Se desiderate riutilizzare un comando già immesso in precedenza, premete il tasto ↑, finché non vi venga mostrato il comando che state cercando; per cercare in avanti, premete il tasto ↓. Per editare le righe di comando, muovetevi con i tasti cursore fino ai punti da correggere e rielaborateli. Con Ctrl-R potete eseguire delle ricerche nello storico.
La funzione di espansione – Per completare il nome di un file che sia già chiaramente identificabile, dopo averne digitato solo le prime lettere. Premete poi il tasto Tab. Se esistono più file con le stesse lettere iniziali, ne otterrete un'elenco premendo due volte il tasto Tab.
Ora sapete come è fatto un comando, quali sono le directory di SUSE LINUX e come facilitarvi le cose con l'aiuto della bash. Ora, potete mettere alla prova le vostre conoscenze con un piccolo esercizio:
Aprite una console cliccando sull'icona della conchiglia.
Immettete il comando ls. Ora vedete il contenuto della vostra home directory.
Usate il comando mkdir make
directory
per creare una nuova sottodirectory col nome prova.
Digitate mkdir prova.
Aprite l'editor Kate, premendo
Alt-F2 ed inserendo kate.
Si apre una finestra: digitate
qualcosa e salvate il file con il nome Filediprova (con la F maiuscola,
poiché Linux differenzia maiuscole e minuscole).
Ora controllate nuovamente il contenuto della vostra home directory.
Tuttavia, invece di inserire di nuovo il comando ls,
premete due volte ↑. Adesso, al prompt, troverete di
nuovo ls: date l'Invio per far
eseguire il comando. Appare ora la nuova directory
prova in blu ed il file di prova in nero (le
directory vengono sempre scritte in blu ed i file in nero). Queste
caratteristiche cromatiche permettono di distingure tra directory
e file in una console.
Il nostro file di prova verrà ora spostato nella sottodirectory
prova tramite il comando mv
(move)
. Per non stare a riscrivere tutte le righe, usate la cosiddetta funzione
di espansione: digitate mv F e premete
Tab. Se, in questa directory, non vi sono altri file che
iniziano con la F, la shell aggiunge la stringa di caratteri
ilediprova. Altrimenti, aggiungete un altro paio di
lettere e premete il tasto tabulatore. Mettete uno spazio alla fine,
scrivete prova e premete Invio per
spostare il file.
Se ora immettete il comando ls, non vedrete più il file di prova.
Per controllo, usate il comando cd prova
change directory
per spostarvi nella directory prova. Se immettete il
comando ls, vedete il contenuto di
prova. Inserendo cd
change directory, passerete di nuovo nella
vostra home directory.
Supponiamo che il file sia talmente importante che ne volete una copia. In tal caso, usate il comando cp copy. Immettete cp Filediprova Copiadellaprova. Il comando ls vi mostrerà ora entrambi i file.
Per lavorare con un file o una directory, è importante conoscerne il path.
Tuttavia, non è sempre necessario specificare il path completo (assoluto)
dalla directory sorgente al file che si cerca: potete infatti cominciare
semplicemente dalla directory in cui vi troviate. In questo caso, si parla di
un path relativo.
Inoltre, potete chiarmare la vostra home directory semplicemente con il
segno ~. Questo significa che potete raggiungere il file
Test nella directory test con un
path relativo, digitando ls test, oppure con un path
assoluto, digitando ls ~/test.
Per accedere alla home directory di altri utenti, inserite ls
~nomeutente. Nel nostro caso, possiamo prendere come esempio
l'utente tux. Il comando
ls ~tux ci mostrerà quindi il contenuto della home
directory dell'utente tux.
La directory in cui vi trovate è rappresentata da un punto, il livello immediatamente superiore con due punti. Immettete ls .. per vedere il contenuto della directory genitrice della directory in cui vi trovate. Immettendo ls ../.., potete vedere il contenuto della directory due livelli più in alto nella gerarchia delle directory.
Un altro esempio vi mostrerà come potete muovervi nell'albero delle directory del vostro sistema SUSE LINUX.
Con cd, passate alla vostra home directory e create una
sottodirectory test2 con il comando mkdir
test2.
Usate il comando cd prova2 per passare a
prova2 e create una nuova directory di nome
sottodirectory. Per entrare ora nella sottodirectory,
usate la funzione di espansione. Immettete cd so e
premete Tab: la parola verrà completata.
Vi trovate ora nella sottodirectory e volete spostare
il file preparato in precedenza Copiadellaprova in
questa directory. Non c'è bisogno di spostarsi nella directory
prova; basta solo che indichiate il path relativo al
file necessario. Dovete immettere mv ../../prova/Copiadellaprova
. (non dimenticate il punto alla fine; questo indica che la
vostra directory attuale sarà la destinazione del comando
mv). Nel nostro esempio concreto si tratta della
directory di nome sottodirectory. Con i due punti,
salite di volta in volta di un livello nella gerarchia della directory. In
questo caso, ../.. indica la vostra home directory
nella quale si trova la directory prova.
Un'altro vantaggio della shell sono i caratteri jolly (o "wildcard"). Nella bash, esistono quattro diversi caratteri jolly.
Sostituisce esattamente un carattere arbitrario.
Sostituisce un numero qualsiasi di caratteri.
Sostituisce esattamente un carattere appartenente al gruppo di caratteri indicati fra parentesi quadre, rappresentato qui dalla stringa set.
Sostituisce esattamente un carattere qualsiasi ad eccezione di quelli indicati in set.
Supponiamo che la vostra directory test contenga i file
Filediprova, Filediprova1,
Filediprova2 e date; se immettete
il comando ls Filediprova?, vi verranno mostrati i file
Filediprova1 e Filediprova2. Con
ls File*, vi verrà mostrato anche il
Filediprova.
ls vi mostra tutti i file di esempio. Usate il carattere
jolly set per indicare i file il cui ultimo
carattere è un numero: ls Filediprova[1-9].
Il carattere jolly più potente è sempre l'asterisco (*). Usandolo, potete
risparmiarvi molto lavoro di battitura. Potete, per esempio, copiare tutti i
file della directory prova nella sottodirectory di
prova con il comando cp *
sottodirectory. Potete usare i caratteri jolly anche per
cancellare, ma in questo caso dovete sempre sapere esattamente cosa state
facendo. Il comando rm *date* cancella tutti i file nella
vostra directory prova il cui nome contenga la sequenza
di caratteri date.
Vi sono due piccoli programmi che vi permettono di aprire i file di testo
direttamente nella shell, senza bisogno di avviare un editor. Per aprire un
file Readme.txt, per esempio, immettete semplicemente
less Readme.txt. Nella console vi verrà mostrato il testo
del file. Con Spazio andate avanti di una pagina; potete
però anche usare i tasti Pag Sù e Pag
Giù per muovervi avanti e indietro nel testo. Per chiudere il
programma less, premete q.
Oltre a less, vi è anche more, nato prima e un pò meno pratico di less, poiché non vi permette di sfogliare in avanti e indietro.
Il nome del programma less deriva dal gioco di parole inglese, more is less (“a volte, meno è meglio”). È un programma da usare non solo per leggere file di testo, ma anche, per esempio, per farsi mostrare l'output dei comandi; consultate a proposito il paragrafo Sezione 19.1.7, “Pipeline”
L'output della shell viene normalmente visualizzato sullo schermo, ovvero nella finestra della console, mentre l'input, sarebbe a dire l'immissione dei comandi, avviene sulla tastiera. Per visualizzare l'output di un comando con un programma come less, invece, si usa una pipeline (“incanalatura”).
Per visualizzare i file nella directory test, immettete
il comando ls test | less. Sulla tastiera italiana, il
carattere | (barra verticale o
"pipe") si trova si trova in alto a sinistra. Il contenuto della directory
test viene ora visualizzato con il programma
less nella console. Questa funzione vi serve
quando l'output di ls è troppo complesso per stare in una
console. Ad esempio, provate a visualizzare dev con
ls /dev: la finestra vi mostra solo una piccola parte del
contenuto della directory, mentre, con ls /dev | less,
potete farvi elencare contemporaneamente tutti i file che contiene.
Alla fine, per memorizzare l'output di un comando in un file a parte,
digitate, nel caso del nostro esempio: ls test >
Contenuto. Otterrete il nuovo file Contenuto, che conterrà i
file e le directory di test. Per visualizzare il file
Contenuto, digitate poi less Contenuto.
Viceversa, per usare il nome di file come parte di un comando, procedete come segue: cominciate con il mettere le righe del testo del vostro file "Test" in ordine alfabetico, con il comando sort < Testfile. Sullo schermo, compare l'output del comando sort, con il testo che avete appena scritto ordinato secondo le iniziali di ogni riga. Con questo comando potete, ad esempio, ordinare una lista di nomi compilata senza criterio.
Per salvare poi questa lista in un file a parte, “incanalate”
l'output del comando sort in un nuovo file. Ad esempio,
aprite un editor e compilate una lista di nomi. Memorizzate questa nuova
lista con il nome lista nella directory
test. Entrate quindi nella directory test ed immettete il comando sort <
lista_non_ordinata > list_ordinata. Quindi, visualizzate
la lista ordinata con less.
Anche gli errori vengono normalmente segnalati sullo schermo. Se desiderate
incanalare i messagi di errore in un file di nome Errori, aggiungete al
comando: 2> Errori. Se, invece, aggiungete
>& Output, sia l'output che i messaggi di errore
verranno rediretti nel file Output. Se, al posto di un
solo >, ne usate due
(>> ), l'output viene incanalato in un file
già esistente e non in uno a parte.
Ora che avete già creato alcuni file e directory, passiamo all'argomento
dell'archiviazione e della compressione dei dati. Supponiamo che vogliate
impacchettare in un file tutta la directory prova per
poterla memorizzare su dischetto come copia di sicurezza oppure per spedirla
via posta elettronica. Usate quindi il comando tar
tape achiver. Con tar
--help potete guardare tutte le opzioni del comando
tar; qui vi spieghiamo le più importanti:
create crea un nuovo archivio
table mostra il contenuto di un archivio
extract spacchetta l'archivio
verbose durante l'impacchettamento mostra tutti i file sullo schermo
file permette di scegliere un nome di file per il file dell'archivio. Questa opzione deve sempre venire indicata per ultima, cioè, prima del nome da dare all'archivio.
Per impacchettare la directory prova con tutti i suoi
file e le sottodirectory in un archivio di nome Prova.tar, abbiamo bisogno
delle opzioni -c e -f. Poiché vogliamo
seguire il procedimento di archiviazione, immettiamo anche l'opzione
-v (che in caso contrario non sarebbe necessaria). Per prima
cosa, usate cd per passare alla vostra home directory al
cui interno si trova la directory prova. Ora immettete
tar -cvf Prova.tar prova. Ora controllate il contenuto del
file dell'archivio con tar -tf Prova.tar. La directory
prova con tutti i file e le directory rimane invariata
sul vostro disco rigido. Per spacchettare l'archivio, immettete tar
-xvf Prova.tar. Non fatelo ancora, perché prima vogliamo
comprimere il file dell'archivio per risparmiare spazio.
Per la compressione è consigliabile il comune programma
gzip
Immettete gzip Prova.tar. Se ora immettete
ls, vedete che il file Prova.tar è
sparito e che al suo posto esiste un file Prova.tar.gz.
Questo file è molto più piccolo ed è quindi più adatto per essere spedito
per posta elettronica; inoltre occupa meno spazio su un dischetto.
Ora ritorniamo allo spacchettamento. Questa volta, però, lavoriamo nella
directory prova2 che avevate creato prima. Per farlo,
usate cp Prova.tar.gz prova2 per copiare il file
dell'archivio nella directory prova2. Immettete ora
cd prova2. Per decomprimere unzip
un file .tar.gz, usate il comando gunzip.
Dovete immettere gunzip Prova.tar.gz. Ora avete di nuovo un file Prova.tar.
Adesso dovete solo spacchettare l'archivio con tar -xvf
Prova.tar.gz. Se immettete il comando ls,
troverete una nuova directory prova con lo stesso
contenuto della vecchia directory prova, nella vostra
home directory.
Gli mtools sono un set di comandi per lavorare sui file
system dell'MS-DOS, il che è importante quando si lavori con lettori di
dischetti.Come su MS-DOS, potete accedere al lettore identificandolo con
a:. I comandi sono poi gli stessi
di MS-DOS, tranne che per il fatto che vi anteporrete una
m:
mostra il contenuto del dischetto nell'unità a:
copia il file Filediprova sul dischetto
cancella Filediprova su a:
formatta il dischetto ad alto livello; per far ciò il dischetto deve essere già stato formattato a basso livello con il comando fdformat /dev/fd0h1440 oppure doveva essere già formattato
a: diventa la vostra directory corrente
crea la sottodirectory prova sul dischetto
cancella la sottodirectory prova dal dischetto
In questo rapido corso, avete ricevuto le cognizioni di base per l'uso della shell. Per tenere sempre in ordine la vostra home directory, ricordatevi di cancellare tutti i file e le directory di prova con i comandi rm e rmdir. Il capitolo si chidue con un elenco dei principali comandi ed una loro breve descrizione.