Comandi Linux più utili: eccoli svelati

Il terminale Linux offre potenzialità che vanno ben oltre quelle delle interfacce grafiche. Esploriamo quindi i comandi Linux più utili: facilitano la gestione dei file, dei permessi, la ricerca e la gestione del sistema.

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 come ls -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 di file1 con il nome file2.
  • mv: Usato per spostare e rinominare file. Per esempio, mv file1 file2 rinomina file1 in file2, mentre mv file1 /path/destinazione sposta file1 nella directory specificata.
  • rm: Rimuove file e directory; rm file1 elimina file1. Per eliminare directory e i loro contenuti, utilizzare rm -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 e less: Consentono di visualizzare file più lunghi e scorrere il contenuto; less permette di muoversi in entrambe le direzioni.
  • head e tail: head mostra le prime righe di un file, mentre tail 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 chiamato file1.
  • 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 file log.txt.
  • locate: Ricerca rapida di file grazie a un database pre-indicizzato. Più veloce di find, ma necessita di aggiornamenti periodici del database con il comando updatedb.

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 di top.
  • 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 di ip.
  • 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 o curl -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

Ti consigliamo anche

Link copiato negli appunti