2 puan yazan GN⁺ 2023-08-28 | 2 yorum | WhatsApp'ta paylaş
  • fish, macOS, Linux ve ilgili sistemlerde çalışan kullanıcı dostu bir komut satırı kabuğudur; ek yapılandırma olmadan sözdizimi vurgulama, yazarken otomatik öneriler ve sekme tamamlama sunar
  • bash veya zsh gibi diğer kabuklara genel olarak benzer şekilde çalışır, ancak "unlike other shells" ile bulunabilecek başlıca farklar resmi eğitimde özetlenmiştir
  • Kurulum yolları platforma göre ayrılır; macOS'ta Homebrew, MacPorts, fishshell.com yükleyicisi ve bağımsız uygulama desteklenir
    • macOS için minimum desteklenen sürüm 10.12'dir
    • Linux için Debian, Fedora, openSUSE, Red Hat Enterprise Linux/CentOS paketleri openSUSE Build Service üzerinden sunulur
    • Ubuntu paketleri fish PPA üzerinden kurulabilir
    • Windows 10/11'de WSL Linux dağıtımı adımlarıyla veya kaynak koddan derleyerek kurulabilir; tüm Windows sürümlerinde Cygwin veya MSYS2 kurulumu desteklenir
  • Kurulumdan sonra mevcut kabukta fish çalıştırılarak kullanıma başlanır; fish içindeki help komutu ve resmi belgeler üzerinden kullanıcı dokümantasyonuna erişilebilir
  • Çalıştırmak için temel POSIX araçları ile mktemp gibi yaygın *nix sistem yardımcı programları gerekir; bazı isteğe bağlı özellikler ek araçlar ister
    • Kılavuz sayfalarına dayalı otomatik tamamlama üretimi ve fish_config web yapılandırma aracı için Python 3.5+ gerekir
    • Sistem panosu entegrasyonu için xsel, xclip, wl-copy/wl-paste, pbcopy/pbpaste araçlarından biri gerekir
    • yarn ve npm için tam tamamlama desteği all-the-package-names NPM modülünü gerektirir
  • Kaynaktan derlemek için Rust 1.85 veya üzeri, CMake 3.15 veya üzeri ve bir C derleyicisi gerekir; PCRE2 ve gettext ise isteğe bağlı bağımlılıklardır
  • Hem CMake derlemesi hem de Cargo derlemesi desteklenir; Cargo derlemesi bağımsız çalıştırılabilir ikiliyi ~/.cargo/bin/ içine yerleştirir, tam CMake kurulumu ise standart konumlarda man sayfaları, HTML belgelerinin yerel kopyası ve ek işlev/tamamlama/yapılandırma dizini seçenekleri sunar

2 yorum

 
joyfui 2023-08-28

