Il terminale (o console) è sicuramente uno degli strumenti più utili in assoluto in ogni distribuzione Linux. Il suo utilizzo può essere un po' ostico per chi vi si avvicina per la prima volta, ma una volta acquisita una certa familiarità diventa un'arma in più nella gestione del proprio sistema operativo. In questo articolo analizzeremo alcuni dei più importanti comandi per la riga di comando, vedendo alcuni esempi di utilizzo e scoprendone le principali funzionalità.
dmesg
dmesg
, abbreviativo di display message, è un comando che permette di ricevere i messaggi provenienti direttamente dal Kernel. In particolare, dmesg fornisce i messaggi contenuti all'interno del buffer del Kernel, e non ancora scritti sul file system. Il suo utilizzo può essere molto utile per ricevere, ad esempio, informazioni su un dispositivo appena collegato,o anche sulle componenti hardware già connesse che comunicano con il Kernel. Le funzionalità di dmesg non si fermano però qui: le prime righe dell'output di questo comando, infatti, contengono informazioni sul sistema operativo, sul Kernel utilizzato, sulla memoria RAM disponibile e così via. Il suo utilizzo non prevede l'inserimento di alcun parametro, per cui è possibile lanciare direttamente
$ dmesg
per ricevere l'output desiderato. Tale comando, però, produce una lunga serie di informazioni, che possono rendere difficoltosa la ricerca di una riga in particolare. Per questo motivo, è possibile utilizzare dmesg in combinazione con less
$ dmesg | less
per ricevere le informazioni una riga alla volta, tramite la pressione del pulsante di Invio. L'output restituito da dmesg può anche essere reindirizzato verso un file di testo, disponibile successivamente per eventuali ricerche:
$ dmesg > file_di_output
È possibile inoltre filtrare le informazioni fornite da tale comando, scegliendo quali ricevere: ad esempio, per controllare cosa accade relativamente alle porte USB possiamo digitare
$ dmesg | grep -i usb
ps
Il comando ps
permette di avere una panoramica generale sui processi attivi all'interno del sistema, con relativo PID e altre informazioni utili per identificare ogni singolo processo e ottenere maggiori informazioni su di essi. Una delle principali caratteristiche di ps è la possibilità di passare a tale comandi parametri in formato UNIX, BSD o GNU, a seconda del numero di trattini presenti prima di ogni parametro. In questo modo, è possibile filtrare i processi che tale comando restituirà come output: ad esempio, per ricevere l'elenco di tutti i processi attivi, possono essere utilizzati i seguenti parametri
$ ps aux
$ ps -ef
che in sostanza producono lo stesso output. Per filtrare i processi a seconda degli utenti, è possibile specificare il nome dell'utente nel seguente modo
$ ps aux | grep -i utente
Anche i messaggi inviati da ps dopo l'esecuzione possono essere ricevuti uno alla volta, sempre concatenando tale comando con less:
$ ps aux | less
In ogni caso, l'output sarà organizzato in colonne, con la prima riga che indica l'etichetta di ognuna. Le informazioni che vengono restituite quando si fornisce il parametro aux sono l'utente, il PID del processo, la CPU e la RAM che il processo occupa, la porta eventualmente utilizzata, l'orario di avvio ed altre utili informazioni.
locate
Quando si ha a che fare con numerosi file e cartelle, a volte può essere utile avere a disposizione uno strumento di ricerca. In tal senso, locate
è uno dei migliori comandi per la ricerca di file e cartelle da terminale. La sua sintassi è molto semplice: è sufficiente lanciare il comando seguito dal nome o da un elenco di nomi di file da cercare, ed in pochi secondi otterremo i risultati della ricerca. Ad esempio, per cercare il file pippo.html digiteremo
$ locate pippo.html
Anche locate permette di passare parametri per modificare l'output prodotto: ad esempio, il parametro -n seguito da un numero permette di impostare ad n il numero di risultati restituiti, mentre -i offre l'opportunità di effettuare ricerche che tengano conto anche di maiuscole e minuscole nei nomi dei file. È possibile utilizzare caratteri jolly per indicare qualunque possibile alternativa all'interno del nome del file, potendo dunque effettuare anche ricerche per formati. Per cercare tutti i file con estensione .html, ad esempio, è sufficiente digitare
$ locate *.html
Il comando locate utilizza per le ricerche un database locale, che può essere aggiornato manualmente lanciando come root
$ updatedb
top
top
è un utilissimo comando che permette di ricevere informazioni dettagliate sullo stato dei processi attivi sul sistema. Se ps è principalmente mirato alla ricerca dei processi, top fornisce informazioni in tempo reale sull'operatività di essi, sulla loro influenza sul carico totale del sistema e sulle risorse occupate, come la CPU utilizzata o la quantità di memoria RAM di cui necessitano.Oltre a questi dati, vengono forniti anche il PID, l'utente cui appartengono ed altre informazioni reperibili anche tramite ps.
Una volta lanciato questo comando, verrà generato l'elenco dei processi, corredati dalle relative informazioni, che verrà aggiornato in tempo reale a seconda di quello che è lo stato di attività dei processi. Tra i principali argomenti che è possibile passare a top troviamo -u per filtrare i processi per utenti, -p seguito da un PID per monitorare un processo caratterizzato da un determinato PID, e -b, per operare in modalità batch, utile soprattutto per inviare l'output di top ad un file tramite
$ top -b > file_di_output
cp e mv
Passiamo adesso alla gestione dei file: in questo campo, ovviamente, non possono mancare due comandi fondamentali come cp
e mv
. Il comando cp permette la copia di file o directory, mentre mv opera spostando i file o le cartelle di origine e posizionandolo all'interno del percorso desiderato. Entrambi i comandi hanno una sintassi molto semplice, che presenta in gran parte la stessa struttura:
$ cp [OPZIONI] ORIGINE DESTINAZIONE
$ mv [OPZIONI] ORIGINE DESTINAZIONE
dove ORIGINE è il file o la cartella da copiare o spostare, e DESTINAZIONE è il percorso in cui verranno posizionati. Al posto di [OPZIONI] andranno inseriti, eventualmente ce ne sia bisogno,i parametri con i quali si vuole far operare i due comandi. Tra quelli più importanti di cp vi sono -r per effettuare una copia ricorsiva, -f per forzare l'operazione di copia, -v per agire in modalità verbosa e -s per realizzare un link simbolico al file di origine invece di crearne una vera e propria copia. Per quanto riguarda mv, invece, troviamo -n per non sovrascrivere file esistenti, -b per effettuare copie di backup nel caso in cui i file di destinazione siano già presenti e -u per spostare i file solo se quelli di origine sono più recenti di quelli di destinazione, mentre è sempre valida l'opzione -f per forzare lo spostamento.
df e du
Sempre per la gestione dei file, df
e du
risultano due comandi che possono tornare molto utili: df fornisce informazioni sullo spazio disponibile sul proprio disco fisso o all'interno di determinate partizioni, mentre du permette di conoscere lo spazio occupato da singoli file o da intere cartelle.
Il comando df può essere lanciato senza alcun percorso di destinazione, fornendo dunque informazioni su tutte le partizioni montate, oppure seguito da una o più partizioni di cui verranno forniti i dati relativi allo spazio ancora disponibile. Lanciando du senza alcun parametro, inizierà a scorrere l'elenco di tutti i file presenti nella directory locale e nelle eventualo sottodirectory, ognuno dei quali accompagnato dallo spazio occupato in byte. Per questo motivo è necessario modificare l'output tramite il passaggio di alcuni parametri per avere un risultato più leggibile. Ad esempio, per conoscere lo spazio utilizzato dalle directory dir1 e dir2, ottenendo anche il totale dello spazio occupato, il tutto convertito in MegaByte, è necessario aggiungere i parametri -msc:
$ du -msc dir1 dir2
Al posto di dir1 e dir2 è possibile anche inserire singoli file, ottenendo lo stesso risultato.
rm
Il comando rm
permette di rimuovere file o cartelle, con la possibilità di operare in modalità ricorsiva ed eliminare dunque anche eventuali sottodirectory ed i file in esse contenuti. In alcuni casi è necessario utilizzarlo con i privilegi di root, in quanto non sempre è possibile accedere a determinati file, ed in questi casi è necessario operare con la massima prudenza in quanto si potrebbero eliminare file importanti per il funzionamento del sistema operativo. Per eliminare ricorsivamente il contenuto di una directory il comando con relativi parametri è
$ rm -rf directory/
che eliminerà anche la directory stessa. Per cancellare solo il contenuto, lasciando però la cartella, è necessario lanciare
$ rm -rf directory/*
stat
Il comando stat
permette di ottenere informazioni su uno o più file. I dati che fornisce riguardano le dimensioni, i permessi di accesso,la struttura del file sul disco fisso e le date relative all'ultimo accesso, all'ultima modifica e alla creazione del file. Non prevede l'inserimento di particolari parametri, ed è possibile inserire anche più file in sequenza per ottenere tutta una serie di informazioni su ogni singolo file, evitando dunque di ripetere il comando per ognuno di essi.
chmod e chown
I comandi chmod
e chwon
permettono di modificare le proprietà di accesso e lettura di file e cartelle, e l'utente cui appartengono. In particolare, chmod offre l'opportunità di modificare i permessi di accesso, lettura e scrittura di file e cartelle. Il suo utilizzo è molto semplice:
$ chmod MODS file1 file2 ...
Al posto di MODS vanno inseriti i permessi, seguendo un semplice scherma formato da una terna di numeri, ognuno dei quali associato ad una tipologia di utente diversa: il primo riguarda l'utente proprietario, il secondo il gruppo ed il terzo gli altri utenti. I possibili permessi sono lettura, scrittura ed esecuzione: alla lettura è associato il numero 4, alla scrittura il numero 2 e all'esecuzione il numero 1. Nel caso in cui si voglia associare ad uno o più file più permessi, ad esempio lettura e scrittura, è sufficiente sommare tali numeri.
Ad esempio, se vogliamo concedere i permessi in lettura, scrittura ed esecuzione all'utente proprietario, ma solo in lettura e scrittura al gruppo e agli altri utenti è sufficiente lanciare il comando
$ chmod 755 file
Tale ragionamento, oltre che per i file, vale anche per le directory. Esiste inoltre un'altra modalità di inserimento dei permessi, che fa uso di lettere al posto dei numeri: per conoscere come utilizzarlo è sufficiente lanciare il comando:
$ man chmod
Il comando chown, invece, cambia l'utente proprietario di un file o di una directory, ed è utilizzabile secondo lo schema
$ chown [OPZIONI] NUOVOPROPRIETARIO file1 file2 ...
Per un semplice cambiamento del proprietario di un file è possibile anche non specificare alcun parametro aggiuntivo.
man
Concludiamo questa rassegna con il comando man, che è forse uno dei più utili in assoluto: seguito da un altro comando, infatti, permette di leggere la documentazione relativa a tale comando, che conterrà informazioni sul suo utilizzo, sui possibili parametri che tale comando accetta, sulle opportunità di utilizzo e così via. La maggior parte dei comandi Linux offre una ricca e corposa documentazione, che in molti casi risulta piuttosto utile per sciogliere dubbi o per comprendere come utilizzare un determinato comando. La documentazione è scorribile tramite i tasti direzionali della tastiera, e una volta conclusa la lettura è possibile uscire premendo il tasto "q".