Eza: Alternatif ls yang modern dan terpelihara
(github.com/eza-community)- eza adalah tool CLI modern yang menggantikan perintah daftar file Unix/Linux
ls, dengan tujuan menyediakan lebih banyak fitur dan default yang lebih baik - Membedakan jenis file dan metadata dengan warna, mengenali symbolic link, extended attributes, dan informasi Git, serta tersedia sebagai single binary yang kecil dan cepat
- Dibandingkan
exa, menambahkan perbaikan Grid Bug, hyperlink, detail mount point, konteks SELinux, status repositori Git, tanggal relatif yang mudah dibaca manusia, perbaikan keamanan, warna terminalbright, dan konfigurasitheme.yml - Dapat diinstal di Windows, macOS, dan Linux, serta di lingkungan Nix flake bisa dibangun lalu dijalankan dengan
nix run github:eza-community/eza - Memiliki skema opsi yang tidak sepenuhnya sama dengan
ls, dan cara output daftar file dapat diatur secara detail melalui pengaturan tampilan, pemfilteran, daftar panjang, dan tema
Pengalaman pengganti ls yang ditawarkan eza
- eza adalah alternatif modern untuk perintah daftar file lama
lsyang disertakan dalam sistem operasi Unix dan Linux - Tujuan utamanya adalah menyediakan versi yang lebih kaya fitur dan ramah pengguna dibandingkan
ls - Membedakan jenis file dan metadata dengan warna
- Mengenali symbolic link, extended attributes, dan informasi Git
- Kecil, cepat, dan tersedia sebagai single binary
Fitur yang ditambahkan dibandingkan exa
- eza menyertakan banyak fitur yang tidak ada di
exa- Perbaikan “The Grid Bug” yang diperkenalkan di
exa2021 - Dukungan hyperlink
- Output detail mount point
- Output konteks SELinux
- Output status repositori Git
- Tanggal relatif yang mudah dibaca manusia
- Berbagai perbaikan keamanan
- Dukungan warna terminal
bright - Perbaikan bug dan perubahan kecil lainnya
- File konfigurasi
theme.ymluntuk mengustomisasi warna dan ikon
- Perbaikan “The Grid Bug” yang diperkenalkan di
Menjalankan dan menginstal
- Di lingkungan yang mendukung Nix flake, eza dapat dicoba dengan perintah berikut
nix run github:eza-community/eza
- Nix akan membangun eza lalu menjalankannya
- Untuk meneruskan argumen, tambahkan opsi setelah
--seperti berikutnix run github:eza-community/eza -- -ol
- eza dapat digunakan di Windows, macOS, dan Linux
- Cara instalasi per platform dan distribusi tersedia di INSTALL.md
Struktur opsi command-line
- Opsi eza hampir sama dengan
ls, tetapi tidak sepenuhnya identik -
Opsi tampilan
-1,--oneline: tampilkan satu item per baris-G,--grid: tampilkan item dalam grid; ini adalah default-l,--long: tampilkan detail dan atribut tambahan-R,--recurse: telusuri direktori secara rekursif-T,--tree: tampilkan direktori secara rekursif dalam bentuk tree-F,--classify=(when): tampilkan penanda jenis di samping nama file--colour=(when),--color=(when): tentukan kapan warna terminal digunakan--icons=(when): tentukan kapan ikon ditampilkan--hyperlink=(when): tentukan kapan item ditampilkan sebagai hyperlink--absolute=(mode): tentukan cara menampilkan path absolut item
-
Opsi pemfilteran
-a,--all: tampilkan file tersembunyi dan dot file-d,--treat-dirs-as-files: daftar direktori seperti file biasa-L,--level=(depth): batasi kedalaman rekursi-s,--sort=(field): tentukan field pengurutan--group-directories-first: tampilkan direktori lebih dulu--group-directories-last: tampilkan direktori belakangan-D,--only-dirs: tampilkan hanya direktori-f,--only-files: tampilkan hanya file--git-ignore: abaikan file yang ada di.gitignore-I,--ignore-glob=(globs): abaikan file dengan pola glob yang dipisahkan pipe- Jika
--alldiberikan dua kali, direktori.dan..juga ditampilkan
Daftar panjang dan informasi terkait Git
- Saat menggunakan
--longatau-l, opsi daftar panjang dapat digunakan - Menyediakan opsi terkait ukuran file dan permission
-b,--binary: tampilkan ukuran file dengan prefiks biner-B,--bytes: tampilkan ukuran file dalam byte tanpa prefiks-o,--octal-permissions: tampilkan permission dalam format oktal--no-permissions,--no-filesize,--no-user,--no-time: sembunyikan output masing-masing field
- Menyediakan opsi terkait filesystem dan metadata
-H,--links: tampilkan jumlah hard link-i,--inode: tampilkan nomor inode-M,--mounts: tampilkan detail mount; hanya tersedia di Linux dan macOS-Z,--context: tampilkan konteks keamanan-@,--extended: tampilkan extended attributes dan ukurannya--total-size: tampilkan ukuran direktori rekursif
- Output terkait Git juga didukung
--git: tampilkan status Git untuk setiap file yang dilacak atau diabaikan--git-repos: tampilkan status Git untuk setiap direktori yang dilacak--git-repos-no-status: hanya tampilkan apakah direktori merupakan repositori Git, dan lebih cepat--no-git: selalu abaikan--git,--git-repos,--git-repos-no-statusdan sembunyikan output status Git
- Format waktu mendukung
default,iso,long-iso,full-iso,relative, atau format kustom berbentuk+<FORMAT>- Contoh:
+%Y-%m-%d %H:%Mmenghasilkan output dalam format2023-09-30 13:00 - Untuk string format yang lebih detail, lihat halaman manual
eza(1)dan dokumentasi chrono
- Contoh:
- Halaman manual dapat dilihat di direktori man pada repositori, dan sejak versi
[0.18.13] - 2024-04-25juga dapat diakses dari terminal denganman eza
Kustomisasi tema
- eza baru-baru ini menambahkan dukungan file
theme.yml - Di
theme.yml, opsi tema lama yang sebelumnya dapat digunakan melalui variabel lingkunganLS_COLORSdanEXA_COLORSdapat ditentukan - Juga menyediakan opsi untuk menetapkan ikon berbeda per jenis dan ekstensi file
- Jika variabel lingkungan lama telah disetel, variabel tersebut tetap berfungsi demi kompatibilitas mundur dan memiliki prioritas
- Tema siap pakai dapat dilihat atau dikontribusikan langsung di repositori resmi eza-themes
- File tema contoh ada di
docs/theme.yml - File tema diletakkan di direktori yang ditentukan oleh variabel lingkungan
EZA_CONFIG_DIR, atau secara default dicari di$XDG_CONFIG_HOME/eza - Detail lebih lanjut tersedia di eza_colors-explanation.5.md dan docs/theme.yml
Kontribusi
- Untuk berkontribusi ke eza, Anda harus mengikuti code of conduct
- Informasi untuk ikut dalam pengembangan sebenarnya tersedia di CONTRIBUTING.md
1 komentar
Komentar Hacker News
Tanggal yang mudah dibaca manusia dalam daftar direktori terasa sangat mengganggu
Kalau saya mencari sesuatu yang saya salin ke folder sekitar pukul 11 pagi kemarin, lalu semuanya tampil sebagai “1 day ago”, itu tidak membantu. Saya butuh tanggal dan waktu, dan forum seperti HN juga sebaiknya menampilkan tanggal/waktu yang tepat, lalu jika perlu menambahkan “7 hours ago” di sampingnya
Saya tidak mengerti kenapa informasi sengaja dihilangkan, dan penasaran apakah ini akibat dari pola seperti infinite scroll
Saat menulis HTML, saya selalu berusaha memakainya
(https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ti...)
Kalau saya mengingat tanggal tertentu sebagai sehari setelah ulang tahun teman dan ingin mencari suatu item, tetapi tampilannya hanya “three months ago”, saya harus membongkar data selama sebulan penuh
Berikan dulu waktu yang detail, lalu kalau mau tampilkan juga “beberapa hari lalu” di sampingnya
Ada juga
lsd, tetapi saya tetap lebih menyukai ezaUntuk yang tertarik, berikut beberapa tool command-line modern yang belakangan ini saya pakai sebagai pengganti tool lama:
batadalahcatdengan syntax highlighting,difftasticadalahdiffyang lebih baik,gduadalahncduuntuk SSD,zoxideadalahcdmodern,fdadalah alternatiffind,rgadalahripgrep,fzfadalah fuzzy finder,jlessadalah JSON viewer dengan pelipatan memakai mouse,drauntuk mengunduh/menginstal aset rilis,lazygitadalah Git TUI,lazydockeradalah Docker TUI,yaziadalah file manager dengan pratinjau gambar,zellijadalahtmux/screenyang lebih baik, danstarshipadalah tool konfigurasi prompt untuk berbagai shelltaskadalah alternatif Makefile,hyperfineadalah tool benchmark,vegetaadalah tool load testing, dansdadalahsedyang lebih baik dan intuitifAda juga trio JSON:
jqadalah pemroses JSON yang sudah terkenal,jcmengubah output berbagai tool CLI menjadi JSON, dangronmembuat JSON mudah di-grepfddanrgsecara default mengabaikan item yang termasuk dalam.gitignore. Kalau menganggapnya sekadar penggantifind, ini bisa mengejutkan. Diskusi terkait ada di [0]Saat merekomendasikan tool seperti ini, poin tersebut harus dibuat jelas. Mudah terlewat kalau tidak membaca dokumentasi. Secara pribadi, saya berharap tool-tool pengganti coreutils seperti ini mempertahankan default yang lebih mirip dengan tool aslinya. Jika dipromosikan sebagai “alternatif find yang sederhana, cepat, dan ramah pengguna”, default aslinya seharusnya dihormati agar pengguna baru tidak terkejut. Karena alias memang ada, menurut saya lebih baik menaruh
alias fd='fd --ignore'di~/.${SHELL##*/}rcdaripadaalias fd='fd --no-ignore'Sebagai tip, jika ingin memakai versi yang tidak terkena alias, gunakan
\command. Misalnya saya memakaialias grep='grep --color=always --no-messages --binary-files=without-match, tetapi opsi warna dapat mengubah representasi karakter sehingga bisa menimbulkan error saat dipipe kecurl. Tidak terjadi pada semua pipe, tetapi cukup membingungkan saat pertama kali mengalaminya. Bisa dicek denganecho "Hello world" | \grep --color=always "Hello" | hexdump, lalu!!:s^always^never[0] https://github.com/sharkdp/fd/issues/612
https://github.com/ibraheemdev/modern-unix
zellijlebih baik daripadascreen. Nomor tab/layar tidak diberi dengan benar sehingga untuk berpindah langsung harus menghitung sendiri, dan ini sulit diterimaGNU ls masih dipelihara. Bahkan ada commit yang memengaruhi file
ls.cpada 2024-06-24 dan 2024-06-27, belum sampai sebulan laluMailing list GNU Coreutils juga cukup aktif. Sepertinya proyek ini memakai “maintained” dalam arti “dikembangkan secara aktif”
eza.exatidak dipelihara selama sekitar setahun sebelum satu-satunya orang yang punya hak tulis ke repositori secara resmi menandainya deprecatedSekarang sudah cukup lama sejak fork itu dibuat sehingga tidak semua orang tahu
exa, dan maksud dari ungkapan ini juga menjadi jauh kurang jelas. Karena ada reaksi serupa, sepertinya sudah waktunya memperbarui kalimatnyalstidak dipelihara, melainkan bahwa ini adalah pengganti yang dipelihara sebagai fork dari penggantilsbernamaexayang sudah tidak dipelihara lagiSetelah beralih ke shell fish, penggunaan
lsturun 100%. Perintah bawaan Alt + l menampilkan isi direktori, jadi sangat berguna, dan riwayat shell juga jadi lebih rapilske variabel lingkunganHISTIGNORE, riwayat bisa dijaga tetap lebih rapi: https://superuser.com/questions/232885/can-you-share-wisdom-...lsadalah pengaturan yang otomatis menjalankanlssaat berpindah direktorifunction ls_on_cd --on-variable PWDlsend__bash_ctrl_n(), lalu berbagai tool di dotfiles dibuat menimpa fungsi-fungsi ini. Misalnya jika Git terpasang,__bash_ctrl_e()diatur untuk menjalankangit statusdangit loglssudah saya jadikan alias keeza, fitur ini sepertinya menjalankaneza. Pada akhirnya tampaknya hanya menjalankanlslsterjadi tepat setelahcd. Sekarang hampir setiapcdotomatis menjalankanlsDi Bash, fungsi
cd()memanggilbuiltin cd "$@" && ls -l, dan di fish, setelahbuiltin cd $argv, jika tidak ada error dan bukan pindah ke home, saya membuatnya menjalankandirSecara umum saya tidak nyaman dengan tool terminal yang memaksakan warna untuk membedakan jenis atau atribut file.
lsdi banyak distro juga sering dikonfigurasi seperti itu, tetapi saya menghapus konfigurasi tersebut dan memakai defaultSaya memakai latar terminal yang nyaman di mata, tetapi skema warna seperti ini selalu bentrok dengan latar atau mengandung warna yang sulit dibaca. Output
lsatau penggantinya tidak membutuhkan warna, dan informasi setingkat yang diberikanls -AFCsudah cukup[0] https://github.com/chriskempson/base16
[1] https://tinted-theming.github.io/base16-gallery/
Meski begitu harus ada solusinya, dan cukup setel nilai apa pun pada
$NO_COLOR. https://no-color.orgSangat masuk akal untuk mengirim bug report ke tool yang tidak memeriksa dan menghormati variabel lingkungan ini
vivid[1] untuk memilih tema yang sesuai dengan latar terminal, lalu muat variabel LS_COLORS yang dihasilkan ke shell[1]: https://github.com/sharkdp/vivid/
Aneh bahwa README tidak menyebut
ezasebagai fork dariexaSaya penasaran kenapa begitu banyak versi baru dari utilitas GNU dibuat dengan lisensi MIT. Sepertinya cukup banyak
ls. GNU coreutils, termasukls, pada awalnya juga merupakan versi baru dari utilitas proprietary AT&T atau utilitas berlisensi BSDKenapa pengganti
lsmembutuhkan Kerberos dan SSH?Jika melihat
ldd /usr/bin/eza, ia tertaut ke cukup banyak library sepertilibgit2,libgssapi_krb5,libmbedtls,libssh2,libkrb5,libcrypto,libzstd, dan lainnyals, dependensi-nya terlalu banyakDi keyboard QWERTY, kombinasi tiga huruf
ezacukup mengerikan. Salah satu keunggulanlsadalah kombinasi tombolnya bisa diketik sangat cepatMemang bisa dibuat alias, tetapi terasa agak aneh karena alasan seperti kompatibilitas
eza, dan sebelumnyaexa, sebagails,ll,lll, dan tidak pernah mengalami masalah kompatibilitasSaya juga memasang
slsupaya melatih diri agar tidak salah ketikezaterlihat seperti perbaikan. Di Dvorak,lssetarap-pada QWERTY, jadi keduanya tombol kelingking tangan kananLagi pula, siapa yang masih pakai
ls? Saya cuma pakai autocomplete tab sampai file yang dibutuhkan munculTerlepas dari candaan itu, saya penasaran kenapa ada klaim bahwa
lstidak lagi dipeliharals, melainkan exa[0] yang memang tidak lagi dipelihara[0]https://github.com/ogham/exa
lstetap dipelihara sebagai bagian dari shell atau coreutilsHanya saja
ezaadalah varian dariexa, dan sejauh yang saya tahuexatidak lagi dipelihara