Eza: modern ve bakımı süren bir `ls` alternatifi
(github.com/eza-community)- eza, Unix/Linux'teki dosya listeleme komutu
lsyerine kullanılabilen modern bir CLI aracı olup, daha fazla özellik ve daha iyi varsayılanlar sunmayı amaçlar - Dosya türlerini ve meta verileri renklerle ayırt eder, sembolik bağlantıları·genişletilmiş öznitelikleri·Git bilgilerini tanır ve küçük, hızlı bir tekil binary olarak sunulur
- Mevcut
exasürümüne kıyasla Grid Bug düzeltmesi, hiperlinkler, bağlama noktası ayrıntıları, SELinux bağlamı, Git depo durumu, insan tarafından okunabilir göreli tarihler, güvenlik düzeltmeleri,brightterminal renkleri vetheme.ymlyapılandırması ekler - Windows, macOS ve Linux'ta kurulabilir; Nix flake ortamında
nix run github:eza-community/ezaile derlenip çalıştırılabilir lsile tamamen aynı olmayan bir seçenek sistemine sahiptir ve görüntüleme·filtreleme·uzun liste·tema ayarlarıyla dosya listeleme çıktısını ayrıntılı biçimde ayarlayabilirsiniz
eza'nın sunduğu ls alternatifi deneyimi
- eza, Unix ve Linux işletim sistemlerine dahil olan eski dosya listeleme komutu
lsiçin modern bir alternatiftir - Temel hedefi,
ls'den daha fazla özellik sunan ve daha kullanıcı dostu bir sürüm sağlamaktır - Dosya türlerini ve meta verileri renklerle ayırt eder
- Sembolik bağlantıları, genişletilmiş öznitelikleri ve Git bilgilerini tanır
- Küçük ve hızlıdır; tekil binary olarak sunulur
exa'ya kıyasla eklenen özellikler
- eza,
exa'da bulunmayan çok sayıda özellik içerirexa2021'de eklenen “The Grid Bug” hatasının düzeltilmesi- Hiperlink desteği
- Bağlama noktası ayrıntılarının gösterilmesi
- SELinux bağlamının gösterilmesi
- Git depo durumunun gösterilmesi
- İnsan tarafından okunabilir göreli tarihler
- Çeşitli güvenlik düzeltmeleri
brightterminal renk desteği- Daha küçük hata düzeltmeleri ve değişiklikler
- Renkleri ve ikonları özelleştiren
theme.ymlyapılandırma dosyası
Çalıştırma ve kurulum
- Nix flake destekli bir ortamda eza'yı şu komutla deneyebilirsiniz
nix run github:eza-community/eza
- Nix, eza'yı derledikten sonra çalıştırır
- Argüman geçirmek için şu şekilde
--sonrasına seçenek eklenirnix run github:eza-community/eza -- -ol
- eza Windows, macOS ve Linux üzerinde kullanılabilir
- Platform ve dağıtıma göre kurulum yöntemleri INSTALL.md dosyasında yer alır
Komut satırı seçeneklerinin yapısı
- eza'nın seçenekleri
ls'ye oldukça benzer, ancak tamamen aynı değildir -
Görüntüleme seçenekleri
-1,--oneline: Her satırda bir öğe göster-G,--grid: Öğeleri ızgara biçiminde göster; varsayılandır-l,--long: Genişletilmiş ayrıntıları ve öznitelikleri göster-R,--recurse: Dizinleri özyinelemeli tara-T,--tree: Dizinleri ağaç yapısında özyinelemeli göster-F,--classify=(when): Dosya adlarının yanında tür göstergesi yazdır--colour=(when),--color=(when): Terminal renklerinin ne zaman kullanılacağını belirt--icons=(when): İkonların ne zaman gösterileceğini belirt--hyperlink=(when): Öğelerin ne zaman hiperlink olarak gösterileceğini belirt--absolute=(mode): Öğelerin mutlak yolunun nasıl gösterileceğini belirt
-
Filtreleme seçenekleri
-a,--all: Gizli dosyaları ve dot dosyalarını göster-d,--treat-dirs-as-files: Dizinleri normal dosya gibi listele-L,--level=(depth): Özyineleme derinliğini sınırla-s,--sort=(field): Sıralama alanını belirt--group-directories-first: Dizinleri önce göster--group-directories-last: Dizinleri sonra göster-D,--only-dirs: Yalnızca dizinleri göster-f,--only-files: Yalnızca dosyaları göster--git-ignore:.gitignoreiçindeki dosyaları yok say-I,--ignore-glob=(globs): Pipe ile ayrılmış glob desenlerine uyan dosyaları yok say--alliki kez verilirse.ve..dizinleri de gösterilir
Uzun liste ve Git ile ilgili bilgiler
--longveya-lkullanıldığında uzun liste seçenekleri kullanılabilir- Dosya boyutu ve izinlerle ilgili seçenekler sunar
-b,--binary: Dosya boyutunu binary ön eklerle göster-B,--bytes: Dosya boyutunu ön eksiz, bayt cinsinden göster-o,--octal-permissions: İzinleri sekizlik biçimde göster--no-permissions,--no-filesize,--no-user,--no-time: İlgili alanların çıktısını bastır
- Dosya sistemi ve meta verilerle ilgili seçenekler sunar
-H,--links: Hard link sayısını göster-i,--inode: inode numarasını göster-M,--mounts: Bağlama ayrıntılarını göster; yalnızca Linux ve macOS'ta kullanılabilir-Z,--context: Güvenlik bağlamını göster-@,--extended: Genişletilmiş öznitelikleri ve boyutu göster--total-size: Özyinelemeli dizin boyutunu göster
- Git ile ilgili çıktıyı da destekler
--git: İzlenen veya yok sayılan her dosyanın Git durumunu göster--git-repos: İzlenen her dizinin Git durumunu göster--git-repos-no-status: Yalnızca dizinin Git deposu olup olmadığını gösterir; daha hızlıdır--no-git:--git,--git-repos,--git-repos-no-statusseçeneklerini her zaman yok sayar ve Git durumu çıktısını bastırır
- Zaman biçimi olarak
default,iso,long-iso,full-iso,relativeveya+<FORMAT>biçiminde özel formatlar desteklenir- Örnek:
+%Y-%m-%d %H:%M, çıktıyı2023-09-30 13:00biçiminde verir - Ayrıntılı biçim dizgeleri için
eza(1)man sayfasına ve chrono documentation sayfasına bakın
- Örnek:
- Man sayfası deponun man dizininde görülebilir ve
[0.18.13] - 2024-04-25sürümünden itibaren terminaldeman ezaile de kullanılabilir
Tema özelleştirme
- eza kısa süre önce
theme.ymldosyası desteği ekledi theme.ymliçinde,LS_COLORSveEXA_COLORSortam değişkenlerinde kullanılabilen mevcut tema seçenekleri belirtilebilir- Dosya türüne ve uzantıya göre farklı ikonlar atama seçeneği de sunar
- Mevcut ortam değişkenleri ayarlıysa geriye dönük uyumluluk için çalışmaya devam eder ve önceliğe sahip olur
- Hazır temaları resmi eza-themes deposunda inceleyebilir veya doğrudan katkıda bulunabilirsiniz
- Örnek tema dosyası
docs/theme.ymliçinde bulunur - Tema dosyası
EZA_CONFIG_DIRortam değişkeniyle belirtilen dizine konabilir veya varsayılan olarak$XDG_CONFIG_HOME/ezaaltında aranır - Ayrıntılar için eza_colors-explanation.5.md ve docs/theme.yml dosyalarına bakın
Katkı
- eza'ya katkıda bulunmak için code of conduct kurallarına uyulmalıdır
- Geliştirmeye fiilen nasıl katılacağınızla ilgili bilgiler CONTRIBUTING.md dosyasında yer alır
1 yorum
Hacker News yorumları
Dizin listelerinde insan tarafından okunabilir tarihler özellikle sinir bozucu
Dün sabah 11 civarı bir klasöre kopyaladığım şeyi arıyorum; her şey “1 day ago” diye görünüyorsa bunun faydası yok. Tarih ve saat gerekiyor; HN gibi forumlar da aynı şekilde kesin tarih/saati gösterip, gerekirse yanına “7 hours ago” ekleyebilir
Bilginin neden özellikle çıkarıldığını anlamıyorum; bunun sonsuz kaydırma gibi akışların bir sonucu olup olmadığını merak ediyorum
HTML yazarken bunu her zaman kullanmaya çalışıyorum
(https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ti...)
Belirli bir tarihin bir arkadaşınızın doğum gününden sonraki gün olduğunu hatırlayıp bir öğeyi bulmaya çalışsanız bile, gösterim sadece “three months ago” ise bir aylık veriyi karıştırmanız gerekir
Önce ayrıntılı zaman verilip, istenirse “kaç gün önce” gösterimi de birlikte sunulabilir
lsdde var ama hâlâ eza’yı daha çok tercih ediyorumİlgilenenler için, bugünlerde eski araçların yerine kullandığım modern komut satırı araçları şunlar:
bat, sözdizimi vurgulamalıcat;difftastic, daha iyi birdiff;gdu, SSD’ler içinncdu;zoxide, modern bircd;fd,findalternatifi;rg,ripgrep;fzf, fuzzy arama aracı;jless, fareyle katlama yapılabilen JSON görüntüleyici;dra, release varlıklarını indirme/kurma aracı;lazygit, Git TUI;lazydocker, Docker TUI;yazi, görüntü önizlemeli dosya yöneticisi;zellij, daha iyi birtmux/screen;starship, birden çok shell’de kullanılan prompt yapılandırma aracıtask, Makefile alternatifi;hyperfine, benchmark aracı;vegeta, yük testi aracı;sd, daha iyi ve sezgisel birsedJSON üçlüsü de var:
jq, iyi bilinen JSON işleyici;jc, çeşitli CLI araçlarının çıktısını JSON’a dönüştürür;gron, JSON’ugrepetmeyi kolaylaştırırfdverg’nin varsayılan olarak.gitignoreiçindeki öğeleri yok saydığına dikkat etmek gerekir. Basit birfindikamesi sanırsanız şaşırabilirsiniz. İlgili tartışma [0]’daBu tür araçları önerirken bunu açıkça belirtmek gerekir. Belgeleri okumazsanız kaçırması kolay. Şahsen bu tür coreutils alternatifi araçların varsayılanlarını özgün araçlara daha benzer tutmasını isterdim. “find’ın basit, hızlı ve kullanıcı dostu alternatifi” diye tanıtıyorsanız, yeni kullanıcıların şaşırmasını azaltmak için özgün varsayılanlara saygı duymalısınız. Alias’lar zaten var; bu yüzden
~/.${SHELL##*/}rciçinealias fd='fd --ignore'koymanın,alias fd='fd --no-ignore'koymaktan daha iyi olduğunu düşünüyorumİpucu olarak, alias uygulanmamış sürümü kullanmak isterseniz
\commandkullanabilirsiniz. Örneğinalias grep='grep --color=always --no-messages --binary-files=without-matchkullanıyorum; renk seçeneği karakter gösterimini değiştirdiğindencurl’e pipe edince hata verebilir. Her pipe’da böyle olmaz ama ilk karşılaştığınızda epey şaşırtıcıdır.echo "Hello world" | \grep --color=always "Hello" | hexdumpardından!!:s^always^neverile kontrol edebilirsiniz[0] https://github.com/sharkdp/fd/issues/612
https://github.com/ibraheemdev/modern-unix
zellij’inscreen’den daha iyi olduğunu hissetmedim. Sekme/ekran numaraları düzgün verilmiyor; doğrudan geçmek için kendiniz saymanız gerekiyor, bunu kabullenmek zorGNU ls bakımı yapılan bir araç.
ls.cdosyasını etkileyen commit’ler 2024-06-24 ve 2024-06-27’de de vardı; bir aydan bile kısa süre önceGNU Coreutils posta listesi de oldukça aktif. Bu proje “maintained” sözcüğünü “aktif olarak geliştiriliyor” anlamında kullanıyor gibi görünüyor
eza’nın fork’ladığı exa olduğu anlaşılıyor.exa, depoya yazma yetkisi olan tek kişi onu resmen deprecated olarak işaretleyene kadar yaklaşık 1 yıl boyunca bakımsız kalmıştıFork’lanmasının üzerinden de artık epey zaman geçtiği için herkes
exa’yı bilmiyor; bu ifadenin amacı da çok daha belirsiz hâle geldi. Benzer tepkiler olduğuna göre metni güncellemenin zamanı gelmiş gibils’nin bakımsız olduğu anlamına değil; artık bakımı yapılmayanlsalternatifiexa’nın fork’u olarak bakımı yapılan bir alternatif olduğu anlamına geliyorfish kabuğuna geçtikten sonra
lskullanımım %100 azaldı. Yerleşik Alt + l komutu dizin içeriğini gösterdiği için çok kullanışlı ve kabuk geçmişi de daha temiz hale geldilsgibi komutlarıHISTIGNOREortam değişkenine eklerseniz geçmişi daha temiz tutabilirsiniz: https://superuser.com/questions/232885/can-you-share-wisdom-...lskullanımının çoğunu ortadan kaldıran şey, dizin değiştirirken otomatik olaraklsçalıştıran ayardıfunction ls_on_cd --on-variable PWDlsend__bash_ctrl_n()gibi fonksiyonlara bağlayıp, dotfiles içindeki çeşitli araçların bu fonksiyonların üzerine yazmasını sağlıyorum. Örneğin Git kuruluysa__bash_ctrl_e()fonksiyonunugit statusvegit logçalıştıracak şekilde ayarlıyorumlsiçinezatakma adı tanımladığım için bu özellikezaçalıştırıyor gibi görünüyor. Sonuçta sadecelsçalıştırıyor gibilsçalıştırmalarımın çoğununcdhemen sonrasında olduğunu fark edip başlangıç dosyama ekledim. Artık neredeyse hercdotomatik olaraklsçalıştırıyorBash’te
cd()fonksiyonundabuiltin cd "$@" && ls -lçağırıyorum; fish’te isebuiltin cd $argvsonrasında hata yoksa ve ana dizine geçiş değilsedirçalıştıracak şekilde ayarladımDosya türlerini ya da özniteliklerini ayırt etmek için renkleri dayatan terminal araçları genel olarak rahatsız edici. Dağıtımların
lskomutu da çoğu zaman bu şekilde ayarlanmış oluyor, ama ben bu ayarları kaldırıp varsayılanları kullanıyorumGözü yormayan bir terminal arka planı kullanıyorum; bu tür renk şemaları her zaman arka planla çakışıyor ya da okunması zor renkler içeriyor.
lsveya alternatiflerinin çıktısında renge ihtiyaç yok;ls -AFCile gelen seviye yeterli[0] https://github.com/chriskempson/base16
[1] https://tinted-theming.github.io/base16-gallery/
Yine de bir çözüm olmalı;
$NO_COLORdeğişkenine herhangi bir değer atamak yeterli. https://no-color.orgBu ortam değişkenini kontrol edip ona saygı göstermeyen araçlar için hata raporu açmak gayet makul
vivid[1] kullanarak terminal arka planına uygun bir tema seçip, üretilen LS_COLORS değişkenini kabuğa yükleyebilirsiniz[1]: https://github.com/sharkdp/vivid/
README’de
ezanınexafork’u olduğunun yazmaması garipGNU yardımcı programlarının yeni sürümlerinin neden bu kadar sık MIT lisansıyla yapıldığını merak ediyorum. Epey fazla görünüyor
lsyi GNU projesi icat etmedi.lsde dahil olmak üzere GNU coreutils de aslında tescilli AT&T yardımcı programlarının veya BSD lisanslı yardımcı programların yeni sürümleriydiBir
lsalternatifinin neden Kerberos ve SSH’ye ihtiyacı var?ldd /usr/bin/ezaçıktısına bakıncalibgit2,libgssapi_krb5,libmbedtls,libssh2,libkrb5,libcrypto,libzstdgibi epey fazla kütüphaneye bağlandığını görüyorumlsiçin gerekenlere kıyasla bağımlılık sayısı çok fazlaQWERTY klavyede
eza, üç harfli bir kombinasyon olarak oldukça berbat.lsnin avantajlarından biri çok hızlı yazılabilen bir tuş kombinasyonu olmasıTakma ad oluşturabilirsiniz, ama uyumluluk gibi nedenlerle biraz tuhaf geliyor
ezayı, ondan önce deexayıls,ll,lllolarak takma adlandırıyorum ve hiç uyumluluk sorunu yaşamadımslde kurulu; böylece yanlış yazmamayı kendime öğretiyorumezabir iyileştirme gibi görünüyor. Dvorak’tals, QWERTY karşılığıylap-; ikisi de sağ el serçe parmak tuşlarıZaten kim
lskullanıyor ki? Gerekli dosya çıkana kadar sadece sekme otomatik tamamlaması yapıyorumŞaka bir yana,
ls'nin artık bakımının yapılmadığını neden iddia ettiklerini merak ediyorumlsdeğil, artık bakımı yapılmayan exa[0]'ı kastediyor gibi görünüyor[0]https://github.com/ogham/exa
ls, shell'in veya coreutils'in parçası olarak bakımı yapılan bir araçAncak
eza,exanın bir türevi ve bildiğim kadarıylaexanın artık bakımı yapılmıyor