Reend

Başarılı
Katılım
21 Ağustos 2024
Mesajlar
985
Makaleler
2
Çözümler
19
Beğeniler
1.431
Yer
Rook Islands
Linux'ta terminal, verdiğiniz komutları sizin için shell dediğimiz yazılım ile yerine getiren bir programdır. Linux'un varsayılan shell'i yani kabuğu açılımı bourne again shell olan BASH çoğu linux dağıtımında varsayılan olarak gelen kabuktur ve normal kullanıcılar için pek farketmese de shell seçeneklerimiz BASH ile sınırlı değildir. Bu rehberde size o seçeneklerden birisi olan fish shell'ini nasıl kuracağınızdan, özelliklerinden ve özelleştireceğinizden bahsedeceğim. Hazırsanız başlayalım!

fish shell yani friendly-interactive-shell Axel Liljencrantz tarafından ilk sürümü 2005 yılında yayımlanan, interaktiflik ve kullanılabilirliliğe önem veren ve Unix-like sistemlerde çalışabilen bir kabuktur.

fish'in ana amacı kullanıcıyı konfigürasyon metinleri ve scriptlerine boğmak yerine kurulum sonrası varsayılan olarak zengin özellikli bir şekilde gelip, ek konfigürasyonun çoğu zaman opsiyonel olduğu bir deneyim yaşatmaktır. V4 sürümünden beri yavaş yavaş Rust'a geçtiği için performansı yüksek bir kabuktur ve POSIX kabuk standartlarını takip etmez.

Yani fish ile script yazarken bash ile aralarında farklar bulunabilir. POSIX ve Bash scriptlerine ihtiyaç duyuyorsanız fish sizin için pek iyi bir tercih olmayabilir. Aksi takdirde bana kalırsa denemeye kesinlikle değer bir kabuk.

fish'in özellikleri
  • Tab ile otomatik tamamlama (geçmiş komutlara bakarak)
  • Syntax highlighting
  • Basit ve temiz scripting
  • Komutun geçerliliğini gerçek zamanlı kontrol etme
  • Abbreviations (komut kısaltma)
  • 24-Bit renk desteği
  • Web üzerinden konfigürasyon
fish'in kurulumu
Debian ve Ubuntu tabanlı dağıtımlar (Mint, Zorin veya PoP_Os! vb.)
Bash:
sudo apt install fish
Fedora
Bash:
sudo dnf install fish
Arch ve Arch tabanlı dağıtımlar (Manjaro, Cachy OS, Artix, Endevaour vb.)
Bash:
sudo pacman -S fish
OpenSUSE
Bash:
sudo zypper install fish
Gentoo
Bash:
sudo emerge fish
Void
Bash:
sudo xbps-install fish-shell
Nix
Bash:
sudo nix-env -i fish
Solus
Bash:
eopkg install fish

Dağıtımınıza fish'i indirdikten sonra fish komudu ile fish'i başlatabilirsiniz. Eğer fish'i varsayılan kabuğunuz yapmak isterseniz basitçe chsh -s (which fish) komudunu çalıştırabilirsiniz. Bu komuttan sonra oturumunu kapatıp açmanız gerekebilir.

fish konfigürasyonu
fish shell'i konfigüre etmek oldukça basittir. Konfigürasyon dosyası ~/.config/fish/config.fish dizininde bulunabialir. Ayrıca az önce de bahsettiğimiz web üzerinden konfigürasyon özelliğini kullanmak için basitçe fish_config komudunu çalıştırabiliriz. Bu web sayfasından renk temanızı, prompt tarzınızı, değişkenlerinizi ve fonksiyonlarınızı ayarlayabilirsiniz. Prompt stillerini beğenmediyseniz birazdan oraya da değineceğiz.
1773774488863.webp
1773774501997.webp

1773774515480.webp
1773774528064.webp


fish'in konfigürasyon dosyasında yapabileceğimiz bazı ufak numaralara da bakalım. Tabii yapabileceğimiz tonla şey var ama ihtiyacınızın olabileceği önemli şeyleri kısaca gösterelim.
set -g fish_greeting "" satırı ile tırnak içerisine yazacağınız şey fish'i her başlattığınızda sizi karşılayacak. Tırnak içini boş bırakırsanız varsayılan olarak açık gelen karşılama metni de yok olur.
abbr -a up "sudo zypper dup" satırı ile fish'in kendine has olan özelliklerinden birisi olan abbr'ı kullanabilirsiniz. Dilediğiniz kelime veya harfi tırnak içerisine aldığınız komudu kısaltmak için bu satırı kullanabilirsiniz. Ben örnek olarak sistem güncellemesi için ayarladım bu kısaltmayı.
set -x EDITOR nano satırı ile fish'in ana metin editörünü seçersiniz. Bu sayede bir komut metin editörü talep ettiğinde otomatik olarak o metin editörü açılır. EDITOR yerine PATH gibi ortam değişkenleri de atanabilir.
alias op='sudo'satırı ile istediğiniz komuda kısayol verebilirsiniz. Abbr komudu kısaltır ve daha sonrasında çalıştırdığınızda orjinal komutu genişletir. Alias ise sanki kısayol farklı bir komutmuş gibi görünür, orjinal komut açığa çıkmaz.
Son olarak terminali her başlattığınızda otomatik bir komut çalıştırmak istiyor iseniz config dosyanızın if status in-interactive ile end kısımları arasına komudunuzu yazabilirsiniz. Config dosyasının sonuna da bunu yazarak yapabilirsiniz ancak bu VSCode gibi diğer terminallerde de açılır.
Tabii functions gibi özellikleri de var ancak bunlar biraz ileri seviyeye girdiği için değinmeyeceğim. İlgilenenler dökümantasyondan bakabilir:

