กฎ "Rules" ที่โปรแกรมเทอร์มินัลยึดตาม
(jvns.ca)-
ช่วงนี้ทำให้คิดว่าสิ่งทุกอย่างที่เกิดขึ้นในเทอร์มินัลล้วนเป็นการผสมกันขององค์ประกอบ 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 ความคิดเห็น
ความเห็นจาก Hacker News
ควรเคารพสีพื้นหน้าและสีพื้นหลังเริ่มต้นของผู้ใช้
แนะนำ Command Line Interface Guidelines
-สำหรับ stdin, การปิดการใช้สีเมื่อทำงานผ่าน pipe เป็นต้นกฎเพิ่มเติมสำหรับเครื่องมือบรรทัดคำสั่ง
sysexits.h--helpภายในไบนารีและมี man pageข้อมูลเกี่ยวกับคีย์ไบน์ดิงของ readline/emacs
rlwrapเพื่อเพิ่มความสามารถในการแก้ไขบรรทัดได้คำแนะนำเกี่ยวกับการใช้สี
ปัญหาที่เกิดขึ้นเมื่อใช้ Ctrl-D ใน GHCi
:qคำอธิบายเกี่ยวกับการมองว่า
~เป็นโฮมไดเรกทอรีไม่ควรให้โปรแกรมเพิ่มไฟล์ลงในโฮมไดเรกทอรี
ความเห็นเกี่ยวกับความสม่ำเสมอของ CLI
โปรเซสที่รันระยะยาวควรโหลดการตั้งค่าใหม่เมื่อได้รับ SIGHUP
เคล็ดลับที่มีประโยชน์สำหรับการเชื่อมต่อ SSH
~.เพื่อปิดเซสชัน SSH ได้