Zsh ile Linux (Ubuntu) Terminalinin Görünümünü ve İşlevselliğini Artırma

Erhan ÜRGÜNErhan ÜRGÜN
5 min read

Selamlar! Yazılım dünyasında her gün kullandığım Linux (Ubuntu) terminalimi hem daha şık hem de daha işlevsel hâle getirmek için ufak bir maceraya atıldım. İşin aslı, kullandığım terminalin sade görünüşü beni bir süre sonra sıkmaya başladı. Üstelik tekrar tekrar aynı komutları yazmaktan, uzun klasör isimlerini yanlış yazmaktan da bıkkınlık geldi.

Derken, Zsh (Z Shell) ve üzerine inşa edilen popüler araçlar radarımda belirdi. Terminalime farklı bir hava ve ekstra kolaylıklar kazandıran bu araçları ve deneyimlerimi gelin birlikte keşfedelim.


Zsh Nedir, Neden Tercih Ettim?

Zsh, Bash’e alternatif bir kabuk (shell) olarak tanımlanabilir. Pek çok kişinin “Bir shell ne kadar farklı olabilir ki?” dediğini duyar gibiyim. Ama Zsh gerçekten çok daha esnek, özelleştirilebilir ve geliştirici dostu bir deneyim sunuyor. Benim için bir numaralı sebep, eklenti sistemi ve temalar. Özellikle kendi yazdığım komutları yeniden kullanmak istediğimde, Zsh’in otomatik tamamlama ve tahmin özelliği beni kendine çekti diyebilirim.

Kısaca kurulum:

  1. sudo apt update && sudo apt install zsh -y komutuyla Zsh’i indirip kurdum.

  2. chsh -s $(which zsh) diyerek varsayılan shell olarak ayarladım.

  3. Çıkış yapıp tekrar girdiğimde artık Zsh karşıma gelmeye başlamıştı.

Oh My Zsh: Zsh ile Tanışmanın En Keyifli Yolu

Zsh kurduktan sonra, onu bir çerçeve (framework) yardımıyla zenginleştirmek istedim. Burada karşıma “Oh My Zsh” çıktı.

Oh My Zsh;

  • Yüzlerce tema,

  • Bir sürü eklenti,

  • Kolay güncelleme yapısı sunan bir çerçeve.

Nasıl kurdum?

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Bu komutla Oh My Zsh tek seferde sistemime yüklendi. Kurulum bitince ~/.zshrc dosyam otomatik olarak Oh My Zsh ile entegre hale geldi.

Powerlevel10k: Hızlı ve Gösterişli Tema

Kabuğumu dönüştürme yolunda, sıradaki durağım Powerlevel10k oldu. Bu tema hem hızlı çalışıyor hem de görsel olarak oldukça etkileyici bir arayüz sunuyor.

  1. GitHub’dan Powerlevel10k deposunu indirip, Oh My Zsh’in tema klasörüne klonladım:

     git clone --depth=1 https://github.com/romkatv/powerlevel10k.git \
       $ZSH_CUSTOM/themes/powerlevel10k
    
  2. Sonrasında ~/.zshrc dosyamda aşağıdaki satırı bulup değiştirdim:

     ZSH_THEME="powerlevel10k/powerlevel10k"
    
  3. Terminali yeniden başlatınca Powerlevel10k devreye girdi. Adeta bambaşka bir terminale dönüştüm!

Powerlevel10k bana kullanıcı adım, klasör yolum, Git dalı, tarih/saat gibi bilgileri renkli ve simgelerle beraber gösteriyor. Ayrıca ilk kurduğumda interaktif bir kurulum sihirbazı çıktı. Bu sihirbaz sayesinde terminal'i tam olarak kendi zevkime göre ayarladım.

Önemli Not: Powerlevel10k temasının daha da güzel gözükmesi için özel fontlar (Nerd Fonts) gerekiyor. Ör: MesloLGS NF ‘u kullanabilirsiniz!

Zsh Eklentileri: Otomatik Tamamlama ve Daha Fazlası

zsh-autosuggestions

En sevdiğim eklentilerden biri zsh-autosuggestions. Önceden yazdığım komutları tahmin ederek, metnin kalan kısmını silik bir yazı stiliyle gösteriyor. Örneğin, daha önce pnpm dev yazmışsam, tekrar pnpm d yazmaya başlarken pnpm dev şeklinde bir öneri görebiliyorum. Sağ ok tuşuna, TAB'a veya CTRL + F ile tamamlarsam direkt kullanabiliyorum.

Kurulumu oldukça basit:

git clone https://github.com/zsh-users/zsh-autosuggestions \
  ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

Sonra ~/.zshrc içinde şu satırı ekliyorum:

# vim ~/.zshrc
plugins=(git zsh-autosuggestions)

ve source ~/.zshrc diyerek ayarları yüklediğimde, terminalim artık komutlarımı tahmin etmeye başlıyor.

zsh-syntax-highlighting

İkinci favori eklentim de zsh-syntax-highlighting. Bu eklenti, terminalde yazdığım komutları sözdizimine göre renklendiriyor. Hatalı veya geçersiz bir komut varsa kırmızı renkte uyarıyor. Doğru olanlar yeşil renkte gösteriliyor. Böylece gözümden kaçan ufak yazım hatalarını daha kolay fark edebiliyorum.