Fish özelleştirme
Son olarak kabuğumuzu nasıl özelleştirebileceğimizden bahsedelim. fish_config'de web arayüzünden renk teması yanında prompt kısmını da özelleştirebiliyorduk. Eğer prompt temalarından hoşlanmadıysanız Starship temaları yükleyebilirsiniz. Starship çoğu kabukta çalışabilen bir prompt özelleştirme aracıdır.
Starship'i kurmak için öncelikle sisteminizde bir Nerd Font kurulu olmalı ve onu terminalinizde etkinleştirmelisiniz. Nerd Fontları buradan inceleyip hoşunuza gideni indirebilirsiniz. Ardından curl -sS https://starship.rs/install.sh | sh komudunu çalıştırarak Starship'i kurabilirsiniz. Tabii depolarınızda varsa direkt paket yöneticiniz aracılığıyla da indirebilirsiniz. Son olarak fish config dosyanıza starship init fish | source
satırını ekleyerek kurulumu tamamlayabilirsiniz.

Ardından bu adresten istediğiniz preset'i seçip kurulum aşamalarını takip ederek dilediğiniz prompt temasını yükleyebilirsiniz. Benim favorim starship preset gruvbox-rainbow -o ~/.config/starship.toml komuduyla kurabileceğiniz Gruvbox teması. <3
1773777849897.webp


Tabii fish shell'i ile ilgili bir rehber yapıyorsak Fisher'dan bahsetmemek olmaz. Fisher, fish shell için bir plugin yöneticisidir. oh-my-zsh'e benzetebilirsiniz yani. Ayrıca Fisher artık geliştirilmeyen oh-my-fish eklentilerini de destekler.

Fisher'ı kurmak için tek yapmanız gereken curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher komudunu çalıştırmak. ardından bu adresten pluginleri keşfedebilirsiniz. Pluginlerin sayfalarında kurulum aşamaları var ancak çoğunlukla fisher install ile kurulum yapılır. Aşağıda önerdiğim bazı Eklentilere bakabilirsiniz.

  • fish-abbreviation-tips | Yazdığınız komudun hali hazırda bir kısaltmasını eklemişseniz bunu size hatırlatır.
  • You Should Use | Yazdığınız komudun hali hazırda bir alias'ını eklemişseniz bunu size hatırlatır.
  • fish_logo | ASCII şeklinde fish logosunu görüntüler.
  • Natural Selection | Kopyala & Yapıştır işlemlerinin daha doğal olmasını sağlar.
  • fish_docker | Docker kullanıyorsanız docker komutları için tamamlama sağlar.
  • humantime | Zamanları insanların anlayabileceği şekilde gösterir.
  • paradox-theme | Güzel bir renk teması. Bir sürü renk ve prompt teması var anca bu benim favorim
  • fish-insulter | Geçersiz bir komut girdiğinizde sizi aşağılayan bir eklenti. Evet.
  • shell-mommy | Bunu açıklamayacağım
  • done | 5 saniyeden daha uzun süren işlemler bitince size bildirim gönderir.
  • fish_ai | fish'i ai ile kullanmanızı sağlar. İstediğiniz AI modelini seçebilirsiniz ancak API_KEY gerekli.

Son söz
Bu rehberde sizlere benim de severek kullandığım fish kabuğunu nasıl kurabileceğinize, özelleştirebileceğinize ve kullanabileceğinize değindik. Benim yazarken keyif aldığım bir rehber oldu. Umarım siz de rehberi sevmişsinizdir. Okuduğunuz için teşekkürler, sağlıcakla kalın.
 
Hackerlar bunu kullanıyor diye biliyorum. Günümüzde hackerlar devlet destekli oluyor. Bunun hakkında ne düşünüyorsunuz? Kendileri özel program yazıp kullanıyor mu? Her sisteme saldırı yapıyorlar.

Soru biraz garip oldu ama Linux konusu açılınca sormak istedim.
Devlet destekli olanlarda vardır, bağımsız gruplar da vardır, bu işi tek yapanlar da vardır. Programı kendileri de yazabilirler veya var olan bir tool ile saldırı yapabilirler. Hacker'ın yaklaşımına ve yetkinliğine bağlı bu durum.

Daha fazla sorunuz varsa Linux kategorisinde konu açabilirsiniz biraz konu dışı oldu. :D