Αντικαταστήστε το Bash με το Zsh και βελτιώστε την εμπειρία χρήσης του τερματικού, την εμφάνιση αλλά και τις λειτουργίες που παρέχει με πάνω από 200 plugins και 140 themes διαθέσιμα για δοκιμές.
Για να είμαι ειλικρινής το άρθρο αυτό το κάνω ύστερα από παραινέσεις φίλων/χρηστών και αναγνωστών του cerebrux που αρέσκονται στο eye candy και ειδικότερα στην εικόνα και το θέμα της γραμμής εντολών. Πως το έκανες, τι είναι αυτό, μπορώ να το κάνω και εγώ μερικές από τις αντιδράσεις. Η απάντηση είναι ναι μπορείτε να το κάνετε με τη βοήθεια του σημερινού οδηγού και να είστε σίγουροι ότι θα είναι αρκετά μουράτο ώστε οι desktop screenshots σας να παράγουν ανάλογες αντιδράσεις με τις δικές σας. Όμως μετά την πρώτη εικόνα που ομολογουμένως είναι κατά πολύ ανώτερη, θα διαπιστώσετε ότι το zshell αποτελεί έναν από τους πλέον αναντικατάστατους φίλους σας στη χρήση του command line .
Τι είναι το zsh (zshell)
H wikipedia προσδιορίζει το Κέλυφος Z (Z shell, zsh) ως ένα κέλυφος του Unix που μπορεί να χρησιμοποιηθεί σαν ένα αλληλεπιδραστικό κέλυφος χρήστη καθώς και σαν ένας ισχυρός διερμηνέας γραμμής εντολών για προγραμματισμό σεναρίων. Το Zsh μπορεί να θεωρηθεί ένα επεκτεταμένο κέλυφος Bourne με αρκετές βελτιώσεις, περιλαμβάνοντας μεταξύ άλλων χαρακτηριστικά του bash, του ksh, και του tcsh.
Εμείς πολύ απλούστερα θα πούμε ότι το zshell είναι ένα κέλυφος που θα κάνει την καθημερινότητα σας απλούστερη ενώ ταυτόχρονα εμπλουτίζεται η αποδοτικότητα σας με την προσθήκη plugins για το github (θα γνωρίζετε πότε άλλαξε κάτι στο φάκελο του αποθετηρίου ή υπολείπονται ενέργειες πριν το push ή το commit) μέχρι και το syntax highlighting (ποτέ δεν θα ξαναγράψετε λάθος εντολή).
Αντικατάσταση του bash με το zshell
Εγκατάσταση του zshell
Σε πρώτη φάση πρέπει να εγκαταστήσουμε το zshell κάτι που είναι πανεύκολο με τη χρήση του τερματικού σας ή μέσω του κέντρου λογισμικού της διανομή σας όποια και αν είναι αυτή. Εμείς θα χρησιμοποιήσουμε το τερματικό του Ubuntu / Debian δίνοντας :
sudo apt install zsh
αντίστοιχα εσείς μπορείτε να χρησιμοποιήσετε το yum σε περίπτωση που έχετε RPM διανομή. Εν συνεχεία θα πρέπει να αλλάξουμε το shell μας από το bash σε zsh. Αυτό θα το πετύχουμε με την εντολή:
chsh -s /bin/zsh
Κάνουμε logout από το λογαριασμό μας και ξανά login και πλέον είμαστε στο νέο μας shell
Τουμπάνιασμα … εμ … αισθητική αναβάθμιση του zshell
Για την αισθητική αναβάθμιση του zshell μας θα χρησιμοποιήσουμε τα script oh-my-zsh το οποίο όμως ρητά αναφέρει κάποια προαπαιτούμενα.
- Unix based λειτουργικό σύστημα (os X ή Linux)
- Έκδοση zsh 4.3.9 και άνω (την έκδοση τη βλέπετε δίνοντας zsh –version)
- curl ή wget
- Εγκατεστημένο το git
Προτού συνεχίσουμε δίνουμε στο τερματικό μας :
sudo apt install -y wget curl git
και εν συνεχεία είμαστε έτοιμοι να εγκαταστήσουμε το oh-my-zsh. Στο github τους αναφέρονται δύο τρόποι εγκατάστασης (επιλέγετε έναν από τους δύο) :
μέσω curl:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
μέσω wget:
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
και μόλις τελειώσει η διαδικασία είμαστε έτοιμοι να περάσουμε στην παραμετροποίηση του.
Παραμετροποίηση του oh-my-zsh
Όπως το bash έχει το .bashrc με τις ρυθμίσεις του τερματικού μας, το zshell έχει το .zshrc που κάνει ακριβώς την ίδια δουλειά. Επομένως οι αλλαγές μας θα γίνουν σε αυτό αρχείο δίνοντας στο τερματικό
nano ~/.zshrc
και για να ξεκινήσει το τερματικό με τις αλλαγές δίνουμε
source ~/.zshrc
Στο .zshrc έχει ανάλογες ρυθμίσεις με αυτές του .bashrc και για αυτό αν έχετε κάνει τροποποιήσεις στο .bashrc σας (aliases συντομεύσεις κτλ) μπορείτε με ένα απλό copy paste να τα μεταφέρετε στο .zshrc ούτως ώστε να ισχύουν και εκεί.
Αν ρίξουμε μια γρήγορη ματιά θα διαπιστώσουμε ότι το oh-my-zsh μας δίνει να επιλέξουμε μέσα από μια πληθώρα προεγκατεστημένων θεμάτων και ενεργοποιούνται στο .zshrc σας με την επιλογή
ZSH_THEME="agnoster"
όπου agnoster το όνομα του theme που θέλετε (τα θέματα αποθηκεύονται στον φάκελο .oh-my-zsh). Περισσότερα themes, πως φαίνονται αλλά και τις αντίστοιχες ονομασίες τους θα βρείτε εδώ. Αν πάλι δεν μπορείτε να αποφασίσετε πιο σας αρέσει περισσότερο, πολύ απλά ορίστε το όνομα του θέματος σε random και σε κάθε φορά που θα τρέχετε το zsh θα έχετε ένα νέο θέμα στο τερματικό σας.
Αφαίρεση του χρήστη στο prompt του zsh
Στο theme agnoster και σε κάποια άλλα θέματα εμφανίζεται στο prompt το όνομα του χρήστη και το hostname αλλά χωρίς τον όμορφο χρωματισμό. Αν θέλετε να το ξεφορτωθείτε, απλά προσθέτετε στην τελευταία γραμμή του .zshrc:
DEFAULT_USER=ονομαχρηστη
Syntax highlighting ή πολύ απλά να βλέπετε τι γράφετε
Ξέθαψα από το ελληνικό forum του linuxmint μια πολύ ενδιαφέρουσα προσθήκη στο zsh που έχει να κάνει με το syntax highlighting που χρωματίζει ανάλογα τον κώδικα μας αναλόγως αν αυτό που γράφουμε είναι σωστό ή όχι.
Εγκαθιστούμε το syntax highlighting δίνοντας στο τερματικό:
cd ~/.oh-my-zsh && git clone git://github.com/zsh-users/zsh-syntax-highlighting.git
και το ενεργοποιούμε
echo "source ~/.oh-my-zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> $HOME/.zshrc
και φυσικά στο τέλος τρέχουμε source .zshrc για ενεργοποίηση.
Ρε τι ακαταλαβίστικα είναι αυτά;;;
Υπάρχει μια περίπτωση σε όσους χρησιμοποιούν τροποποιημένο τερματικό, ύστερα από την εγκατάσταση των παραπάνω να έρθουν αντιμέτωποι με την παρακάτω εικόνα.