Kurulumu:

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git \
  ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

~/.zshrc dosyasında plugini etkinleştiriyorum:

# vim ~/.zshrc
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)

Ardından source ~/.zshrc diyerek aktif hale getiriyorum.

Birkaç Faydalı Terminal Aracı

İşlevselliğimi arttıran bazı araçlardan da bahsetmek isterim:

  • bat: cat komutuna benzer şekilde dosya içeriklerini gösterir, ancak sözdizimi vurgulaması yapar ve satır numaraları ekler.

  • exa: ls komutuna renkli, ikonlu ve daha okunaklı bir alternatif.

  • fzf: Komut geçmişi, klasör ve dosya araması gibi durumlarda fuzz (bulanık) arama imkânı sunan interaktif bir araç.

  • ripgrep (rg): Metin aramalarını çok hızlı yapar, grepe kıyasla modern ve pratik.

Bu araçları, apt veya snap aracılığıyla kolayca yükleyebilirsiniz. Örneğin:

sudo apt install bat exa fzf ripgrep

Önemli Not: Ubuntu sürümünüze göre bat yerine batcat olarak geçiyor olabilir, o yüzden paket adlarına dikkat etmenizi öneririm.

exa Kurulurken Aldığım Hata ve Çözüm Yöntemleri

Terminali renklendirmek ve gelişmiş özellikler katmak deyince, exa epey popüler. ls’in modern, renkli ve ikon desteği olan bir alternatifi. Fakat Ubuntu’nun bazı sürümlerinde exa yerine eza paketi bulunabiliyor veya exa tamamen kaldırılmış olabiliyor. Ben de şu şekilde bir hata aldım:

Package exa is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
However the following packages replace it:
  eza

İki farklı çözüm yolum oldu:

1. eza Kurup alias Oluşturmak

eza, exa’nın aktif geliştirilen bir fork’u. Yani exa’yı aratmıyor, hatta yeni özellikler eklenmiş bir sürümü diyebilirim.

sudo apt update
sudo apt install eza

Bittikten sonra, exa komutuna alıştığım için bir alias ekledim:

echo 'alias exa="eza"' >> ~/.zshrc
source ~/.zshrc

Böylece terminalde exa yazdığımda aslında eza çalışmaya başladı.

2. exa’yı Cargo Üzerinden Kurmak

Orijinal exa’yı kullanmakta ısrarcıysanız, Rust’ın paket yöneticisi Cargo ile derleyip kurabilirsiniz. Önce Rust’ı kurmalısınız:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Oturum kapatıp açın veya:
source $HOME/.cargo/env

Daha sonra:

cargo install exa

Bitince ~/.cargo/bin klasörünü PATH’e eklemek gerekiyor:

echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

Böylece orijinal exa da emirlerinize amade oluyor.

Ben şahsen eza ile devam etmeyi tercih ettim, çünkü yüklemesi kolay ve aktif geliştirme alması hoşuma gitti.

Terminal Maceramın Bana Kazandırdıkları

Artık Ubuntu terminalime girdiğimde, sadece komut çalıştırdığım bir ekran yerine adeta kişisel bir asistana dönüştüğünü hissediyorum. Komutlarım otomatik tamamlanıyor, göz alıcı renklerle vurgulanıyor ve Git depo bilgilerini tek bakışta görebiliyorum. Geliştirici deneyimim belirgin şekilde hızlandı.

  • Zsh ile Bash’in klasik yapısından kurtulup daha esnek bir kabuğa geçtim.

  • Oh My Zsh ve Powerlevel10k ile görünümü ve işlevselliği eş zamanlı artırdım.

  • zsh-autosuggestions ve zsh-syntax-highlighting sayesinde metin yazmak çok daha keyifli ve hatasız hale geldi.

  • eza/alias exa ile klasör içeriklerini modern bir arabirimde görüntüleyebiliyorum.

  • ripgrep (rg) ile aradığım şeyi grep'e kıyasla çok daha hızlı bir şekilde bulabiliyorum.

Eğer siz de terminalde uzun vakit geçiriyorsanız, bu adımları mutlaka deneyin derim. Hem eğlenceli hem de oldukça verimli bir deneyim elde ediyorsunuz. Karşınıza çıkan hatalar veya farklılıklar için de bu yazıda paylaştığım alternatif kurulum yöntemlerini göz önünde bulundurabilirsiniz.

Umarım deneyimlerimi paylaştığım bu yazı, sizin de kendi terminalinizi özelleştirme yolculuğunuzda rehber niteliğinde olur. Bir sonraki yazıda görüşmek dileğiyle…


Yazımı beğendiyseniz paylaşmayı ve düşüncelerinizi yorumlarda belirtmeyi unutmayın! Ayrıca; eksik, hatalı veya yanlış bir bilgi olması halinde yorumlarda (mümkünse bilginin kaynağıyla beraber) belirttiğiniz takdirde ilgili düzenlemeyi yaparım...

Bunun gibi daha fazla paylaşım için takipte kalın:

0
Subscribe to my newsletter

Read articles from Erhan ÜRGÜN directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Erhan ÜRGÜN
Erhan ÜRGÜN

Laravel | AdonisJS | Back-End Developer