La linea di comando è il modo più diretto per impartire dei comandi al sistema. Se utilizzate la linea di comando di GNU/Linux vi accorgerete presto che è molto più potente e flessibile di qualsiasi prompt dei comandi che possiate aver utilizzato in passato. Questo perché essa offre accesso diretto non solo a tutte le applicazioni X, ma anche a migliaia di programmi che operano in modalità console (invece che in modalità grafica) e che non hanno un equivalente grafico, programmi che spesso dispongono di numerose opzioni, combinabili fra di loro, che non sono accessibili (per lo meno non ancora!) sotto forma di menu o pulsanti.
Ma, ammettiamolo, per iniziare ci vuole un po' di aiuto. Questo è lo scopo del presente capitolo. La prima cosa da fare, se utilizzate KDE, è lanciare un emulatore di terminale. C'è un'icona che lo indica chiaramente nel pannello (Figura 2-3).
Ciò che vedete in questo emulatore di terminale quando lo lanciate è una shell: questo è il nome del programma con cui interagite. Vi troverete davanti al prompt:
[pingusa@localhost pingusa]$ |
Questo presuppone che il vostro nome utente sia pingusa e che il nome del vostro computer sia localhost (il che in genere corrisponde alla realtà, se se la vostra macchina non fa parte di una rete). Tutto ciò che compare dopo il prompt è quello che dovrete digitare. Notate che quando siete root, il simbolo $ del prompt diventa un # (questo è vero soltanto nella configurazione standard del sistema, dato che con GNU/Linux potete personalizzare questi dettagli). Il comando per "diventare" root dopo aver lanciato una shell come utente normale è su:
# Digitate la password di root; non comparirà sullo schermo [pingusa@localhost pingusa]$ su Password: # digitando "exit" tornate al vostro account normale [root@localhost pingusa]# exit [pingusa@localhost pingusa]$ |
In tutto il resto del manuale, il prompt verrà rappresentato dal simbolo $, sia che siate root, sia che siate un utente comune. Vi diremo quando dovrete essere root, quindi ricordatevi di usare il comando su come appena visto. Un simbolo # all'inizio di una riga di codice rappresenta invece un commento.
Quando lanciate una shell per la prima volta, normalmente vi trovate nella vostra home directory. Per visualizzare la directory in cui vi trovate, digitate il comando pwd (che sta per Print Working Directory):
$ pwd /home/pingusa |
Adesso vedremo alcuni comandi di cui, come scoprirete, non si può proprio fare a meno.
Il comando cd è proprio come quello del DOS, solo con qualcosa in più. Fa proprio quello che dice il suo nome: cambia la directory di lavoro. Potete anche usare . e .., che indicano, rispettivamente, la directory attuale e la directory immediatamente superiore (parent directory). Digitando cd senza argomenti, ritornerete alla vostra home directory. Digitando cd - tornerete indietro all'ultima directory che avete attraversato. Infine, potete specificare la home directory di un utente, ad esempio tuxor, digitando cd ~tuxor (~ da solo indica la vostra home directory). Notate che, come utente normale, di solito non potete andare nelle home directory di altri utenti, a meno che questi non lo autorizzino o che questa non sia la regola generale sul vostro sistema; oppure, a meno che non siate root; quindi diventiamo root e facciamo un po' di pratica:
$ pwd /root $ cd /usr/doc/HOWTO $ pwd /usr/doc/HOWTO $ cd ../FAQ $ pwd /usr/doc/FAQ $ cd ../../lib $ pwd /usr/lib $ cd ~tuxor $ pwd /home/tuxor $ cd $ pwd /root |
Adesso torniamo a essere utenti normali.
Tutti i processi hanno delle proprie variabili di ambiente, e la shell vi consente di visualizzarle direttamente con il comando echo. Ecco alcune variabili interessanti:
HOME: questa variabile contiene una stringa che rappresenta il percorso della vostra home directory.
PATH: questa variabile contiene la lista di tutti i percorsi in cui la shell cerca gli eseguibili quando digitate un comando. Notate che, a differenza del DOS, come impostazione predefinita una shell non cercherà i programmi nella directory corrente!
USERNAME: questa variabile contiene il vostro nome di login.
UID Contiene il vostro user ID.
PS1: contiene la definizione del vostro prompt. Spesso è una combinazione di sequenze speciali, per avere maggiori informazioni potete leggere la pagina di manuale bash(1).
Affinché la shell visualizzi il contenuto di una variabile, dovete aggiungere un $ prima del suo nome. Ecco come usare il comando echo:
$ echo Ciao Ciao $ echo $HOME /home/pingusa $ echo $USERNAME pingusa $ echo Ciao $USERNAME Ciao pingusa $ cd /usr $ pwd /usr $ cd $HOME $ pwd /home/pingusa |
Come potete vedere, la shell sostituisce il valore della variabile prima di eseguire il comando. Altrimenti, il nostro cd $HOME non avrebbe funzionato. Infatti la shell ha prima di tutto sostituito $HOME con il suo valore, /home/pingusa, quindi la linea è diventata cd /home/pingusa, ovvero il comando che volevamo. Lo stesso vale per echo $USERNAME e così via.
Non c'è molto da aggiungere, il comando fa proprio questo: visualizza sullo standard output, normalmente lo schermo, il contenuto di uno o più file:
$ cat /etc/fstab /dev/hda5 / ext2 defaults 1 1 /dev/hda6 /home ext2 defaults 1 2 /dev/hda7 swap swap defaults 0 0 /dev/hda8 /usr ext2 defaults 1 2 /dev/fd0 /mnt/floppy auto sync,user,noauto,nosuid,nodev 0 0 none /proc proc defaults 0 0 none /dev/pts devpts mode=0620 0 0 /dev/cdrom /mnt/cdrom auto user,noauto,nosuid,exec,nodev,ro 0 0 $ cd /etc $ cat conf.modules shells alias parport_lowlevel parport_pc pre-install plip modprobe parport_pc ; echo 7 > /proc/parport/0/irq #pre-install pcmcia_core /etc/rc.d/init.d/pcmcia start #alias car-major-14 sound alias sound esssolo1 keep /bin/zsh /bin/bash /bin/sh /bin/tcsh /bin/csh /bin/ash /bin/bsh /usr/bin/zsh |
Il nome di questo comando è un gioco di parole basato sul nome del primo programma di questo tipo per Unix, che si chiamava more. Un pager è un programma che permette di visualizzare lunghi file una pagina alla volta (o, meglio, uno schermo alla volta). Parliamo di less piuttosto che di more perché è molto più intuitivo nell'uso. Usate less per visualizzare file lunghi, che non entrano in una sola schermata. Per esempio:
less /etc/termcap |
Per scorrere il file, usate le frecce in su e in giù. Premete q per uscire. less, tuttavia, può fare molto più di questo: digitate h per l'aiuto, e guardate. Lo scopo di questo paragrafo, in ogni caso, era solo quello di permettervi di leggere file lunghi, e l'abbiamo raggiunto :-)
Il comando ls (LiSt) è l'equivalente di dir del DOS, ma può fare molto di più. In verità, questo è in buona parte dovuto al fatto che i file stessi possono fare molto di più :-). La sintassi di ls è come segue:
ls [opzioni] [file|directory] [file|directory...] |
Se non si specifica un file o una directory, ls visualizza la lista dei file nella directory corrente. Le sue opzioni sono moltissime, ne descriveremo soltanto alcune:
-a: elenca tutti i file, inclusi i file nascosti (in Unix i file nascosti sono quelli il cui nome comincia con .); l'opzione -A elenca "quasi" tutti i file, il che significa: tutti i file che l'opzione -a visualizzerebbe tranne "." e "..";
-R: elenca in modo ricorsivo, cioè elenca anche tutti i file contenuti in tutte le sottodirectory della directory indicata sulla linea di comando;
-s: visualizza la dimensione in kilobyte accanto a ciascun file;
-l: visualizza informazioni aggiuntive sui file;
-i: visualizza il numero di inode (il numero identificativo di un file nel filesystem, consultate in proposito il capitolo Il filesystem di Linux) accanto a ciascun file;
-d: visualizza le directory specificate sulla linea di comando come file normali, invece di elencare il loro contenuto.
Alcuni esempi:
ls -R: visualizza il contenuto della directory attuale in modo ricorsivo;
ls -is images/ ..: elenca i file nella directory images/ e nella directory superiore rispetto a quella attuale, e visualizza per ciascun file il numero di inode e la dimensione in kilobyte;
ls -al images/*.png: elenca tutti i file (compresi quelli nascosti) nella directory images/ i cui nomi terminano in .png. Notate che questo include anche il file .png, se ne esiste uno.
Ci sono molte utili combinazioni di tasti che vi possono far risparmiare parecchio lavoro, e in questo paragrafo vedremo alcune tra le più comuni. Questa sezione presuppone che stiate utilizzando la shell predefinita fornita con Mandrake Linux, bash, ma le scorciatoie dovrebbero funzionare anche in altre shell.
Per prima cosa, i tasti cursore. bash conserva una storia dei comandi che avete impartito, e potete esplorarla usando i tasti cursore (le frecce di direzione) su e giù. Potete risalire per un numero di righe definito dalla variabile di ambiente HISTSIZE. Questo registro, inoltre, è persistente da una sessione all'altra, quindi rimane disponibile anche dopo aver chiuso e riaperto una sessione.
I tasti destra e sinistra spostano il cursore a destra e a sinistra nella linea di comando attuale, quindi potete modificare i vostri comandi in questo modo. Ma potete anche fare altre cose: Ctrl+a e Ctrl+e vi porteranno, rispettivamente, all'inizio e alla file della linea attuale. I tasti Backspace e Canc funzioneranno come potete immaginare, un equivalente di Backspace è Ctrl+h e un equivalente di Canc è Ctrl+d. Ctrl+k cancellerà tutti i caratteri dalla posizione del cursore alla fine della linea, e Ctrl+w cancellerà la parola prima del cursore.
Digitando Ctrl+d su una linea vuota chiuderete la sessione attuale, il che è una scorciatoia per il comando exit. Ctrl+c interromperà il comando attualmente in corso di esecuzione, a meno che non stiate modificando la riga di comando: in tal caso, questa combinazione di tasti cancellerà la modifica e vi riporterà al prompt. Ctrl+l pulisce lo schermo.
Infine, Ctrl+s e Ctrl+q: questi due comandi servono rispettivamente a sospendere e a riattivare il flusso di caratteri su un terminale. Vengono usati molto raramente, ma potrebbe accadere che digitiate Ctrl+s per errore (dopo tutto, s e d sono molto vicini sulla tastiera). Per cui, se premete dei tasti ma non vedete apparire niente sullo schermo, provate a premere Ctrl+q, e attenzione: tutti i caratteri che avete digitato tra Ctrl+s e Ctrl+q verranno scritti sullo schermo tutti in una volta.