Installare ZSH e Oh-My-Zsh su Ubuntu 18.04 – il mio terminale su Ubuntu

Chiunque utilizzi una delle mille distribuzioni di Linux e abbia provato ad aprire una console del terminale si è imbattuto in BASH (Bourne-again shell).
Benché esistano molte altre shell per il terminale, BASH è la versione predefinita in tutti i sistemi Linux per motivi storici. Infatti quando si parla di Linux in generale si intende GNU/Linux. Per cui il kernel del sistema è Linux ma tutte le utilities fornite sono quelle di GNU la cui shell ufficiale è proprio BASH.

Come dicevo poco sopra esistono diverse altre versioni di shell e quella che utilizzo quotidianamente nel mio sistema è ZSH (Z-shell).
I motivi principali per cui la ritengo superiore a BASH sono:

  • auto-completamento dei comandi: premendo sulla tastiera il tasto tab mentre sto digitando un comando posso lasciare a ZSH il compito di completarne la scrittura;
  • auto correzione degli errori: spesso digitando velocemente i comandi sulla console mi capita di sbagliare a scrivere qualche lettera e di ricevere un fastidioso messaggio d’errore. Tramite ZSH viene fatto un controllo su eventuali errori di battitura e vengono suggerita un possibile correzione del comando.
  • cronologia condivisa: spesso utilizzo più schermate del terminale in contemporanea e con ZSH posso avere una cronologia unica dei comandi eseguiti tra le varie istanze del terminale
  • plugin: tramite ZSH è possibile utilizzare un ampia gamma di plugin che ne permettono di espandere le funzionalità

Installazione di ZSH e Oh-My-Zsh

Per installare ZSH è sufficiente aprire un terminale e digitare:

 sudo apt install zsh

Per impostare ZSH di come shell default puoi utilizzare il comando:

chsh -s (which zsh) root

Affinchè la modifica abbia effetto devi riavviare il terminale.

Puoi verificare la shell in uso con il comando:

echo $SHELL

Per sfruttare al meglio ZSH ti consiglio anche di installare anche il framework Oh-My-Zsh tramite il seguente comando:

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

Tramite Oh-My-Zsh puoi semplificare la gestione di ZSH e sfruttare gli oltre 200 plugin inclusi per personalizzare al meglio la tua esperienza con il terminale di Linux.

Personalizzare ZSH: mostrare il nome delle branch

Per aggiungere la visualizzazione delle branch all’interno del terminale basta  modificare il file ~/.zshrc all’interno della home aggiungendo queste due righe

# Git branch in prompt.

parse_git_branch() {
  git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}

export PS1="\u@\h \W\[\033[32m\]\$(parse_git_branch)\[\033[00m\] $ "

NOTA: puoi ottenere lo stesso effetto anche in BASH. Ti basterà aggiungere le stesse righe al file .bashrc che trovi sempre all’interno della tua home.

Installazione dei plugin

L’installazione di Oh-My-Zsh include già diversi plugin pronti per l’uso. Per abilitare i plugin basta aggiungerli alla lista contenuta all’interno del file ~/.zshrc.

Ad esempio:

plugins=(
  git
  bundler
  dotenv
  osx
  rake
  rbenv
  ruby
)

Plugin consigliati: Zsh-syntax-highlighting

Questo plugin ti permette di evidenziare la sintassi dei comandi all’interno della shell. Sfortunatamente questo plugin non è incluso all’interno di Oh-My-Zsh e va installato a mano recandosi nella cartella ~/.oh-my-zsh/custom/plugins e scaricando l’estensione con questo comando: git clone https://github.com/zsh-users/zsh-syntax-highlighting

A questo punto devi attivare l’estensione aggiungendo alla lista dei plugin la voce zsh-syntax-highlighting

evidenziazione della sintassi

 

Conclusione

Con ZSH puoi veramente velocizzare il tuo flusso di lavoro mentre utilizzi il terminale. La possibilità di personalizzare l’ambiente con i vari temi per la console e di espandere le funzionalità della console con i plugin è veramente impareggiabile.
Personalmente non fatico a credere che ZSH mi abbia permesso di raddoppiare la velocità nell’eseguire il mio solito flusso di lavoro da sviluppatore web.

Te già conoscevi ZSH? In caso negativo ti consiglio di dargli assolutamente una chance, potrebbe veramente migliorarti l’esperienza d’uso del terminale. In caso affermativo invece che plugin usi? Hai qualche estensione interessante da consigliarmi? Se questo post ti è stato utile puoi farmelo sapere con un commento qui sotto  oppure scrivendomi direttamente a t.me/lorenzomillucci. Inoltre ti invito ad iscriverti al mio canale Telegram per non perderti nemmeno un post.