Şu anda zsh kullanıyorum ama bir dahaki fırsatta fish'i de bir kez denemem gerekecek.

 
GN⁺ 2023-08-28
Hacker News yorumları
  • fish’in en büyük avantajı neredeyse hiç yapılandırma gerektirmemesi. 41 yaşındayım, ailem var; araç yapılandırmaya zaman harcayacak sabrım hiç yok. zsh de onu kullanılabilir hâle getirmeye çalıştığım her seferinde önüme taş koyuyormuş gibi geliyordu.
    Çeşitli zsh betiklerinin de pek sağlam olduğu söylenemez; shell’i sık kullanıyorsanız, kaynağı çoğunlukla kopyala-yapıştır olan kullanıcı betikleri yığınında ele alınmamış uç durumlarla sonunda karşılaşıyorsunuz.
    Benim fish dotfiles’ım https://github.com/mattgreen/dotfiles/tree/master/fish; submodule tabanlı bir eklenti sistemi, asenkron git prompt’u, alias’lar ve birkaç ortam değişkeninden ibaret.
    fish zaten neredeyse her şeyi sunduğu için bakım gerekmiyor; artık tek isteğim, durum takibi nedeniyle kullanıcı kodundansa shell’in üstlenmesinin daha iyi olduğu asenkron prompt’u birinci sınıf bir özellik hâline getirmesi.

    • bash kullanıyorum ve araç yapılandırmaya da sabrım yok; ama şu fish dotfiles’ı benim bash yapılandırmamdan daha karmaşık görünüyor. Eskiden ekipteki diğer mühendislerin çoğu fish kullanıyordu, ama fish’in bash ile yapılamayan bir şeyi yaptığını görmedim; sadece biraz daha süslü görünüyordu.
      Daha da sinir bozucu olan, yardım istediklerinde söylediğim komutların fish’te hiçbirinin çalışmamasıydı; bu yüzden sorun giderme çok yavaşladı.
    • Yaklaşık 10 yıl önce zsh’nin ilk kurulum sihirbazından yalnızca bir kez geçtim[1]; 5-10 dakika kadar sürdü. Her komutun ne anlama geldiğini tam olarak anlamıyorum ama o zamandan beri hiç değiştirmedim ve düzgün çalışıyor.
      zsh yapılandırmamın geri kalanı çoğunlukla bir prompt aracı ve yıllar içinde eklediğim şeylerden oluşuyor; eklenti kullanmıyorum ve ihtiyaç da duymuyorum. İhtiyaç duysaydım, daha önce denediğim zplug’un kurulumu ve kullanımı gerçekten kolaydı.
      [1]: https://github.com/mid-kid/config/blob/master/shell/.zshrc#L...
    • Neredeyse tamamına katılıyorum. İş nedeniyle /bin/sh uyumlu betikler yazmak zorunda olmasaydım, benzer nedenlerle Fish’e geçerdim.
      Kullanıcı deneyimi açısından diğer shell’lerden açık ara önde; Mac gibi işletim sistemlerinde varsayılan olarak benimsenmemiş olması şaşırtıcı. Fish ile aileme terminalde yapılacak işleri tarif ettiğimde kimse sinirlenmiyor ya da pes etmiyor; diğer shell’ler için bunu söylemek zor.
    • zsh yapılandırmasının sürekli önüme çıkması kısmını oh-my-zsh kurtardı. Yapılandırmanın çoğunu omz’ye devreden çok küçük bir dotfile tutuyorum; bunu da her yeni makinede clone ettiğim bir bare repo’da saklıyorum.
      Birkaç yıl önce istediğim eklentileri seçip repo’yu oluşturmak yaklaşık bir saatimi aldı; artık yeni bir makine 5-10 dakikada hazır oluyor.
    • zsh’yi zaten hoşuma gidecek şekilde yapılandırdıysam, fish’e geçince ne tür bir iyileşme ya da değişiklik olacağını merak ediyorum.
  • Fish’i 10 yılı aşkın süredir login shell olarak kullanıyorum ve diğerlerinin aksine betik yazmak için de kullanıyorum. Basit işlerde bash’e göre daha az tuzak olduğu için betik yazmak çok daha iyi.
    Çevrimiçi açıklamaları okurken bash örneklerini fish’e çevirmek önemsiz bir iş. Bunun sorun olduğunu söylemelerini anlayamıyorum; gerçekten de bir kez bile sıkıntı yaşamadım.

    • Betik yazımında daha sık kullanmamı engelleyen şeylerden biri, bash’teki set -e gibi hata olduğunda başarısız olma modunun olmaması. Her durumda, örneğin pipefail’e kadar düzgün çalıştırmanın zor olduğunu biliyorum; ama bu özellik olmadan çok sayıda betik yazmak istemem.
  • fish’i yaklaşık 5 yıldır kullanıyorum ve artık geri dönmek istemiyorum. Hiçbir ek özellik kurmadan, eski zsh yapılandırmamın paket yöneticisi ve eklentilerle yaptığı her şeyi varsayılan hâliyle yapıyor.
    Değiştirdiğim tek şey spacefish oldu; şimdi de starship.rs ekledim.

    • Ben de aynı yoldan geçtim ama son zamanlarda Tide prompt’una taşındım. Saf fish ile yazılmış ve gerçekten şaşırtıcı derecede hızlı.
    • z de denemeye değer. Ayrıca şu an yapılandırmayı göremiyorum ama uzun süren bir arka plan komutu bittiğinde haber veren bir eklenti var; oldukça kullanışlı.
    • starship’i ne için kullandığını merak ediyorum. İlginç görünüyor ama potansiyelini gerçekten kullanmak için nasıl bir hayal gücü gerektiğini pek bilmiyorum.
    • Tersine arama artık destekleniyor mu? Otomatik tamamlamayla ilgilenmiyorum.
    • Mevcut betikleri fish’e dönüştürmek zorunda kaldın mı? Yoksa otomatik bir yöntem var mı?
  • Uzun zaman geçtiği için ilgili başlıkları bir araya getirdim. Başka var mı?
    What's Happening with Fish Releases? - https://news.ycombinator.com/item?id=36875727 - Temmuz 2023
    My shell setup with Fish and Tmux (2021) - https://news.ycombinator.com/item?id=35672358 - Nisan 2023
    Ask HN: Are alternative (oil, nu, etc.) shells usable as daily drivers? - https://news.ycombinator.com/item?id=34722208 - Şubat 2023
    Rewrite it in Rust - https://news.ycombinator.com/item?id=34588340 - Ocak 2023
    Fish 3.6.0 - https://news.ycombinator.com/item?id=34298157 - Ocak 2023
    Fish Shell 3.5.0 - https://news.ycombinator.com/item?id=31768405 - Haziran 2022
    Fish 3.4.0 - https://news.ycombinator.com/item?id=30734072 - Mart 2022
    Fish 3.4.0 Released - https://news.ycombinator.com/item?id=30660587 - Mart 2022
    Ask HN: Oil or Fish Shell? - https://news.ycombinator.com/item?id=30154652 - Ocak 2022
    The fish shell is amazing - https://news.ycombinator.com/item?id=29341390 - Kasım 2021
    Nsh: A fish/bash-like Posix shell in Rust - https://news.ycombinator.com/item?id=28967257 - Ekim 2021
    Fish Shell 3.3 - https://news.ycombinator.com/item?id=27663637 - Haziran 2021
    Fish shell - https://news.ycombinator.com/item?id=27180420 - Mayıs 2021
    Fish Shell 3.2 - https://news.ycombinator.com/item?id=26302678 - Mart 2021
    Fish is not operational on a VT220 terminal (2015) - https://news.ycombinator.com/item?id=25526237 - Aralık 2020
    New Features in the Fish Shell - https://news.ycombinator.com/item?id=24631138 - Eylül 2020
    Dolphins learn from their peers to use empty shells to catch fish - https://news.ycombinator.com/item?id=23660910 - Haziran 2020
    Fish Shell 3.1.0 - https://news.ycombinator.com/item?id=22314671 - Şubat 2020
    Fish: A command line shell for the 90s - https://news.ycombinator.com/item?id=21361696 - Ekim 2019
    Show HN: Fisher 3.0 – the package manager for the fish-shell - https://news.ycombinator.com/item?id=18920972 - Ocak 2019
    Fish shell 3.0 - https://news.ycombinator.com/item?id=18776765 - Aralık 2018
    Fish: A user-friendly command line shell for macOS, Linux, etc - https://news.ycombinator.com/item?id=15910897 - Aralık 2017
    Fish (Shell) for a Week - https://news.ycombinator.com/item?id=14422672 - Mayıs 2017

