Sono un grande fan dell’interfaccia della riga di comando… Odio usare il mouse del mio computer! Questo mi ha motivato a cercare grandi strumenti per migliorare la mia esperienza utente sulla CLI. Mi sono imbattuto in Oh-My-Zsh durante il mio stage. Alcuni amici mi hanno convinto ad usare questa shell per la sua semplicità e regolabilità. Come bonus, la CLI è estendibile con molti plugin.
Questa è una lista delle sue capacità:
- Convalida dei comandi
- Correzione dell’ortografia
- Condivisione della cronologia dei comandi tra tutte le shell in esecuzione
- Propone i prompt (Agnoster, RobbyRussell, …)
- Storia della directory
- Script di avvio/arresto tramite
zshenv
,zprofile
,zshrc
,zlogin
, ezlogout
- Forte capacità di completamento automatico. Puoi usare il tasto TAB per navigare tra le diverse opzioni e usare enter per selezionare la cartella giusta. Bash per esempio stamperebbe tutte le opzioni. Questo è abbastanza spammoso e inquina lo scrollback.
- Aggiungi plugin: ad esempio il plugin Git con una lista enorme di utili alias Git.
Questo plugin mostra il ramo attivo e dà un feedback visivo sul tuo stato Git:
– Verde: ramo se non ci sono stati cambiamenti
– Giallo con un’icona a forma di cerchio: file non tracciati
– Giallo con un’icona più: file pronti per essere impegnati
Sto eseguendo questa guida di installazione sulla mia macchina virtuale Ubuntu 16.04. Per mostrarvi la potenza sottostante di Oh-My-Zsh, installerò il plugin Git (Git-core). Questo plugin fornisce un feedback visivo sullo stato di Git di un progetto.
- Installa i pacchetti dei prerequisiti
$ sudo apt install git-core zsh - Installa Oh-My-Zsh dal repository di Robby Russell
$ sh -c “$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)” - Installa il font Powerline per ravvivare la tua CLI con delle icone
$ sudo apt install fonts-powerline - Cambia tema da ‘robbyrussell’ a ‘agnoster’ per il leggendario tema Oh-My-Zsh
$ nano ~/.zshrc - Trova la variabile
ZSH_THEME
e cambiala:ZSH_THEME="agnoster"
- Non mi piace che il tema mostri il mio username e host. Per sbarazzarci di questo, cambiamo la directory in
$ cd ~/.oh-my-zsh/themes - Poi apriamo il file del tema per ‘agnoster’ nell’editor
$ nano agnoster.zsh-theme - Ora possiamo cambiare il ‘Main prompt’. Non abbiamo bisogno di prompt_context nella funzione
build_prompt()
. Basta commentare questa linea o rimuoverla. Infine, cambia la variabilePROMPT
in$(build_prompt)
.
Per vedere effettivamente il tema, devi generare il tuo file .zshrc
così: source ~/.zshrc
. Se tutto è andato bene, dovresti vedere qualcosa come l’immagine di copertina!
Extra: Imposta zsh come shell predefinita. Esegui questo comando nella tua shell predefinita, nella maggior parte dei casi questa sarà bash. Se esegui questo comando in zsh, non cambierà nulla:
$ chsh -s $(quale zsh)
Nota: Se usi sudo
cambierà la shell per root, ma non per il tuo utente di lavoro. Oltre a questo, assicurati di fare il logout e il login di nuovo per vedere i cambiamenti.
Installa i plugin
Tutti i plugin elencati nella pagina Github dei plugin sono preinstallati con Oh-My-Zsh a ~/.oh-my-zsh/plugins
. I plugin personalizzati possono essere installati a ~/.oh-my-zsh/custom/plugins
. Per usare un plugin, puoi semplicemente aggiungerlo alla lista dei plugin nel tuo file ~/.zshrc
. Aggiungi saggiamente, poiché troppi plugin rallentano l’avvio della shell. Lasciate uno spazio vuoto tra ogni plugin.
Colored-man-pages
In questo esempio, ho installato un utile plugin per dare evidenza di colore al vostro man pages
. Per poter utilizzare il plugin, create il sorgente del vostro .zshrc
file:
$ source ~/.zshrc
Zsh-syntax-highlighting
Un altro grande plugin è l’evidenziazione della sintassi per la tua shell. Oltre a questo, questo plugin ha la capacità di verificare la correttezza del tuo comando.
Questo plugin non è installato con Oh-My-Zsh. Naviga verso ~/.oh-my-zsh/custom/plugins
e clona il codice da Github in questa cartella:
$ git clone https://github.com/zsh-users/zsh-syntax-highlighting
Vedrai una cartella chiamata zsh-syntax-highlighting
. Questo è il nome che deve essere aggiunto alla lista dei plugin.
Zsh-autosuggestions
Puoi anche usare zsh-autosuggestions
per il completamento dei comandi. Suggerisce comandi basati sulla tua cronologia dei comandi. Molto utile! Per selezionare il comando proposto, premi il tasto freccia destra.
L’installazione è la stessa che con zsh-syntax-highlighting
:
$ git clone https://github.com/zsh-users/zsh-autosuggestions
E aggiungi zsh-autosuggestions
alla lista dei plugin.
Si prende cura degli appassionati di alias
Oh-My-Zsh ricorda automaticamente le ultime 20 directory che hai visitato. Puoi elencare la cronologia cronologicamente con dirs -v
o semplicemente d
.
Normalmente, puoi usare cd +1
per andare alla directory precedente e così via. Oh-My-Zsh ha reso questo ancora più semplice, ora puoi usare solo il numero della voce nella cronologia della directory che vuoi visitare… 1
.
Altri alias interessanti
-
alias
: elenca tutti gli alias. Puoi convogliare l’output agrep
per cercare un alias particolare. -
/
:cd /
-
~
:cd ~
-
...
:cd ../..
-
....
:cd ../../..
-
.....
:cd ../../../..
Penso tu abbia capito, giusto? -
take test_folder
: Crea una cartella chiamatatest_folder
e la modifica -
x
: Estrai archivio di tipitar, bz2, rar, gz, tbz2, tgz, zip, Z, 7z
-
upgrade_oh_my_zsh
: Comando facile per aggiornare la tua installazione
Problemi ben noti & Soluzioni
Può succedere che il file della cronologia venga corrotto. Non chiedetemi i dettagli specifici. Ogni volta che lanci un nuovo terminale, ottieni questo messaggio:
zsh: corrupt history file /home/myusername/.zsh_history
Correggiamolo con i seguenti comandi. Assicurati di essere nella root della homefolder. Il comando fc elenca, modifica o riesegue i comandi precedentemente inseriti in una shell. Il comando history ti permette di usare le parole delle linee di comando precedenti nella linea di comando che stai digitando.
mv .zsh_history .zsh_history_bad
strings .zsh_history_bad > .zsh_history
fc -R .zsh_history
Conclusione
Oh-My-Zsh è semplicemente fantastico!
Link e fonti utili
Questo articolo è stato realizzato con l’aiuto di TheLedger.
- Oh-My-Zsh: http://ohmyz.sh/
- Plugins: https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins
- Temi: https://github.com/robbyrussell/oh-my-zsh/tree/master/themes/
- Git plugin con tutti gli alias: https://github.com/robbyrussell/oh-my-zsh/wiki/Plugin:git
- Personalizzazione del prompt della shell: http://www.nparikh.org/unix/prompt.php#zsh
- ArchWiki su Zsh: https://wiki.archlinux.org/index.php/zsh#Autostart_X_at_login
- Progetto di evidenziazione della sintassi di Zsh: https://github.com/zsh-users/zsh-syntax-highlighting
- Zsh autosuggestions plugin: https://github.com/zsh-users/zsh-autosuggestions
- RobbyRussell Wiki sulla personalizzazione di Zsh: https://github.com/robbyrussell/oh-my-zsh/wiki/Customization