2 poin oleh GN⁺ 2023-08-28 | 2 komentar | Bagikan ke WhatsApp
  • fish adalah shell baris perintah yang ramah pengguna dan berjalan di macOS, Linux, serta keluarga terkait, dengan penyorotan sintaks, saran otomatis saat mengetik, dan pelengkapan tab tanpa perlu konfigurasi terpisah
  • Shell ini umumnya bekerja mirip dengan shell lain seperti bash atau zsh, tetapi perbedaan utamanya yang dapat dicari dengan “unlike other shells” dirangkum dalam tutorial resmi
  • Jalur instalasi dibagi menurut platform, dan di macOS mendukung Homebrew, MacPorts, installer dari fishshell.com, serta aplikasi mandiri
    • Versi minimum macOS yang didukung adalah 10.12
    • Paket Debian, Fedora, openSUSE, dan Red Hat Enterprise Linux/CentOS untuk Linux disediakan melalui openSUSE Build Service
    • Paket Ubuntu dapat dipasang melalui fish PPA
    • Di Windows 10/11, instalasi dapat dilakukan melalui prosedur distribusi Linux di WSL atau build dari source, dan di semua versi Windows didukung instalasi lewat Cygwin atau MSYS2
  • Setelah instalasi, penggunaan dimulai dengan menjalankan fish di shell saat ini, dan dokumentasi pengguna dapat dilihat melalui perintah help di dalam fish maupun dokumentasi resmi
  • Untuk menjalankannya diperlukan utilitas POSIX dasar dan utilitas sistem *nix umum seperti mktemp, sementara beberapa fitur opsional memerlukan alat tambahan
    • Pembuatan pelengkapan otomatis berbasis halaman manual dan alat konfigurasi web fish_config memerlukan Python 3.5+
    • Integrasi clipboard sistem memerlukan salah satu dari xsel, xclip, wl-copy/wl-paste, atau pbcopy/pbpaste
    • Pelengkapan penuh untuk yarn dan npm memerlukan modul NPM all-the-package-names
  • Build dari source memerlukan Rust 1.85 atau lebih baru, CMake 3.15 atau lebih baru, serta kompiler C, sementara PCRE2 dan gettext diperlakukan sebagai dependensi opsional
  • Mendukung build CMake maupun Cargo; build Cargo menempatkan biner mandiri di ~/.cargo/bin/, dan instalasi penuh CMake menyediakan halaman man di lokasi standar, salinan lokal dokumentasi HTML, serta opsi direktori tambahan untuk fungsi, pelengkapan, dan konfigurasi

2 komentar

 
joyfui 2023-08-28

