Z Shell ve Oh My Zsh
Certbot ile nasıl SSL sertifikası oluşturabileceğimize değindiğim yazıda “komut satırı arayüzüne ve kullanımına aşina iseniz…” şeklinde bir ifadeye yer vermiştim.
Özellikle kapsamı önemli olmaksızın, sunucu yapılandırmalarında ve elbette yazılım geliştirme süreçlerinde komut satırı arayüzünün yeri yadsınamaz. Bu sebeple, kullanım aşinalığı kazanmak, pratik araçları edinmek ve elbette özelleştirmeler ile çalışma biçimimize en uygun ortamı yaratmamız gerekir. Standart olarak çoğu terminal ve terminal emulator Bash (Bourne-again shell) komut dili yorumlayıcısını (veya kabuğunu) ön tanımlı olarak kullanmaktadır. Ancak, elbette Bash dışında da çeşitli seçenekler mevcut. Bunlardan biri de Z Shell (Zsh).
Zsh
Zsh veya Z Shell, Paul Falstad tarafından Princeton Üniversitesi’nde öğrenciyken geliştirilmiş ve ilk olarak 1990 yılında yayınlanmıştır. Z Shell, Unix-like işletim sistemlerinde (GNU/Linux ve macOS dahil) rahatlıkla kullanılabilmektedir. Bash’e çok benzeyen Z Shell1, Bourne kabuğunun genişletilmiş bir sürümü olarak da nitelendirilebilir. Dolayısıyla, Bash’in sahip olduğu özelliklerin çoğunu içermektedir. Ek olarak, Zsh bir diğer alternatif olan KornShell (ksh)2 ile de benzerlikler taşımaktadır. Zsh tarafından sunulan özellikler ve kullanım detayları için Awesome Zsh3 sayfasını inceleyebilirsiniz. Ek olarak, A User’s Guide to the Z-Shell4, Zsh-Lovers5 ve Cheatsheet6 sayfaları üzerinden Z Shell ile ilgili tüm detaylara ulaşabilirsiniz.
Benim özellikle beğendiğim özelliklere kısaca değinmek gerekirse;
- Autocomplete:
cd /u/lo/sh
yazıp [TAB] tuşuna basarsanız tanım/usr/local/share
olarak güncellenir. TAB tuşu detaylandırma / tamamlama gibi işlemler gerçekleştirmektedir. Tamamlama işlemi sadece kesin ifadeler için değil, yaklaşık ifadeler için de geçerlidir. - History:
Ctrl + R
tuşlarını kullanarak geçmiş komutlarda arama yapabilirsiniz. - Globbing:
*
(asterisk) ile gemiş tanımlamalar yapılabilir. Örneğin,rm *.txt
komutu ile text dökümanlarını silmek isteyelim.rm *.txt
komutu ardından[TAB]
tuşuna bastığımızda komuttan etkilenecek tüm dosyalar bize iletilecektir. Ya da*(.)
ile klasörleri hariç tutup sadece dosyaları tanımlayabiliriz. İletilen dosyalar arasında[TAB]
tuşu vasıtasıyla gezinmemiz de mümkün. Bir dizin ve alt dizin içeriğini bu şekilde görüntülemek için**/*
yazıp[TAB]
ile listeleme işlemleri yapabiliriz. - Kolaylıkla alias (kısayol) oluşturabiliriz.
Zsh Kurulumu
Kurulum işlemini Homebrew aracılığıyla kolaylıkla gerçekleştirebiliriz.
brew install zsh zsh-completions
Diğer indirme işlemleri için Installing ZSH7 sayfasını inceleyebilirsiniz. İndirme işleminin tamamlanmasının ardından versiyon kontrolü yapıp kurulumun sorunsuz bir şekilde gerçekleştirildiğinden emin olabilir ve ardından zsh’i varsayılan kabuk olarak tanımlayabiliriz.
zsh --version
chsh -s /bin/zsh
Oh-My-Zsh
Oh-My-Zsh, zsh (Z Shell) için geliştirilmiş olan en popüler eklenti framework’üdür ve bünyesinde pek çok yerleşik eklenti ve tema barındırmaktadır. Elbette benzer amaçla geliştirilen Antigen8 gibi alternatif seçenekler de söz konusudur.
Oh My Zsh sizi 10x developer yapmaz…ama öyle hissettirir.
Oh-My-Zsh Kurulumu
Oh-My-Zsh'i aşağıdaki basit install script ile hızlıca kurabilir ve kullanmaya başlayabiliriz9.
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
Kurulumun ardından, ihtiyaç duyduğumuz eklenti işlemlerini ~
dizininde bulunan .zshrc
dosyası aracılığıyla gerçekleştirebiliriz.
nano ~/.zshrc
Zsh Eklentileri ve Temaları
İlgili eklentilerin listesine Oh-My-Zsh repository10 üzerinden ulaşmak mümkün. Aşağıda, liste halinde bazı eklentileri listeledim. Eklenti ismini tıklayarak kullanım detaylarına ulaşabilirsiniz.
git | Golang | gulp | grunt |
npm | node | osx | thefuck |
vscode | wp-cli | yarn |
Unutmadan, bilgisayarda kurulu olan eklenti ve temaları da ayrıca listeleyebilirsiniz.
# themes
cd ~/.oh-my-zsh/themes/
ls -a
# plugins
cd ~/.oh-my-zsh/plugins/
ls -a
nano
ile ~/.zshrc
dosyası içeriğinde plugins=(...)
satırına ulaşabilir ve ihtiyaç duyduğunuz eklentileri bu satırda tanımlayarak yüklenmelerini sağlayabilirsiniz.
plugins=(git bower brew composer common-aliases dirhistory encode64 golang gulp grunt httpie last-working-dir mysql-macports npm node osx ssh-agent sudo thefuck vscode web-search wp-cli yarn)
Yapmanız gereken, ilgili eklemeleri yaptıktan sonra dosyayı kaydetmek ve source
ile işleme almak.
source ~/.zshrc
Zsh ön tanımlı olarak robbyrussell
teması ile gelmekte. Yine, theme tanımını ~/.zshrc
dosya içeriğinde görmek mümkün.
ZSH_THEME="robbyrussell"
Kullanılabilecek temalara ise Themes sayfasından ulaşabilir ve detaylarını inceleyerek size en uygun seçeneği ZSH_THEME
değeri olarak belirtebilirsiniz.
Her session için rastgele tema seçilmesini isterseniz aşağıdaki gibi bir tanımlama yapabilirsiniz.
ZSH_THEME_RANDOM_CANDIDATES=(
"robbyrussell"
"agnoster"
)
Unutmadan, çoğu tema Powerline Fonts kurulumu gerektirmektedir.
İleri Okumalar
- What is ZSH, and Why Should You Use It Instead of Bash?
- Jazz Up Your “ZSH” Terminal In Seven Steps — A Visual Guide
- Zsh vs Bash ↩
- The KornShell Command And Programming Language ↩
- hmml/awesome-zsh. GitHub ↩
- Peter Stephenson. (2003). A User's Guide to the Z-Shell ↩
- zsh-lovers. Tips, tricks and examples for the Z shell ↩
- Cheatsheet. robbyrussell/oh-my-zsh. GitHub ↩
- Installing ZSH. robbyrussell/oh-my-zsh. GitHub ↩
- zsh-users/antige. GitHub ↩
- Oh My Zsh ↩
- Plugins. robbyrussell/oh-my-zsh. GitHub ↩