3 คะแนน โดย GN⁺ 2024-07-23 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

eza

แนะนำ eza

  • eza เป็นโปรแกรมทดแทนแบบสมัยใหม่สำหรับคำสั่งแสดงรายการไฟล์ ls ที่มีมาให้โดยค่าเริ่มต้นในระบบปฏิบัติการ Unix และ Linux
  • ใช้สีเพื่อแยกประเภทไฟล์และเมทาดาทา
  • รองรับ symbolic link, extended attributes และ Git
  • มีขนาดเล็ก ทำงานเร็ว และมาในรูปแบบไบนารีเดี่ยว
  • มุ่งเป็นโปรแกรมทดแทน ls ที่ใช้งานเป็นมิตรและมีฟีเจอร์ครบครัน

ฟีเจอร์หลักของ eza

  • แก้ไข "grid bug" ที่เกิดขึ้นใน exa 2021
  • รองรับไฮเปอร์ลิงก์
  • แสดงรายละเอียด mount point
  • แสดงผล Selinux context
  • แสดงสถานะของ Git repository
  • แสดงวันที่แบบสัมพัทธ์ที่มนุษย์อ่านเข้าใจง่าย
  • มีการแก้ไขด้านความปลอดภัยหลายรายการ
  • รองรับสีของเทอร์มินัลแบบสว่าง
  • แก้ไขบั๊กย่อยและปรับเปลี่ยนหลายจุด

วิธีติดตั้ง

  • eza ใช้งานได้บน Windows, macOS และ Linux
  • สามารถดูคำแนะนำการติดตั้งตามแพลตฟอร์มและดิสทริบิวชันได้ใน INSTALL.md

ตัวเลือกบรรทัดคำสั่ง

ตัวเลือกการแสดงผล

  • -1, --oneline: แสดงหนึ่งรายการต่อหนึ่งบรรทัด
  • -G, --grid: แสดงรายการในรูปแบบกริด (ค่าเริ่มต้น)
  • -l, --long: แสดงรายละเอียดและแอตทริบิวต์เพิ่มเติม
  • -R, --recurse: สำรวจไดเรกทอรีแบบ recursive
  • -T, --tree: สำรวจไดเรกทอรีแบบ recursive ในรูปแบบ tree
  • -x, --across: จัดกริดในแนวนอน
  • -F, --classify=(when): แสดงประเภทท้ายชื่อไฟล์ (เสมอ, อัตโนมัติ, ไม่แสดง)
  • --colo[u]r=(when): กำหนดว่าจะใช้สีของเทอร์มินัลเมื่อใด (เสมอ, อัตโนมัติ, ไม่แสดง)
  • --colo[u]r-scale=(field): เน้นความแตกต่างของระดับใน field (ทั้งหมด, อายุ, ขนาด)
  • --color-scale-mode=(mode): ใช้สีแบบคงที่หรือไล่ระดับใน --color-scale (คงที่, ไล่ระดับ)
  • --icons=(when): กำหนดว่าจะให้แสดงไอคอนเมื่อใด (เสมอ, อัตโนมัติ, ไม่แสดง)
  • --hyperlink: แสดงรายการเป็นไฮเปอร์ลิงก์
  • --absolute=(mode): แสดงรายการเป็นพาธแบบสัมบูรณ์ (เปิด, follow, ปิด)
  • -w, --width=(columns): กำหนดความกว้างหน้าจอเป็นจำนวนคอลัมน์

