Chi usa un desktop environment installato in una distribuzione GNU/Linux, può scegliere tra tanti file manager per interagire con gli elementi salvati nelle varie unità di memorizzazione. La finestra del terminale, tuttavia, consente di accedere a una vasta schiera di comandi Linux per intervenire non soltanto sul file system ma anche per automatizzare una vasta serie di operazioni.
Attraverso i comandi Linux, è possibile navigare tra directory, gestire file, configurare impostazioni di rete, automatizzare attività e monitorare l’utilizzo delle risorse.
In questo articolo, descriviamo i comandi Linux più utili, suddividendoli in categorie, in modo da fornire una panoramica di ciò che ogni utente GNU/Linux, dal principiante all’esperto, dovrebbe sapere per utilizzare al meglio il sistema operativo.
Comandi di navigazione e gestione dei file
Gestire file e directory è una delle operazioni fondamentali su Linux. I comandi per la navigazione e la gestione dei file permettono di muoversi tra le directory e di eseguire operazioni di base sui file.
ls
: Utilizzato per elencare i file e le directory nella directory corrente. Opzioni comels -l
forniscono dettagli aggiuntivi, inclusi i permessi e la data di modifica. In un altro articolo abbiamo presentato i trucchi e segreti del comando ls.cd
: Cambia la directory corrente. Ad esempio,cd /home/user
porta direttamente alla directory specificata.pwd
: Visualizza la directory corrente, utile per sapere esattamente dove ci si trova nel file system.cp
: Consente di copiare file e directory. Ad esempio,cp file1 file2
crea una copia difile1
con il nomefile2
.mv
: Usato per spostare e rinominare file. Per esempio,mv file1 file2
rinominafile1
infile2
, mentremv file1 /path/destinazione
spostafile1
nella directory specificata.rm
: Rimuove file e directory;rm file1
eliminafile1
. Per eliminare directory e i loro contenuti, utilizzarerm -r nome_directory
. Abbiamo anche descritto quello che viene presentato come il successore di rm, rip2. Quest’ultimo è capace di conservare copia delle versioni dei file cancellati, facilitandone un veloce ripristino.
Comandi per la visualizzazione e la manipolazione dei file
I comandi presentati di seguito permettono di visualizzare, modificare e gestire il contenuto dei file.
cat
: Mostra il contenuto di un file in modo rapido; utile per visualizzare file di testo e file di configurazione.more
eless
: Consentono di visualizzare file più lunghi e scorrere il contenuto;less
permette di muoversi in entrambe le direzioni.head
etail
:head
mostra le prime righe di un file, mentretail
mostra le ultime righe.tail -f
segue in tempo reale l’output di un file, utile per monitorare log di sistema.cut
: Estrae “campi” specifici da ogni riga di un file di testo. Ad esempio,cut -d"," -f2 file.txt
estrapola il secondo campo, separato da virgole, in ogni riga del file.awk
: Un linguaggio di programmazione per l’elaborazione di testo, che permette di filtrare, trasformare e formattare il contenuto di file di testo. Ad esempio,awk '{print $1}' file1
stampa la prima colonna presente in ogni riga.sort
: Ordina le righe di un file. Ad esempio,sort file1
ordina alfabeticamente il contenuto dell’elemento chiamatofile1
.join
: Unisce due file in base a un campo comune, creando una nuova struttura di dati.sed
: è un potente editor di flusso che consente di eseguire modifiche sui file in modo non interattivo. È particolarmente utile per sostituire, eliminare o inserire testo in file di grandi dimensioni. Avevamo parlato dell’editing di testi con sed in un altro approfondimento.
Gestire un archivio dei contatti con gli strumenti Linux integrati
Linux offre potenti strumenti da riga di comando che permettono di costruire e gestire una sorta di semplice database senza l’uso di RDBMS come MySQL o PostgreSQL. Utilizzando utility come awk
, sed
, grep
e sort
, è possibile manipolare file di testo quindi archiviare e “interrogare” i dati in modo semplice e veloce.
Supponiamo di aver a disposizione un file di testo semplice chiamato contatti.txt
. Ogni riga rappresenta un contatto con nome, email e numero di telefono, separati da virgole:
Mario Rossi,mario@example.com,1234567890
Lucia Bianchi,lucia@example.com,0987654321
Giovanni Verdi,giovanni@example.com,1122334455
Per cercare tutti i contatti con il nome “Lucia”, possiamo usare il potente comando grep:
grep "Lucia" contatti.txt
Questo comando restituirà:
Lucia Bianchi,lucia@example.com,0987654321
Ordinare i contatti per cognome
Supponiamo di voler ordinare i contatti per cognome. Il comando che segue ordina i contatti in base alla prima informazione presente nel file (il nome):
sort -t',' -k1,1 contatti.txt
Per ordinare correttamente per cognome, è necessario separare il cognome dal nome e usarlo come chiave di ordinamento. Ecco un modo per farlo con awk
:
awk -F',' '{print $2 "," $1 "," $3}' contatti.txt | sort -t',' -k1,1
Il comando provvede a invertire il nome con il cognome, applicando quindi un criterio di ordinamento per cognome usando sort
.
Aggiungere un nuovo contatto
Per aggiungere un nuovo contatto al file preso come esempio, è possibile usare echo
combinato con l’operatore >>
. Quest’ultimo equivale a un append, ossia alla richiesta di aggiunta di informazioni in coda al contenuto del file:
echo "Paolo Neri,paolo@example.com,3344556677" >> contatti.txt
Creare un report con awk
Per creare un resoconto che mostri solo i nomi e gli indirizzi email, si può nuovamente ricorrere al comando awk
:
awk -F',' '{print $1 ", " $2}' contatti.txt
.
Il comando che abbiamo presentato, stampa il primo e il secondo “campo” (nome ed email) di ogni riga, separati da una virgola.
Con il comando join è come lavorare con un database
Immaginate di avere un file studenti.txt
contenente gli ID degli studenti e i loro nomi e un file corsi.txt
con gli ID degli studenti e i corsi a cui sono iscritti.
Esempio di studenti.txt
:
101 Marco
102 Lucia
103 Giovanni
104 Andrea
105 Sara
Esempio di corsi.txt
:
103 Matematica
101 Fisica
104 Biologia
102 Chimica
Il comando Linux join studenti.txt corsi.txt
permette, per impostazione predefinita, di unire i file in base al primo campo, che in questo caso è l’ID dello studente. Il risultato ottenuto è il seguente:
101 Marco Fisica
102 Lucia Chimica
103 Giovanni Matematica
104 Andrea Biologia
È eventualmente possibile aggiungere l’opzione -o
per selezionare quali colonne includere nell’output. Ancora, -t
permette di specificare un delimitatore diverso (ad esempio, una virgola). Se i file fossero separati da virgole, si può rivedere il comando così come segue:
join -t, studenti.csv corsi.csv
Comandi di ricerca
Linux offre vari strumenti per trovare file e contenuti all’interno dei file, utili per esplorare e gestire grandi sistemi.
find
: Trova file e directory. Ad esempio,find /home -name "*.txt"
cerca tutti i file con estensione.txt
nella directory/home
.grep
: Citato e già utilizzato negli esempi precedenti, il comando cerca una stringa specifica all’interno di uno o più file. Esempio:grep "errore" log.txt
trova tutte le occorrenze della parola “errore” nel filelog.txt
.locate
: Ricerca rapida di file grazie a un database pre-indicizzato. Più veloce difind
, ma necessita di aggiornamenti periodici del database con il comandoupdatedb
.
Comandi di gestione dei permessi e della proprietà
I permessi sui file e le directory sono una parte fondamentale della sicurezza nei sistemi GNU/Linux. Ecco i comandi principali per gestirli.
chmod
: Modifica i permessi di un file o di una directory. Esempio:chmod 755 file
concede permessi di lettura, scrittura ed esecuzione al proprietario e permessi di lettura ed esecuzione agli altri.chown
: Cambia il proprietario di un file o di una directory. Esempio:chown utente:gruppo file
assegna il file all’utente e al gruppo specificati.
Comandi di gestione del sistema
Per monitorare e gestire il sistema, Linux offre comandi che forniscono informazioni su risorse, processi e configurazioni:
top
: Monitora i processi e l’uso delle risorse di sistema in tempo reale.htop
è una versione più avanzata e interattiva ditop
.ps
: Mostra i processi attivi.ps aux
fornisce un elenco dettagliato di tutti i processi in esecuzione.kill
: Termina un processo specifico usando il suo PID. Ad esempio,kill 1234
termina il processo con ID 1234.df
: Mostra lo spazio libero e utilizzato su disco per tutte le partizioni.du
: Visualizza l’uso del disco da parte di file e directory. Esempio:du -sh /home/user
fornisce la dimensione totale della directory/home/user
.free
: Espone informazioni sull’uso della memoria, inclusa la RAM e la memoria di swap.
Comandi di rete
Dei comandi di rete per sistemi Linux, essenziali per configurare, monitorare e diagnosticare la connettività, abbiamo parlato in modo approfondito in un articolo dedicato. Riassumiamo di seguito i comandi principali:
ping
: Verifica la connettività di rete con un host remoto. Esempio:ping google.com
accerta se il sistema è in grado di raggiungere Google.ifconfig
/ip
: Mostra e configura le interfacce di rete.ifconfig
è di fatto abbandonato in favore diip
.netstat
: Visualizza le connessioni di rete, le tabelle di routing e le statistiche delle interfacce.wget
/curl
: Strumenti per scaricare file in maniera automatizzata.wget URL
ocurl -O URL
effettuano il download dei file da un URL specificato. Sia a wget che a curl abbiamo riservato articoli “ad hoc”.ssh
: Permette di stabilire una connessione sicura a un altro sistema remoto tramite il protocollo SSH.
Conclusioni
I comandi Linux sono strumenti fondamentali che permettono di gestire il sistema in maniera estremamente flessibile. La potenza della riga di comando risiede nella possibilità di eseguire operazioni complesse in modo relativamente semplice, anche combinando più comandi.
Acquisire familiarità con i comandi Linux può migliorare notevolmente l’efficienza nel lavoro con il terminale, facilitando anche l’automazione di processi e la risoluzione di problematiche tecniche.
Per sfruttare al meglio il potenziale di Linux, è importante approfondire e fare esperimenti con i comandi presentati: l’interazione con il sistema operativo attraverso il terminale, permette di ottenere un livello di controllo e personalizzazione che non può essere eguagliato dai classici strumenti grafici.
Credit immagine in apertura: iStock.com – fatmawati lauda