3 คะแนน โดย GN⁺ 2024-12-14 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ช่วงนี้ทำให้คิดว่าสิ่งทุกอย่างที่เกิดขึ้นในเทอร์มินัลล้วนเป็นการผสมกันขององค์ประกอบ 4 อย่างต่อไปนี้

    • บทบาทของระบบปฏิบัติการ
    • บทบาทของเชลล์
    • บทบาทของเทอร์มินัลอีมูเลเตอร์
    • บทบาทของโปรแกรมที่กำลังรันอยู่ (top, vim, cat เป็นต้น)
  • โปรแกรมทำงานได้อย่างสอดคล้องกันอย่างน่าประหลาด

    • POSIX กำหนดพฤติกรรมของเทอร์มินัลอีมูเลเตอร์, OS และเชลล์เป็นหลัก แต่ไม่มีมาตรฐานสำหรับวิธีการทำงานของโปรแกรมแต่ละตัว
    • ถึงอย่างนั้น โปรแกรมเทอร์มินัลก็มักทำงานในรูปแบบที่สอดคล้องกัน
  • กฎเหล่านี้เป็นเชิงพรรณนา ไม่ใช่เชิงกำหนด

    • ไม่ได้พยายามโน้มน้าวให้ผู้เขียนโปรแกรมเทอร์มินัลต้องทำตามกฎเหล่านี้
    • แต่การรู้กฎพื้นฐานที่คาดเดาได้เมื่อใช้โปรแกรมเทอร์มินัลใหม่ ๆ นั้นมีประโยชน์
  • บางครั้งขอบเขตความรับผิดชอบของโปรแกรมก็ไม่ชัดเจน

    • ตัวอย่างเช่น การกด Ctrl-D เพื่อออกจาก REPL เป็นสิ่งที่โปรแกรมต้องรองรับไว้โดยชัดเจน

กฎข้อ 1: โปรแกรมแบบไม่โต้ตอบควรออกเมื่อกด Ctrl-C

  • โดยปกติแล้วโปรแกรมแบบไม่โต้ตอบจะจบการทำงานเมื่อกด Ctrl-C
  • ในโปรแกรมแบบโต้ตอบ Ctrl-C จะมีหน้าที่อย่างอื่น

กฎข้อ 2: TUI ควรออกเมื่อกด q

  • โปรแกรม TUI อย่าง less หรือ htop มักออกได้เมื่อกด q

กฎข้อ 3: REPL ควรออกเมื่อกด Ctrl-D บนบรรทัดว่าง

  • REPL ส่วนใหญ่จะออกเมื่อกด Ctrl-D บนบรรทัดว่าง

กฎข้อ 4: ไม่ควรใช้สีเกิน 16 สี

  • โปรแกรมเทอร์มินัลแทบจะไม่ใช้สีนอกเหนือจาก 16 สี ANSI พื้นฐาน

กฎข้อ 5: ควรรองรับคีย์ไบน์ดิ้งของ readline แบบคร่าว ๆ

  • โปรแกรมส่วนใหญ่รองรับคีย์ไบน์ดิ้งของ readline

กฎข้อ 5.1: Ctrl-W ควรลบคำล่าสุด

  • แทบไม่มีโปรแกรมไหนที่ Ctrl-W ไม่ได้ใช้ลบคำล่าสุด

กฎข้อ 6: ควรปิดการใช้สีเมื่อเขียนลง pipe

  • โปรแกรมส่วนใหญ่มักปิดการใช้สีเมื่อเขียนผลลัพธ์ลง pipe

กฎข้อ 7: - หมายถึง stdin/stdout

  • หากส่ง - แทนชื่อไฟล์ จะหมายถึงให้อ่านจาก stdin หรือเขียนไปยัง stdout

  • การเรียนรู้กฎเหล่านี้ต้องใช้เวลา

    • ต้องเรียนรู้ว่ากฎใช้ได้ในกรณีไหน รู้จักข้อยกเว้น และซึมซับรูปแบบเหล่านี้โดยไม่รู้ตัว
    • การเขียนกฎเหล่านี้ออกมาอย่างชัดเจนอาจช่วยให้คนอื่นเรียนรู้ได้เร็วขึ้น

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

 
GN⁺ 2024-12-14
ความเห็นจาก Hacker News
  • ควรเคารพสีพื้นหน้าและสีพื้นหลังเริ่มต้นของผู้ใช้

    • หากใช้สี ต้องยังอ่านได้ไม่ว่าพื้นหลังและพื้นหน้าค่าเริ่มต้นจะเป็นแบบใด
    • ไม่ควรสื่อสารข้อมูลด้วยสีเพียงอย่างเดียว
    • ควรใช้อีโมจิอย่างระมัดระวัง
    • ไม่ควรลบข้อมูลสำคัญออกจากเอาต์พุตที่เลื่อนผ่านหน้าจอ
    • ควรมีการตั้งค่าให้ผู้ใช้เลือกสีและองค์ประกอบภาพได้
  • แนะนำ Command Line Interface Guidelines

    • รวมกฎอย่างการออกด้วย Ctrl-C, การรับ - สำหรับ stdin, การปิดการใช้สีเมื่อทำงานผ่าน pipe เป็นต้น
  • กฎเพิ่มเติมสำหรับเครื่องมือบรรทัดคำสั่ง

    • ไม่ควรตั้งสมมติฐานเกี่ยวกับประเภทของเทอร์มินัล
    • ควรสมมติว่าอาจไม่มีเทอร์มินัลก็ได้
    • ควรปฏิบัติตามธรรมเนียมทั่วไปสำหรับอาร์กิวเมนต์และโครงสร้างเอาต์พุต
    • ควรใช้รหัสออกมาตรฐานของ sysexits.h
    • ควรมี --help ภายในไบนารีและมี man page
  • ข้อมูลเกี่ยวกับคีย์ไบน์ดิงของ readline/emacs

    • บน macOS สามารถใช้ Ctrl-E, Ctrl-W, Ctrl-U ได้
    • สามารถติดตั้งโปรแกรม rlwrap เพื่อเพิ่มความสามารถในการแก้ไขบรรทัดได้
  • คำแนะนำเกี่ยวกับการใช้สี

    • ไม่ควรใช้เกิน 16 สี
    • ควรทำให้สีสามารถกำหนดค่าได้
  • ปัญหาที่เกิดขึ้นเมื่อใช้ Ctrl-D ใน GHCi

    • ควรออกด้วยคำสั่ง :q
  • คำอธิบายเกี่ยวกับการมองว่า ~ เป็นโฮมไดเรกทอรี

    • ใช้งานได้ในเชลล์ แต่ใช้ไม่ได้ใน POSIX API
  • ไม่ควรให้โปรแกรมเพิ่มไฟล์ลงในโฮมไดเรกทอรี

    • ควรเคารพ XDG_CONFIG_HOME
  • ความเห็นเกี่ยวกับความสม่ำเสมอของ CLI

    • CLI มีความสม่ำเสมอมากกว่า GUI
    • การนำคุณสมบัตินี้มาใช้กับ GUI เป็นเรื่องยาก
  • โปรเซสที่รันระยะยาวควรโหลดการตั้งค่าใหม่เมื่อได้รับ SIGHUP

  • เคล็ดลับที่มีประโยชน์สำหรับการเชื่อมต่อ SSH

    • สามารถใช้ ~. เพื่อปิดเซสชัน SSH ได้