Why I'm Hooked on Fish Shell (and How to Set It Up Right) - https://news.ycombinator.com/item?id=14417046 - Mayıs 2017
The fish shell is awesome - https://news.ycombinator.com/item?id=14179081 - Nisan 2017
Fish Shell Design Principles - https://news.ycombinator.com/item?id=11102941 - Şubat 2016
Fish shell 2.2 - https://news.ycombinator.com/item?id=9873090 - Temmuz 2015
Fish shell - https://news.ycombinator.com/item?id=9566441 - Mayıs 2015
FISH Shell: A dynamic shell - https://news.ycombinator.com/item?id=8783150 - Aralık 2014
Fish shell 2.1 - https://news.ycombinator.com/item?id=6626635 - Ekim 2013
fish shell - https://news.ycombinator.com/item?id=6224524 - Ağustos 2013
Fish shell 2.0 - https://news.ycombinator.com/item?id=5723235 - Mayıs 2013
Fish 2.0 shell beta - https://news.ycombinator.com/item?id=5567639 - Nisan 2013
Fish: Finally, a command line shell for the 90s - https://news.ycombinator.com/item?id=4073162 - Haziran 2012
Fish sucks (but your shell sucks more) - https://news.ycombinator.com/item?id=2031110 - Aralık 2010
Fish - The friendly interactive shell - https://news.ycombinator.com/item?id=820677 - Eylül 2009
Fish Shell: A User-Friendly Shell or Like a Heavily Customized zsh - https://news.ycombinator.com/item?id=811113 - Eylül 2009

  • https://news.ycombinator.com/item?id=23660910 kimin izlediğini kontrol etmeye yönelik bir tuzak bağlantı olabilir gibi :)

  • Bir dönem zsh kullanmıştım ama varsayılan hâliyle aslında bash’e benziyordu; avantajlarını görmek için zaman ayırıp özelleştirmek gerektiği izlenimine kapılmıştım. Shell ayarlarına zaman harcamak istemiyorum, sadece hemen çalışmasını istiyorum
    Fish, hiç ayar yapmadan bile bash’ten belirgin şekilde daha iyi ve sihirli gibi otomatik tamamlama hayat değiştirecek düzeyde

  • Üniversitedeyken Ubuntu’da fish kullanıyordum, ilk işimde verilen MacBook’u da fish olarak ayarlamıştım. Tek bir DevOps sorumlusu vardı; uygulama kurulum belgeleri ve script’ler yalnızca zsh ya da bash içindi ve açıkçası zsh’ye geçsem de olur diye düşünmüştüm
    Ama o kişi beni vazgeçirdi ve yarım gününü fish öğrenmeye ayırıp belgelere fish script’lerini de tamamen ekledi. Gerçekten minnettar olduğum biri

  • fish’in iyi yanı, eklenti kurmadan da en baştan epey fazla kolaylık özelliği sunması. Buna sadece starship.rs ve fzf entegrasyonu ekliyorum

    • bash’te de genelde bu ikisi yapılmıyor mu?
    • starship.rs neden gerekli?
  • fish’in sloganını çok seviyorum ve oldukça komik buluyorum. Bir süre kullandım ve yeterince iyiydi, ama geliştirme stratejisi gereği yapılandırılabilir seçeneklerden açıkça kaçınıyor
    Bazı şeyler sürekli canımı sıkıyordu ve davranışı değiştirmenin yolu olmadığı için zsh’ye geçip fish gibi davranacak ama benim istediğim şekilde olacak hâle getirdim. Benim için iyi bir karardı ve tavsiye ederim. oh-my-zsh ya da eklenti yöneticilerini de pek sevmiyorum

    • Seni nelerin rahatsız ettiğini biraz daha ayrıntılı anlatabilir misin? Eleştirmek için değil, merak ettiğimden soruyorum
      fish, zsh ve artık elvish de kullanıyorum; benim için önemli olan otomatik öneri ve yukarı okla geçmişi getirme özelliği. zsh’de otomatik öneri modülü var, elvish’te de yukarı ok geçmişi var ama yalnızca başlangıç kısmını eşleştiriyor
      Bu yüzden fish hâlâ önde; elvish ise bir komut yazıp yukarı oka bir kez basınca neredeyse otomatik öneri gibi hissettirdiği için ikinci sırada. Bunu zsh’de nasıl yapacağımı bulamadım; blok işleme konusunda da geleneksel sh ailesi tarzındansa fish ve elvish yaklaşımını daha çok seviyorum
  • fish’in en büyük hatası bash uyumlu olmaması. bash’e çok alışkınım; şirket sistemlerinden bazılarında yalnızca bash’e erişilebiliyor ve fish kurulamıyor, bu yüzden değiştirmek istemiyorum
    Sürekli farklı betik dilleri arasında gidip gelmek acı verici olur ve kas hafızasıyla rahatça yapabileceğim bir şey olmaz

    • Script’in en üstüne #!/bin/bash koyup script yazmayı bash ile sürdürürken, yalnızca etkileşimli shell olarak fish kullansan olmaz mı?
    • Etkileşimli işler için fish, script yazımı için bash kullanıyorum. bash ile yazmak istemediğim bir script ise Python ya da Ruby gibi gerçek bir programlama dili kullanıyorum
    • Koşul ve döngü kullanmadığın sürece bunun bash olmadığını neredeyse fark etmezsin
      Kişisel olarak shell’e bu kadar karmaşık şeyleri pek koymuyorum; o noktaya gelince ayrı bir script’e çıkarıyorum
    • bass kullanınca geçiş yapma ihtiyacını pek hissetmedim
      https://github.com/edc/bass
    • Bu bir hata değil, fish’in özü. POSIX uyumluluğunu bırakmadan aklı başında bir shell script dili yapmak mümkün değil
  • fish kullanmıyorum ama zsh’de hâlâ kopyalanmamış harika bir özelliği var. man sayfalarından otomatik tamamlama üretiyor; böylece neredeyse her program için temel flag tamamlama özelliğini otomatik olarak elde edebiliyorsunuz