Saat ini saya memakai zsh, jadi kalau nanti ada kesempatan saya juga ingin mencoba fish.

 
GN⁺ 2023-08-28
Opini Hacker News
  • Keunggulan terbesar fish adalah hampir tidak perlu konfigurasi. Saya berusia 41 tahun dan punya keluarga, jadi sama sekali tidak punya kesabaran untuk membuang waktu mengatur tool; zsh terasa selalu menghalangi setiap kali saya mencoba membuatnya nyaman dipakai.
    Berbagai skrip zsh juga sulit dibilang kokoh, dan kalau sering memakai shell, pada akhirnya Anda akan menemui kasus pinggir yang tidak tertangani dalam kumpulan skrip pengguna yang sumbernya kebanyakan hasil salin-tempel.
    Dotfiles fish saya ada di https://github.com/mattgreen/dotfiles/tree/master/fish, dan isinya hanya sistem plugin berbasis submodule, prompt git asinkron, alias, serta beberapa variabel lingkungan.
    fish sudah menyediakan hampir semuanya, jadi tidak perlu pemeliharaan; kini satu-satunya yang saya harapkan adalah menjadikan prompt asinkron sebagai fitur kelas satu, karena pelacakan status lebih baik ditangani shell daripada kode pengguna.

    • Saya memakai bash dan juga tidak punya kesabaran untuk konfigurasi tool, tetapi dotfiles fish itu terlihat lebih rumit daripada konfigurasi bash saya. Dulu banyak engineer lain di tim saya memakai fish, tetapi saya tidak pernah melihat fish melakukan sesuatu yang tidak bisa dilakukan bash; paling hanya terlihat sedikit lebih mewah.
      Yang lebih menyebalkan adalah ketika mereka meminta bantuan, perintah yang saya beri tahu tidak ada satu pun yang berjalan di fish, sehingga pemecahan masalah menjadi sangat lambat.
    • Hampir 10 tahun lalu saya sekali saja menjalani wizard konfigurasi awal zsh[1], dan itu memakan waktu sekitar 5–10 menit. Saya tidak sepenuhnya memahami arti tiap perintah, tetapi sejak itu tidak pernah saya ubah dan berjalan dengan baik.
      Sebagian besar konfigurasi zsh lainnya adalah utilitas prompt dan hal-hal yang saya tambahkan selama bertahun-tahun; saya tidak memakai maupun membutuhkan plugin. Kalau memang perlu, zplug yang pernah saya coba dulu sangat mudah dikonfigurasi dan dipakai.
      [1]: https://github.com/mid-kid/config/blob/master/shell/.zshrc#L...
    • Saya setuju hampir sepenuhnya. Kalau bukan karena pekerjaan mengharuskan saya menulis skrip yang kompatibel dengan /bin/sh, saya mungkin sudah pindah ke Fish karena alasan serupa.
      Dari sudut pandang pengalaman pengguna, Fish jauh mengungguli shell lain, dan cukup mengejutkan bahwa ia belum dijadikan default di sistem operasi seperti Mac. Dengan Fish, saya bisa memandu anggota keluarga melakukan pekerjaan di terminal tanpa ada yang kesal atau menyerah, tetapi sulit mengatakan hal yang sama untuk shell lain.
    • Bagian bahwa konfigurasi zsh terus mengganggu saya diselamatkan oleh oh-my-zsh. Saya hanya punya dotfile sangat kecil yang mendelegasikan sebagian besar konfigurasi ke omz, lalu menyimpannya di bare repo yang saya clone di setiap mesin baru.
      Beberapa tahun lalu saya menghabiskan sekitar satu jam untuk memilih plugin yang saya inginkan dan membuat repo; sekarang mesin baru siap dalam 5–10 menit.
    • Kalau zsh sudah dikonfigurasi sesuai selera, saya penasaran peningkatan atau perubahan apa yang akan didapat saat beralih ke fish.
  • Saya sudah memakai Fish sebagai login shell selama lebih dari 10 tahun, dan tidak seperti banyak orang lain, saya juga memakainya untuk scripting. Untuk tugas sederhana, fish punya lebih sedikit jebakan dibanding bash, sehingga jauh lebih enak untuk menulis skrip.
    Saat membaca penjelasan online, memindahkan contoh bash ke fish itu hal sepele. Saya tidak paham mengapa itu dianggap masalah, dan dalam praktiknya saya tidak pernah kesulitan.

    • Satu hal yang menghambatnya agar tidak lebih sering dipakai untuk scripting adalah tidak adanya mode gagal saat terjadi error seperti set -e di bash. Saya tahu sulit membuatnya berfungsi baik di semua kasus, misalnya sampai pipefail, tetapi tanpa fitur ini saya tidak ingin menulis banyak skrip.
  • Saya memakai fish sekitar 5 tahun dan sekarang tidak ingin kembali. Tanpa memasang fitur tambahan apa pun, dalam kondisi default fish sudah melakukan semua yang dulu dilakukan konfigurasi zsh saya yang dilengkapi package manager dan plugin.
    Satu-satunya yang saya ubah adalah menambahkan spacefish, dan sekarang starship.rs.

    • Saya juga mengikuti alur yang sama, tetapi belakangan pindah ke prompt Tide. Itu dibuat dengan fish murni dan benar-benar sangat cepat.
    • z juga layak dicoba. Dan saya tidak bisa melihat konfigurasi saya sekarang, tetapi ada plugin yang memberi tahu ketika perintah background yang berjalan lama selesai; itu cukup berguna.
    • Saya penasaran untuk apa Anda memakai starship. Kelihatannya menarik, tetapi saya belum tahu imajinasi seperti apa yang dibutuhkan agar bisa benar-benar memanfaatkan potensinya.
    • Apakah reverse search sekarang sudah didukung? Saya tidak tertarik pada autocomplete.
    • Apakah skrip yang ada harus dikonversi ke fish? Atau ada cara otomatis?
  • Karena sudah lama, saya coba kumpulkan thread-thread terkait. Ada lagi?
    What's Happening with Fish Releases? - https://news.ycombinator.com/item?id=36875727 - Juli 2023
    My shell setup with Fish and Tmux (2021) - https://news.ycombinator.com/item?id=35672358 - April 2023
    Ask HN: Are alternative (oil, nu, etc.) shells usable as daily drivers? - https://news.ycombinator.com/item?id=34722208 - Februari 2023
    Rewrite it in Rust - https://news.ycombinator.com/item?id=34588340 - Januari 2023
    Fish 3.6.0 - https://news.ycombinator.com/item?id=34298157 - Januari 2023
    Fish Shell 3.5.0 - https://news.ycombinator.com/item?id=31768405 - Juni 2022
    Fish 3.4.0 - https://news.ycombinator.com/item?id=30734072 - Maret 2022
    Fish 3.4.0 Released - https://news.ycombinator.com/item?id=30660587 - Maret 2022
    Ask HN: Oil or Fish Shell? - https://news.ycombinator.com/item?id=30154652 - Januari 2022
    The fish shell is amazing - https://news.ycombinator.com/item?id=29341390 - November 2021
    Nsh: A fish/bash-like Posix shell in Rust - https://news.ycombinator.com/item?id=28967257 - Oktober 2021
    Fish Shell 3.3 - https://news.ycombinator.com/item?id=27663637 - Juni 2021
    Fish shell - https://news.ycombinator.com/item?id=27180420 - Mei 2021
    Fish Shell 3.2 - https://news.ycombinator.com/item?id=26302678 - Maret 2021
    Fish is not operational on a VT220 terminal (2015) - https://news.ycombinator.com/item?id=25526237 - Desember 2020
    New Features in the Fish Shell - https://news.ycombinator.com/item?id=24631138 - September 2020
    Dolphins learn from their peers to use empty shells to catch fish - https://news.ycombinator.com/item?id=23660910 - Juni 2020
    Fish Shell 3.1.0 - https://news.ycombinator.com/item?id=22314671 - Februari 2020
    Fish: A command line shell for the 90s - https://news.ycombinator.com/item?id=21361696 - Oktober 2019
    Show HN: Fisher 3.0 – the package manager for the fish-shell - https://news.ycombinator.com/item?id=18920972 - Januari 2019
    Fish shell 3.0 - https://news.ycombinator.com/item?id=18776765 - Desember 2018
    Fish: A user-friendly command line shell for macOS, Linux, etc - https://news.ycombinator.com/item?id=15910897 - Desember 2017
    Fish (Shell) for a Week - https://news.ycombinator.com/item?id=14422672 - Mei 2017