ตัวเลือกการกรอง

  • -a, --all: แสดงไฟล์ที่ซ่อนและไฟล์ที่ขึ้นต้นด้วยจุด
  • -d, --list-dirs: แสดงไดเรกทอรีเหมือนไฟล์ทั่วไป
  • -L, --level=(depth): จำกัดความลึกของการสำรวจแบบ recursive
  • -r, --reverse: กลับลำดับการเรียง
  • -s, --sort=(field): กำหนดฟิลด์ที่จะใช้เรียง
  • --group-directories-first: แสดงไดเรกทอรีก่อนไฟล์ประเภทอื่น
  • -D, --only-dirs: แสดงเฉพาะไดเรกทอรี
  • -f, --only-files: แสดงเฉพาะไฟล์
  • --no-symlinks: ไม่แสดง symbolic link
  • --show-symlinks: แสดง symbolic link อย่างชัดเจน
  • --git-ignore: ไม่สนใจไฟล์ที่ระบุใน .gitignore
  • -I, --ignore-glob=(globs): กำหนดแพตเทิร์น glob ของไฟล์ที่จะละเว้น

ตัวเลือกมุมมองแบบยาว

  • -b, --binary: แสดงขนาดไฟล์ด้วย binary prefix
  • -B, --bytes: แสดงขนาดไฟล์เป็นหน่วยไบต์
  • -g, --group: แสดง group ของแต่ละไฟล์
  • -h, --header: เพิ่มแถว header ให้แต่ละคอลัมน์
  • -H, --links: แสดงจำนวน hard link ของแต่ละไฟล์
  • -i, --inode: แสดงหมายเลข inode ของแต่ละไฟล์
  • -m, --modified: ใช้ฟิลด์เวลาแก้ไข
  • -M, --mounts: แสดงรายละเอียด mount (เฉพาะ Linux และ macOS)
  • -S, --blocksize: แสดงขนาดบล็อกของไฟล์ระบบที่ถูกจัดสรร
  • -t, --time=(field): กำหนดฟิลด์เวลาที่จะใช้
  • -u, --accessed: ใช้ฟิลด์เวลาที่เข้าถึง
  • -U, --created: ใช้ฟิลด์เวลาที่สร้าง
  • -X, --dereference: ยกเลิก symbolic link สำหรับข้อมูลไฟล์
  • -Z, --context: แสดง security context ของแต่ละไฟล์
  • -@, --extended: แสดง extended attributes และขนาดของแต่ละไฟล์
  • --changed: ใช้ฟิลด์เวลาที่เปลี่ยนแปลง
  • --git: แสดงสถานะ Git ของแต่ละไฟล์
  • --git-repos: แสดงสถานะ Git ของแต่ละไดเรกทอรี
  • --git-repos-no-status: แสดงเพียงว่าไดเรกทอรีเป็น Git repository หรือไม่ (เร็วกว่า)
  • --no-git: ไม่แสดงสถานะ Git
  • --time-style: กำหนดรูปแบบ timestamp
  • --total-size: แสดงขนาดไดเรกทอรีแบบ recursive
  • --no-permissions: ไม่แสดงฟิลด์สิทธิ์
  • -o, --octal-permissions: แสดงสิทธิ์ของแต่ละไฟล์ในรูปแบบเลขฐานแปด
  • --no-filesize: ไม่แสดงฟิลด์ขนาดไฟล์
  • --no-user: ไม่แสดงฟิลด์ผู้ใช้
  • --no-time: ไม่แสดงฟิลด์เวลา
  • --stdin: อ่านชื่อไฟล์จาก stdin

วิธีมีส่วนร่วมกับ eza

  • หากต้องการมีส่วนร่วมกับ eza ควรปฏิบัติตาม code of conduct ก่อน
  • หลังจากทำความเข้าใจ code of conduct แล้ว สามารถดูข้อมูลการพัฒนาจริงได้ใน CONTRIBUTING.md

สรุปโดย GN⁺

  • eza เป็นโปรแกรมทดแทน ls แบบสมัยใหม่ ที่มาพร้อมฟีเจอร์มากขึ้นและอินเทอร์เฟซที่เป็นมิตรต่อผู้ใช้
  • มีฟีเจอร์ที่มีประโยชน์ เช่น ตัวเลือกสีที่หลากหลายและการแสดงสถานะ Git
  • ใช้งานได้ทั้งบน Windows, macOS และ Linux และติดตั้งได้ไม่ยาก
  • แม้จะคล้าย ls แต่มีตัวเลือกมากกว่า ทำให้งานแสดงรายการไฟล์มีประสิทธิภาพขึ้น
  • เครื่องมือที่มีฟังก์ชันคล้ายกันคือ exa

