-
Gần đây tôi nhận ra rằng mọi thứ diễn ra trong terminal đều là sự kết hợp của bốn yếu tố sau
- vai trò của hệ điều hành
- vai trò của shell
- vai trò của terminal emulator
- vai trò của chương trình đang chạy (
top,vim,catv.v.)
-
Các chương trình hoạt động nhất quán một cách đáng ngạc nhiên
- POSIX chủ yếu quy định cách terminal emulator, OS và shell hoạt động, nhưng không có tiêu chuẩn nào cho cách các chương trình riêng lẻ nên hoạt động
- Tuy vậy, các chương trình terminal nhìn chung vẫn hoạt động theo những cách khá nhất quán
-
Những quy tắc này mang tính mô tả chứ không mang tính quy phạm
- Mục đích không phải là thuyết phục tác giả của các chương trình terminal rằng họ phải tuân theo các quy tắc này
- Nhưng việc biết những quy tắc mặc định có thể kỳ vọng khi dùng một chương trình terminal mới là điều hữu ích
-
Đôi khi không rõ trách nhiệm thuộc về chương trình nào
- Ví dụ, việc nhấn
Ctrl-Dđể thoát REPL là thứ mà chương trình phải tự triển khai một cách tường minh
- Ví dụ, việc nhấn
Quy tắc 1: Chương trình không tương tác nên thoát khi nhấn Ctrl-C
- Chương trình không tương tác mặc định sẽ thoát khi nhấn
Ctrl-C - Trong các chương trình tương tác,
Ctrl-Clại có vai trò khác
Quy tắc 2: TUI nên thoát khi nhấn q
- Các chương trình TUI như
lesshayhtopsẽ thoát khi nhấnq
Quy tắc 3: REPL nên thoát khi nhấn Ctrl-D trên dòng trống
- Hầu hết REPL sẽ thoát khi nhấn
Ctrl-Dtrên một dòng trống
Quy tắc 4: Không nên dùng quá 16 màu
- Chương trình terminal hầu như không dùng các màu ngoài 16 màu ANSI cơ bản
Quy tắc 5: Nên hỗ trợ đại khái các key binding của readline
- Phần lớn chương trình hỗ trợ các key binding của
readline
Quy tắc 5.1: Ctrl-W nên xóa từ cuối cùng
- Hầu như không có chương trình nào mà
Ctrl-Wlại không xóa từ cuối cùng
Quy tắc 6: Nên tắt màu khi ghi vào pipe
- Phần lớn chương trình sẽ tắt màu khi ghi vào pipe
Quy tắc 7: - có nghĩa là stdin/stdout
-
Nếu truyền
-thay cho tên tệp, chương trình sẽ đọc từ stdin hoặc ghi ra stdout -
Phải mất thời gian để học những quy tắc này
- Cần học quy tắc áp dụng ở đâu, nhận ra các ngoại lệ, và vô thức nắm bắt các mẫu
- Việc viết rõ các quy tắc này ra có thể giúp người khác học nhanh hơn
1 bình luận
Ý kiến trên Hacker News
Cần tôn trọng màu tiền cảnh và màu nền mặc định của người dùng
Khuyến nghị Command Line Interface Guidelines
-cho stdin, vô hiệu hóa màu khi dùng pipeCác quy tắc bổ sung cho công cụ dòng lệnh
sysexits.h--helptrong binary và trang hướng dẫn manThông tin về key binding readline/emacs
rlwrapđể thêm khả năng chỉnh sửa dòngLời khuyên về việc dùng màu sắc
Vấn đề xảy ra khi dùng Ctrl-D trong GHCi
:qGiải thích về việc coi
~là thư mục homeKhông nên để chương trình thêm tệp vào thư mục home
Ý kiến về tính nhất quán của CLI
Tiến trình chạy lâu nên tải lại cấu hình khi nhận SIGHUP
Mẹo hữu ích khi kết nối SSH
~.để thoát phiên SSH