L’interfaccia a riga di comando o finestra del terminale rimane uno strumento fondamentale per l’interazione con i sistemi Linux, offrendo potenza e flessibilità ineguagliate. Sebbene molti dei comandi Linux più utili come ls
, cd
, ps
, grep
, find
, df
, du
, dig
e ping
/traceroute
siano onnipresenti e collaudati, l’ecosistema Linux è in costante evoluzione, offrendo alternative moderne che promettono maggiore efficienza, migliore visualizzazione, funzionalità avanzate e integrazione le con tecnologie emergenti. In questo articolo esploriamo alcuni dei comandi Linux più folli e, al tempo stesso, meno conosciuti spiegando come essi aiutino a migliorare i flussi di lavoro tradizionali e offrano nuove abilità per l’amministrazione di sistema, lo sviluppo e la diagnostica.
Tutti i comandi che presentiamo di seguito sono utilizzabili nelle varie distribuzioni Linux tramite una semplice installazione con il package manager di sistema.
Navigazione e gestione file intelligente: addio ai vecchi paradigmi
Alcuni degli strumenti più utilizzati quotidianamente, come cd
e ls
, hanno alternative moderne che migliorano significativamente l’esperienza d’uso.
zoxide
(può essere richiamato digitando semplicemente z
) sostituisce cd
ed è decisamente “più tollerante”. È infatti in grado di imparare le directory utilizzate frequentemente e di recente, permettendo all’utente di saltare rapidamente a directory digitate parzialmente, senza dover specificare il percorso completo.
Per installare e configurare zoxide, con la possibilità di invocarlo con z
, di solito si può aggiungere la riga eval "$(zoxide init bash)"
al file ~/.bashrc
. Le modifiche sono immediatamente applicabili digitando source ~/.bashrc
.
Il comando exa
può essere sfruttato come un eccellente sostituto di ls
, offrendo una scelta cromatica azzeccata e vista ad albero integrata, addirittura con la possibilità di mostrare icone (con exa --icons
). Questi miglioramenti visivi e funzionali rendono l’esplorazione del filesystem più efficace.
Per una gestione file più articolata, ranger
funge da file manager GUI (dotato cioè di interfaccia grafica) accessibile dal terminale Linux. Incorpora funzionalità avanzate come la possibilità di rinominare in blocco i file e le anteprime, presentandosi quindi come uno strumento potente per chi preferisce non lasciare la riga di comando. Per chiudere l’utilità, basta premere il tasto Q.
Un comando come stat
, invece, spesso integrato in molteplici distribuzioni Linux, fornisce tutti i dettagli su qualunque file presente sul sistema. Dalla data di creazione alle successive modifiche. Inoltre, utilizzando l’opzione -f
, il comando espone informazioni specifiche del filesystem come l’ID.
Ancora, il comando avanzato unp
può decomprimere qualsiasi archivio “indovinando” il comando appropriato in base al tipo di file.
Monitoraggio del sistema Linux e dei processi: dashboard e dettagli in tempo reale
Il monitoraggio delle risorse di sistema è vitale per identificare colli di bottiglia e problemi di performance. glances
si posiziona come una dashboard statistica all-in-one capace di fornire una vista completa su CPU, RAM, disco, rete e memoria.
Sulla stessa lunghezza d’onda si pone dstat
, un altro strumento di monitoraggio che combina aspetti di vmstat
, iostat
, ifstat
e netstat
all’interno di una vista temporale combinata. Permette di visualizzare esattamente ciò che si desidera, come i processi che impegnano più pesantemente la CPU.
Per il monitoraggio dell’I/O del disco, iotop
fornisce una lista in stile top
dei processi che utilizzano maggiormente l’unità di memorizzazione, grazie anche agli aggiornamenti in tempo reale.
Visualizzare i processi in esecuzione diventa ancora più semplice con procs
, una soluzione decisamente più amichevole e leggibile di ps aux
. Il comando offre la possibilità di ordinare per CPU e visualizzare i processi in un’efficace vista ad albero.
Il comando watch
è uno strumento versatile per ripetere l’esecuzione di qualsiasi comando a intervalli specifici. È particolarmente utile per monitorare l’output di comandi che cambiano frequentemente. Allo stesso modo, progress
risulta utilissimo per monitorare lo stato di avanzamento di comandi in esecuzione in altre sessioni. Può anche monitorare più comandi contemporaneamente.
Per ottenere dettagli esaustivi sulle risorse hardware del sistema, il comando lshw
mostra tutto ciò che è necessario sapere. Utilizzando il comando con l’opzione -C
, è possibile filtrare le informazioni per specifiche categorie, come CPU, memoria, rete o dischi. Esempio: lshw -C cpu
Connettività remota affidabile e trasferimento sicuro dei dati
La connessione a server remoti tramite SSH può interrompersi improvvisamente quando si passa da una rete all’altra. mosh
è un’alternativa a SSH che supporta il roaming, mantenendo cioè la sessione attiva anche quando si perde temporaneamente la connessione o si cambia rete (ad esempio da WiFi a rete mobile e viceversa). Il software funziona perfettamente e consente di amministrare i server remoti senza imprevisti, a patto che sia installato su entrambi i lati della connessione (quindi sul sistema server e sul client).
Per il trasferimento sicuro di file in modalità peer-to-peer, wormhole
è quanto di più semplice e immediato si possa trovare su Linux. Permette infatti di inviare file con un singolo comando (wormhole send
), genera un codice “mnemonico” da usare sull’altro lato per ricevere il file. Lo scambio delle informazioni è crittografato end-to-end, con chiavi private generate e conservate in locale in maniera tale che nessun soggetto terzo possa impossessarsi dei dati altrui, modificarli o danneggiarli.
Per i trasferimenti di file, rsync
si conferma comunque uno dei migliori strumenti oggi disponibili. È “intelligente” perché sincronizza solo le differenze tra file e cartelle (delta only), può riprendere trasferimenti interrotti e creare mirror su collegamenti SSH.
Analisi dello spazio disco e ricerca file su Linux: visibilità e velocità potenziate
Capire l’utilizzo dello spazio di memorizzazione disponibile sulle unità è cruciale per la manutenzione del sistema. Tradizionalmente, comandi come df
e du
forniscono queste informazioni.
Tuttavia, uno strumento come ncdu
offre un approccio visivo e interattivo che rende la diagnosi sullo spazio disco occupato da file applicazione molto più intuitiva. Permette di visualizzare cosa sta occupando spazio, di navigare all’interno delle directory e persino di eliminare file direttamente dall’interfaccia.
A ncdu
suggeriamo di abbinare duf
, versione decisamente più accattivante del noto comando df
, pur conservandone le stesse funzionalità di base.
Quando si tratta di cercare file, il comando find
è uno standard, ma fd
si propone come un’alternativa con impostazioni predefinite migliori. La ricerca ricorsiva è attiva per impostazione predefinita, è case-insensitive, ignora i file e le directory nascoste di default e offre un output a colori. Spesso, inoltre, risulta anche più veloce di find
nello svolgimento delle operazioni di ricerca.
ripgrep
è presentato come l’evoluzione di grep, una versione più evoluta e interamente sviluppata nel linguaggio Rust. È più veloce e si rileva eccellente per trovare contenuti nei file, ad esempio errori all’interno dei log, chiavi API all’interno di un vasto numero di file, funzioni specifiche in un’applicazione Python e così via.
Analisi e gestione della rete: strumenti specifici e interfacce potenziate
L’analisi e la diagnostica di rete diventano più semplici usano gli strumenti specializzati disponibili su Linux. mtr
è considerabile come “il figlio” di ping
e traceroute
, poiché traccia la latenza e la perdita di pacchetti hop-by-hop in tempo reale.
Per verificare la risoluzione dei nomi di dominio via DNS, si può invece ricorrere a dog
, comando che si pone un gradino più in alto rispetto a dig
, anche in termini di chiarezza visuale e in grado di restituire i risultati anche in formato JSON.
Per l’analisi del traffico di rete, mentre tcpdump
e tshark
sono soluzioni largamente note. Tuttavia, l’ottimo termshark
fornisce una Terminal User Interface (TUI) per T-shark. L’obiettivo è rendere l’analisi dei pacchetti dati più interattiva e “divertente”, permettendo di filtrare per tipo di traffico e persino di elaborare file pcap esistenti.
Per identificare quale processo sta utilizzando una specifica porta TCP/UDP, il comando lsof -i
si conferma un utile strumento, indispensabile in molteplici contesti.
Un altro strumento di rete specialistico è ipcalc
, una calcolatrice di subnet mask a riga di comando che fornisce rapidamente informazioni come intervallo di IP, netmask, wildcard e altro partendo da una notazione CIDR.
Strumenti per sviluppatori e per il miglioramento dei flussi di lavoro
La linea di comando non è solo per gli amministratori di sistema; offre anche potenti strumenti potenti destinati agli sviluppatori.
Per chi lavora spesso con i container Docker, lazy docker
è davvero una perla. Fornisce una TUI interattiva per Docker, permettendo di eseguire “qualsiasi cosa” in un’interfaccia visiva basata su terminale.
Un comando come task warrior permette di gestire le attività da svolgere (task management) direttamente dalla finestra del terminale. Permette di aggiungere, elencare e e marcare come completate le attività, con la possibilità di ricevere un avviso sulla attività più urgenti da espletare
Per documentare e condividere interazioni da terminale, asciinema
consente di registrare sessioni di terminale in piccoli file di testo chiamati “cast”. Queste registrazioni possono essere riprodotte direttamente nel terminale, consentendo anche di copiare il testo precedentemente acquisito. È possibile caricare le registrazioni su un server auto-ospitato e, grazie a uno strumento correlato, asciinema agg
, si possono convertire le registrazioni in GIF.