Rust è un linguaggio che di sicuro non sta facendo la ruggine

Rust è un linguaggio che di sicuro non sta facendo la ruggine

Photo by Julian Hochgesang from Unsplash

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

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 GIT
  • lt (exa --tree --level=2): visualizzazione ad albero
  • lS (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.

Exa

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

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.

Bat

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.

ripgrep

fd: ricerca di file

Figura 3: Screenshot di fd

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.

fd

Leonardo Finetti

Leonardo Finetti
Si occupa di informatica dalla metà degli anni novanta principalmente in ambito web con tecnologie Open Source. Esperto di Drupal e di SEO offre consulenze in tali ambiti e nel tempo libero si diletta scrivendo articoli di informatica ed anche di design, ergonomia, usabilità e sicurezza.

Se ti piace questo sito puoi usare il link di affiliazione Amazon cliccando qui.