1 ความคิดเห็น

 
GN⁺ 2024-07-23
ความเห็นจาก Hacker News
  • รู้สึกว่า "human readable dates" ใช้งานไม่สะดวก อยากเห็นวันที่และเวลาในรายการไดเรกทอรี

    • เช่น อยากให้แสดงเวลาแบบตรงไปตรงมาแทน "1 day ago"
    • อาจเป็นผลจากการทำ infinite scroll
  • มี lsd เหมือนกัน แต่ชอบ eza มากกว่า

    • แนะนำเครื่องมือคำสั่งสมัยใหม่
      • bat - cat ที่มีการไฮไลต์
      • difftastic - diff ที่ดีกว่า
      • gdu - เครื่องมือวิเคราะห์พื้นที่ดิสก์สำหรับ SSD
      • zoxide - cd แบบสมัยใหม่
      • fd - ตัวแทน find
      • rg - ripgrep (grep)
      • fzf - ตัวค้นหาแบบฟัซซี
      • jless - ตัวดู JSON ที่มีการพับด้วยเมาส์
      • dra - ดาวน์โหลดและติดตั้ง release assets
      • lazygit - Git TUI
      • lazydocker - Docker TUI
      • yazi - ตัวจัดการไฟล์ที่มีพรีวิวภาพ
      • zellij - tmux / screen ที่ดีกว่า
      • starship - การตั้งค่าพรอมป์ต์ข้ามเชลล์
  • GNU ls ยังมีการดูแลรักษาอยู่

    • มีคอมมิตล่าสุด (2024-06-24, 2024-06-27)
    • mailing list ของ GNU Coreutils ก็ยังคึกคัก
  • หลังจากเปลี่ยนไปใช้ fish shell ก็ใช้ ls น้อยลง 100%

    • ใช้คำสั่ง Alt + l เพื่อแสดงเนื้อหาในไดเรกทอรี
    • ทำให้ผลลัพธ์ในประวัติเชลล์สะอาดขึ้น
  • มีปัญหากับเครื่องมือเทอร์มินัลที่ใช้สีแยกประเภทไฟล์

    • ใช้พื้นหลังเทอร์มินัลที่สบายตา
    • ชุดสีอาจชนกับพื้นหลังหรือดูยาก
    • ไม่ต้องการสีในเอาต์พุตของ ls หรือเครื่องมือแทน ls
    • เอาต์พุต ls -AFC ก็เพียงพอแล้ว
  • สงสัยว่าทำไม GNU utilities เวอร์ชันใหม่จึงถูก build ภายใต้ไลเซนส์ MIT

  • รู้สึกแปลกที่ใน README ไม่มีการพูดถึงว่า eza เป็น fork ของ exa

  • พิมพ์ eza บนคีย์บอร์ด qwerty แล้วไม่ถนัด

    • ls เป็นคีย์ลัดที่กดได้เร็ว
    • จะใช้ alias ก็ได้ แต่ก็ดูแปลกเพราะมีปัญหาเรื่องความเข้ากันได้ เป็นต้น
  • ฟีเจอร์หลักของ eza/exa ไม่ใช่สีสวย แต่เป็นการรวม Git เข้ามา

    • ดูสถานะ Git ของแต่ละไฟล์ในรายการไฟล์ได้ (เช่น ถูกละเว้น, ถูกแก้ไข)
  • แทบไม่มีใครใช้ ls

    • ใช้การเติมคำสั่งอัตโนมัติด้วยแท็บเพื่อแสดงไฟล์ที่ต้องการ
    • สงสัยว่าทำไมถึงอ้างว่า ls ไม่ได้รับการดูแลรักษาแล้ว