Μη φοβάστε! Αρκετές από αυτές τις τροποποιήσεις που περιέχονται στο oh-my-zsh απαιτούν κάποια συγκεκριμένα fonts προκειμένου να αποδοθούν σωστά. Αυτά τα fonts ονομάζονται powerline fonts και τα γνωστότερα υπάρχουν στο κέντρο λογισμικού της διανομής σας.
Στην περίπτωση μας δίνουμε:
sudo apt install -y fonts-powerline
και λογικά το πρόβλημα θα διορθωθεί. Αν πάλι δε διορθωθεί τότε αλλάξτε το font του τερματικού σας μέσα από τις επιλογές του και επιλέξτε κάποιο από τα powerline fonts.
Οι πιο τολμηροί αν δεν ικανοποιήθηκαν από τα διαθέσιμα fonts μπορούν να εγκαταστήσουν από github των poweline fonts όλα τα υποστηριζόμενα fonts για περισσότερη ποικιλία.
Άστο δεν είναι για μένα αυτό…
…και θέλω να το απεγκαταστήσω. Στην (σπάνια) περίπτωση που δεν μείναμε ευχαριστημένοι με την καινούρια εικόνα του τερματικού μας, μπορούμε ανά πάσα στιγμή να επιστρέψουμε στην αρχική κατάσταση. Δίνουμε στο τερματικό:
Επαναφέρουμε πρώτα το παλιό μας shell
chsh -s '/bin/bash'
και στη συνέχεια
sudo apt remove zsh && rm -rf ~/.oh-my-zsh
Αν χρησιμοποιήσατε την περίπτωση που αναφέρθηκε στην εικόνα παραπάνω, τότε απλώς απενεργοποιήστε την επιλογή Run a custom command instead of my shell .
Shell redefined
Ομολογώ ότι και εγώ δε γνώριζα για το zshell μέχρι που ασχολήθηκα με το git ( το βλέπετε στην παρακάτω εικόνα) και εκτίμησα τις δυνατότητες του στο tab completion,στην παρακολούθηση σε πραγματικό χρόνο αν άλλαξε κάτι στο φάκελο του αποθετηρίου git ενώ στα δυνατά του σημεία εκτίμησα ότι δε μασάει μια από case sensitive φακέλους.
Με λίγα λόγια έκανε την εμπειρία χρήσης του τερματικού πέρα από ουσιώδη, ευχάριστη. Δοκιμάστε το, πιστεύω αξίζει την προσοχή σας. Θα ήθελα να ακούσω , τέλος την δική σας εμπειρία στην χρήση του zsh και γιατί όχι να μου πείτε τα theme και τα plugin που χρησιμοποιείτε !
Άκυρο : Το ωραίο gifάκι με screenShot συνεχόμενα το έκανες, που έπειτα τα ένωσες;
Το πήρα έτοιμο από εδώ https://github.com/robbyrussell/oh-my-zsh/wiki/External-themes . Αν θες να κάνεις κάτι ανάλογο χρησιμοποίησε το https://asciinema.org/ .
Τα κατάφερα χρησιμοποιόντας αυτόν τον οδηγό (έχω xubuntu 14.04) https://gist.github.com/renshuki/3cf3de6e7f00fa7e744a
Αν πρόσεξες, η διαδικασία είναι πάνω κάτω η ίδια (εγκατάσταση zsh, αλλαγή σε zsh, εγκατάσταση oh-my-zsh, εγκατάσταση poweline fonts) με τη μόνη διαφορά ότι δεν αναφέρθηκα στα powerline colors μιας και στο ubuntu (δεν το γνωρίζω αν είναι στο xubuntu) είναι προεγκατεστημένα.
Γενικά το default terminal του xfce δεν έχει και πολλές δυνατότητες.
Με το terminator τα κατάφερα και δείχνει ΤΈΛΕΙΟ !
Μπράβο!!! Όπως θα διαπιστώσεις και στη συνέχεια το zshell απλοποιεί κατά πολύ κάποιες καθημερινές εργασίες στο τερματικό (όπως ανέφερα και στο άρθρο) πέρα από την αισθητική αναβάθμιση (τουμπάνιασμα :)).
Ευχαριστουμε πολυ
Υπάρχει τρόπος να έχουν κοινό history με το στοκ τερμιναλ; Μπα ε;
Δες αυτό αν βοηθάει https://unix.stackexchange.com/questions/21008/sharing-or-synchronizing-history-between-zsh-and-bash
Φαίνεται κάτι πραγματικά αξιόλογο με πολλά ( αν όχι όλα ) από τα παραπάνω να υπάρχουν και στα επίσημα αποθετήρια των διανομών :
zgen – Lightweight plugin manager for ZSH inspired by Antigen
zplug – next-generation plugin manager for zsh
zsh – shell with lots of features
zsh-common – architecture independent files for Zsh
zsh-dev – shell with lots of features (development files)
zsh-doc – zsh documentation – info/HTML format
zsh-static – shell with lots of features (static link)
zsh-antigen – manage your zsh plugins
zsh-syntax-highlighting – Fish shell like syntax highlighting for zsh
Υπάρχουν και άλλα θέματα πέρα αυτών που αναφέρεις ;
Πέρα από το zsh, υπάρχουν και άλλα shells ή θέματα που μπορούν να κάνουν εύχρηστο και όμορφο το τερματικό ;
Ευχαριστούμε! :)
Καλημέρα σας,
Εξαιρετικός οδηγός.
Ευχαριστούμε πολύ Salih
Πόσα διαφορετικά GNU/Linux or Unix shells υπάρχουν ;
Ένας ακόμη παράγοντας όχι μονάχα οπτικής αλλά και καλύτερης/πιο ευέλικτης λειτουργίας, είναι να αλλάξεις και τελείως το terminal με κάποιο άλλο π.χ. με το Terminator ;
Πέρα από άλλο shell, μπορείς να αλλάξεις και μονάχα το “theme” του τερματικού σου ώστε να φαίνεται “ομορφότερο” ;
Ευχαριστούμε για τον ενδιαφέρον άρθρο.
This waas great to read