Là dấu gạch ngang kép vẫn là tiêu chuẩn posix cho các công tắc dài?


7

Tôi đã đọc một số câu hỏi về dấu gạch ngang kép:

Dấu gạch ngang -đơn cho các tùy chọn ký tự đơn, nhưng dấu gạch ngang kép --cho các từ?
Không gì --(double-dash) nghĩa là gì? (còn được gọi là trần đôi dash dash)

Tuy nhiên, tôi nhớ về một giáo viên 4 năm trước nói với tôi rằng đó --là cách xử lý tích cực với các công tắc dài như --helphay --color=.
Ngày nay, tôi đang sử dụng rất nhiều lệnh trong đó quy tắc này hoàn toàn không được tôn trọng và ví dụ tốt nhất tôi có thể đưa ra là findở chỗ không có công tắc dài nào thực hiện một cú đúp ngay cả khi rất khó chịu AIX find.

Có phải giáo viên của tôi đã sai? hoặc quy tắc thay đổi kể từ (có vẻ như không thể)?
Và cuối cùng, có bất kỳ posixquy tắc nào về độ dài của tùy chọn và -hay --không?


1
Đây câu trả lời có một số nền tảng về cú pháp của lệnh find.
Anthon

Câu trả lời:


13

Tôi nghĩ POSIX không xác định các tùy chọn dài :

Hướng dẫn 3: Mỗi tên tùy chọn phải là một ký tự chữ và số (
phân loại ký tự alnum ) từ bộ ký tự di động. Tùy chọn -W (capital-W) sẽ được dành riêng cho các tùy chọn của nhà cung cấp.

Tùy chọn nhiều chữ số không nên được cho phép.

Dấu gạch ngang kép là một quy ước GNU .

Trong định nghĩa POSIX của việc tìm "các công tắc dài" với dấu gạch ngang đơn không phải là một phần của các tùy chọn, mà là một biểu thức được đưa ra dưới dạng toán hạng.


điều đó thực sự thú vị
Kiwy

2

finddường như là ngoại lệ của quy tắc. Trên thực tế findcó nguồn gốc bên ngoài nhóm các nhà phát triển tiện ích ban đầu cho Unix, do đó cách sử dụng các tùy chọn 'dài' không tuân thủ.

Như thường lệ, việc tiêu chuẩn hóa chỉ xảy ra sau khi sử dụng các tùy chọn ngắn và tùy chọn dài đã trở thành thông lệ trong hầu hết các chương trình, và điều đó một phần do một số thói quen hoặc thư viện có sẵn để thực hiện phân tích tùy chọn (do đó thực thi một số không rõ ràng Tiêu chuẩn). Nhưng tất nhiên vào thời điểm đó đã quá muộn để thay đổi các chương trình hiện có , như find, theo cách không phá vỡ các tập lệnh. Tuân thủ POSIX, với dấu gạch ngang kép, ít quan trọng hơn việc không phá vỡ các tập lệnh này.

Khả năng tương thích ngược cũng là lý do tại sao các tùy chọn ngắn tarcó thể được chỉ định có hoặc không có dấu gạch ngang.


2
Lệnh killtestlệnh là hai ngoại lệ khác. testcó các đối số hai ký tự như -lt-eq, mặc dù đây là các cú pháp giống như bắt đầu bằng dấu gạch ngang. Và pslà một cái khác hỗ trợ các tùy chọn không có dấu gạch ngang để tương thích di sản.
Mike Miller
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.