Utility moderne per Linux in Rust

Rust è un linguaggio che di sicuro non sta facendo la ruggine
Come migliorare la Quality of Life della riga di comando
Su linux esistono degli stumenti da riga di comando che ormai si usano da decenni e che sono entrati a far parte della cassetta degli attrezzi di ogni power user (amministratori di sistema, sviluppatori ecc.). Negli anni però sono nati nuovi programmi che rimpiazzano comandi classici come ls
, grep
e cat
, migliorandone estica, usabilità e performance.
A volte siamo così abituati ad usare degli strumenti che nemmeno pensiamo ad eventuali alternative. Quindi in questo articolo voglio elencare alcuni software che migliorano la quality of life all’interno dell’emulatore di terminale.
Un aspetto curioso è che molti di questi programmi sono scritti in Rust, al posto del classico C/C++, e uno dei punti di forza che spesso viene evidenziato è la maggiore velocità rispetto alle controparti classiche.
Quelli che ho adottato nel mio workflow, sostituendo i classici programmi a cui si ispirano, sono i seguenti:
- Exa: clone di
ls
- Starship: prompt compatibile con ogni shell, alternativa a tool tipo Powerlevel10k per Zsh.
- Bat: clone di
cat
: - Ripgrep: versione alternativa di
grep
o The Silver Searcherer. - fd: clone di
find
Exa: elencare i file con stile

Figura 1: Screenshot di EXA
Uno dei comandi che uso più spesso dal terminale è ls
. La principale differenza che ho notato è da un punto di vista estetico (e di usabilità), in quanto l’output viene colorato in modo molto più intelligente rispetto al vecchio ls
, rendendo più facile la lettura dei nomi di file e dei vari attributi.
Visto che ci sono numerosi parametri per personalizzare l’output di exa
ho impostato alcuni alias.
ll
(exa -lbF --git --group-directories-first
): mostra tutte le directory ed i file (prima le directory) e le informazioni relative a GITlt
(exa --tree --level=2
): visualizzazione ad alberolS
(exa -1
): mostra solo elenco dei file/directory senza alcuna informazione aggiuntiva, utile per eventuali copiaincolla.la
(exa -lbhHigmuSa --time-style=long-iso --git --color-scale --group-directories-first
): mostra tutti i file, compresi quelli nascosti, ed un sacco di altre informazioni.
Starship: un prompt moderno e configurabile
Questo progetto non è un un comando come gli altri della lista, ma comunque è uno strumento che rende più bella la shell e, a differenza di progetti simili, ha delle ottime performance (sì, sto parlando di te Powerlevel10k).
Si integra molto bene con Zsh e offre un ambiente uniforme anche tra più piattaforme (Linux / Mac / Windows).
La configurazione è molto facile ed in poco tempo si ottiene un prompt personalizzato e con un ottimo supporto all’autocompletamento.
Consiglio di dare un occhio ai vari esempi nel sito ufficiale: Starship .
Bat: per consultare i file di testo

Figura 2: Screenshot di bat
È arrivato il momento di mandare in pensione il buon vecchio cat
? Direi di sì.
Bat
supporta il syntax highlight per i formati più comuni di testo e codice sorgente tra cui Markdown, si integra con Git, ha la numerazione delle righe, permette di vedere anche caratteri non stampabili, ha un ottimo sistema di paginazione e ricerca integrata.
Inoltre lo si può usare per la concatenazione, come cat
. Infatti nel caso in cui venga usato all’interno di una “pipe”, assieme ad altri comandi, si comporta come il suo precursore.
ripgrep: ricerca di contenuti nei file
Il comando ripgrep
è un clone del classico grep
ma con prestazioni molto superiori e delle accortezze che aiutano molto l’utilizzatore. Ad esempio quando si cerca una stringa all’interno dei file in una directory, che è appunto il suo scopo principale, salta tutti i file binari, che normalmente grep
invece considera facendo perdere tempo inutilmente, e per lo stesso motivo non cerca all’interno di directory nascoste come ad esempio .git
ed esclude anche i percorsi indicati in file come .gitignore
.
Una funzionalità utile è anche la ricerca all’interno di file compressi usando il parametro -z
, evitando quindi di scomprimere a mano gli archivi.
fd: ricerca di file

Figura 3: Screenshot di fd
Per concludere questa carrellata, ecco fd
l’alternativa a find
. Come evidenziato anche nella pagina ufficiale del progetto su GitHub, questo strumento non mira a sostituire al 100% tutte le caratteristiche di find
, ma vuole semplicemente coprire i principali casi d’uso con una sintassi più semplice ed un risultato migliore grazie ad esempio al syntax highlight attivato di default.
Come ripgrep
Anche fd tiene conto del file .gitignore
e di default accetta come parametro di ricerca una stinga di testo o una espressione regolare.