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.

AA

Ö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