Why I'm Hooked on Fish Shell (and How to Set It Up Right) - https://news.ycombinator.com/item?id=14417046 - Mei 2017
The fish shell is awesome - https://news.ycombinator.com/item?id=14179081 - April 2017
Fish Shell Design Principles - https://news.ycombinator.com/item?id=11102941 - Februari 2016
Fish shell 2.2 - https://news.ycombinator.com/item?id=9873090 - Juli 2015
Fish shell - https://news.ycombinator.com/item?id=9566441 - Mei 2015
FISH Shell: A dynamic shell - https://news.ycombinator.com/item?id=8783150 - Desember 2014
Fish shell 2.1 - https://news.ycombinator.com/item?id=6626635 - Oktober 2013
fish shell - https://news.ycombinator.com/item?id=6224524 - Agustus 2013
Fish shell 2.0 - https://news.ycombinator.com/item?id=5723235 - Mei 2013
Fish 2.0 shell beta - https://news.ycombinator.com/item?id=5567639 - April 2013
Fish: Finally, a command line shell for the 90s - https://news.ycombinator.com/item?id=4073162 - Juni 2012
Fish sucks (but your shell sucks more) - https://news.ycombinator.com/item?id=2031110 - Desember 2010
Fish - The friendly interactive shell - https://news.ycombinator.com/item?id=820677 - September 2009
Fish Shell: A User-Friendly Shell or Like a Heavily Customized zsh - https://news.ycombinator.com/item?id=811113 - September 2009

  • https://news.ycombinator.com/item?id=23660910 mungkin tautan jebakan untuk melihat siapa yang memperhatikan :)

  • Saya sempat memakai zsh dulu, tetapi dalam keadaan bawaan rasanya pada dasarnya mirip bash, dan untuk melihat keunggulannya harus meluangkan waktu untuk kustomisasi. Saya tidak ingin menghabiskan waktu untuk konfigurasi shell; saya hanya ingin langsung bekerja
    Fish terasa jauh lebih baik daripada bash tanpa konfigurasi apa pun, dan autocomplete yang terasa seperti sihir benar-benar bisa mengubah hidup

  • Saat kuliah saya memakai fish di Ubuntu, dan MacBook yang saya terima di pekerjaan pertama juga saya setel memakai fish. Saat itu hanya ada satu orang yang menangani DevOps, sementara dokumen dan skrip konfigurasi aplikasi hanya dibuat untuk zsh atau bash, dan sejujurnya saya pikir tidak masalah kalau saya beralih ke zsh
    Namun orang itu mencegah saya, lalu menghabiskan setengah hari mempelajari fish dan menambahkan semua skrip fish ke dokumentasi. Benar-benar orang yang patut disyukuri

  • Hal bagus dari fish adalah sejak awal sudah menyediakan cukup banyak fitur kenyamanan tanpa perlu memasang plugin. Saya hanya menambahkan integrasi starship.rs dan fzf

    • Bukankah di bash biasanya orang juga melakukan dua hal itu?
    • Mengapa starship.rs diperlukan?
  • Saya sangat suka tagline fish, dan cukup lucu. Saya memakainya cukup lama dan sebenarnya cukup baik, tetapi sebagai strategi pengembangan, fish secara eksplisit menghindari opsi yang bisa dikonfigurasi
    Ada beberapa hal yang terus mengganggu saya, tetapi tidak ada cara untuk mengubah perilakunya, jadi saya pindah ke zsh dan membuatnya berperilaku seperti fish tetapi dengan cara yang saya inginkan. Bagi saya itu keputusan yang baik dan layak direkomendasikan. Saya juga tidak terlalu suka oh-my-zsh atau manajer plugin

    • Bisa jelaskan lebih detail apa yang mengganggu? Bukan untuk mengkritik, hanya penasaran
      Saya memakai fish, zsh, dan sekarang juga elvish; bagi saya yang penting adalah autosuggestion dan fitur mengambil riwayat dengan tombol panah atas. zsh punya modul autosuggestion, dan elvish punya riwayat dengan panah atas, tetapi hanya mencocokkan bagian awal
      Jadi fish masih unggul, dan elvish berada di posisi kedua karena mengetik perintah lalu menekan panah atas sekali terasa hampir seperti autosuggestion. Saya belum menemukan cara melakukan itu di zsh, dan untuk penanganan blok saya juga lebih suka cara fish dan elvish dibanding gaya tradisional keluarga sh
  • Kesalahan terbesar fish adalah tidak kompatibel dengan bash. Saya terlalu terbiasa dengan bash, dan di beberapa sistem perusahaan hanya bash yang bisa diakses serta fish tidak bisa dipasang, jadi saya tidak ingin beralih
    Harus terus berpindah-pindah antara bahasa scripting yang berbeda itu menyakitkan, dan tidak akan bisa dilakukan dengan nyaman lewat muscle memory

    • Bukankah cukup menaruh #!/bin/bash di bagian atas skrip dan tetap melakukan scripting dengan bash, sementara shell interaktifnya saja memakai fish?
    • Untuk pekerjaan interaktif saya memakai fish, dan untuk scripting saya memakai bash. Kalau itu skrip yang tidak ingin saya tulis dengan bash, saya memakai bahasa pemrograman sungguhan seperti Python atau Ruby
    • Selama tidak memakai conditional dan loop, hampir tidak akan terasa bahwa itu bukan bash
      Secara pribadi saya hampir tidak pernah memasukkan hal serumit itu ke shell; kalau sudah sampai titik itu, saya memindahkannya menjadi skrip
    • Dengan memakai bass, saya tidak terlalu merasa perlu beralih
      https://github.com/edc/bass
    • Itu bukan kesalahan, melainkan inti dari fish. Tanpa meninggalkan kompatibilitas POSIX, tidak mungkin membuat bahasa scripting shell yang waras
  • Saya tidak memakai fish, tetapi ada satu fitur hebat yang belum direplikasi di zsh. Fish membuat autocomplete dari halaman man, sehingga kita bisa mendapatkan penyelesaian flag dasar secara otomatis untuk hampir semua program