Code

Oh My Zsh: rendiamo la shell zsh meno noiosa e più utile

26 Marzo 2020 - 3 minuti di lettura

Da buon sviluppatore software Luca Marcato utilizza spesso il terminale per svariati motivi: git per il versionamento del codice, eseguire di script, utilizzare l’editor vi, connettersi ad un server in ssh, eseguire comandi con npm, e altro ancora.

Fare tutte queste operazioni con il terminale di default del proprio sistema operativo può risultare noioso.

Avete mai sentito parlare di zsh? E di Oh My Zsh?

Oh my Zsh e Zsh

Zsh è una shell per sistemi Linux (e disponibile anche su Windows tramite l’installazione di Windows Subsystem for Linux, o WSL). Oh My Zsh è un framework che mette a disposizione una valanga di temi e plugin per rendere il più personale possibile la shell, come avere un abito cucito su misura.

A questo link trovate una lista di temi interessanti; tenete presente che di base Oh My Zsh contiene tante cose utili.
Esistono però molti interessanti plugin, consultabili a questa lista: alcuni sono simpatici ma di dubbia utilità, come ad esempio chucknorris. Di altri invece credo non riuscireste più a farne a meno, come ad esempio Z.

Il plugin Z

A cosa serve questo plugin?

Tracks your most used directories, based on 'frecency'. After a short learning phase, z will take you to the most 'frecent' directory that matches ALL of the regexes given on the command line, in order.

In breve, Z osserva ed impara mentre navighiamo tra le nostre cartelle e all’occorrenza ci porta direttamente su quella più frecent (fusione dei termini frequent e recent, ovvero frequente e recente) che soddisfa l’espressione, o regex, che abbiamo scritto a terminale.
Per i più curiosi l’algoritmo è il seguente:

t=$(date +%s) # timestamp
function frecent(rank, time) {
  dx = t-time
  if( dx < 3600 ) return rank*4
  if( dx < 86400 ) return rank*2
  if( dx < 604800 ) return rank/2
  return rank/4
}

Può sembrare strano, ma capita molto spesso di ricordarsi il nome, o parte del nome, di una cartella e non avere idea del suo path, che a volte può anche essere parecchio lungo. Grazie a Z, dopo il primo accesso alla cartella, sarà possibile ritornarci scrivendo semplicemente z seguito dal nome, o parte del nome, della cartella.

L’immagine seguente mostra un esempio.

Prima vi ho parlato di frecent e regex. Supponiamo di creare la cartella paperi; se a terminali scrivessi z paperi verrei rediretto alla cartella paperino che è la più frecent.
Se volessi andare nella cartella paperi? Nessun problema, facciamo uso della regex, che nell’esempio seguente è eri$ ovvero trova i nomi che terminano con i caratteri eri.

Spero di avervi un po’ incuriositi. Se non conoscete il plugin Z, provatelo, vedrete che vi toglierà un po’ di noia.

Articolo scritto da