Nhầm lẫn về việc thay đổi ý nghĩa của các đối số và các tùy chọn, có một định nghĩa tiêu chuẩn chính thức?


11

Tôi đã bắt gặp một biến thể khó hiểu trong việc hiểu các tùy chọn và đối số liên quan đến cú pháp của các lệnh.

Chẳng hạn, tôi gặp phải các định nghĩa như:

  • command -a -b -c d e f

    một số khác nhau giữa -a -b -c, gọi chúng là tùy chọn hoặc chuyển đổi và d e fbằng cách gọi chúng là đối số.

  • command -a -b -c d e f

    một số, ví dụ như một bashhướng dẫn, gọi tất cả các -a -b -c d e fđối số và giải thích, rằng tất cả chúng đều có thể truy cập được từ một tập lệnh $1 $2 $3 $4 $5 $6tương ứng.

  • command -a b=c

    một số gọi -amột tùy chọn, bmột đối số và cgiá trị, nhưng một số khác trộn chúng như trong hai điểm đầu tiên, trong một loạt gọi tất cả các -a b cđối số.

Ba phiên bản này chỉ là ví dụ cho rất nhiều loại gọi khác nhau, tôi thậm chí không biết cách liệt kê tất cả, nhưng tôi nhận thấy rằng chắc chắn không có quy ước đặt tên cố định.

Hoặc ít nhất, không có quy ước đặt tên chuẩn nào mà tôi biết, bởi vì tôi đã tìm thấy các nguồn ngẫu nhiên khác nhau, nhưng ngay cả trong các trang web hoặc hướng dẫn sử dụng chính thức của Linux và GNU tôi cũng có thể gặp sự không nhất quán này.

Có một kế hoạch đặt tên chính thức không thể nghi ngờ mà tôi có thể tham khảo?


Hình thức thứ hai là chính xác 100% theo quan điểm riêng của mình. Bối cảnh rất quan trọng.
Oskar Skog

Câu trả lời:


18

Được điều chỉnh từ phần "Cú pháp đối số tiện ích" của tiêu chuẩn POSIX :

utility_name [-a] [-b] [-c option_argument]
             [-d|-e] [-f[option_argument]] [operand...]

Các tiện ích trong ví dụ được đặt tên utility_name. Nó được theo sau bởi các tùy chọn , đối số tùy chọntoán hạng .

Các đối số bao gồm các -ký tự và các chữ cái hoặc chữ số đơn lẻ, chẳng hạn như a, được gọi là các tùy chọn (hoặc, theo lịch sử, các cờ ). Một số tùy chọn được theo sau bởi một đối số tùy chọn , như được hiển thị với [-c option_argument]. Các đối số theo sau các tùy chọn cuối cùng và đối số tùy chọn được đặt tên là toán hạng .

Tiêu chuẩn cũng định nghĩa "đối số" là

Trong ngôn ngữ lệnh shell, một tham số được truyền cho một tiện ích tương đương với một chuỗi trong argvmảng được tạo bởi một trong các exechàm. Đối số là một trong các tùy chọn, đối số tùy chọn hoặc toán hạng theo tên lệnh.


Tất cả mọi thứ sau utility_namedòng lệnh là các đối số của tiện ích và tất cả chúng đều hiển thị trong các tham số vị trí nếu đó là tập lệnh shell. Tùy chọn thuật ngữ, đối số tùy chọn và toán hạng là các tên cụ thể hơn cho các đối số này trên dòng lệnh.

"Flag" và "switch" là các từ đồng nghĩa phổ biến với "tùy chọn".

Trong trường hợp

utility -a b=c
  • -ab=clà đối số,
  • -alà một tùy chọn nếu tiện ích nhận ra nó như vậy ( lntiện ích không có -xtùy chọn, do đó, -xkhông phải là một tùy chọn ln, nói đúng ra, và ln -xsẽ kích hoạt thông báo chẩn đoán),
  • b=clà một lựa chọn đối số nếu các -atùy chọn có một đối số, nếu không nó là một toán hạng,
  • bkhông phảic là tùy chọn, đối số tùy chọn và không phải là toán hạng.

Như bạn nhận thấy từ văn bản của tôi ở trên, làm việc từ bản tóm tắt của một tiện ích (như được đưa ra bởi hướng dẫn của tiện ích) sẽ dễ dàng hơn là cố gắng giải mã một lệnh chung được gõ trên dòng lệnh. Hướng dẫn sẽ nêu rõ các tùy chọn nào có các đối số tùy chọn và đối số nào là toán hạng, v.v.

Để gọi cmột "giá trị" là IMHO hoàn toàn ok. Đó không phải là một cái gì đó được tiêu chuẩn hóa, nhưng rất ít người hiểu lầm bạn nếu bạn nói " clà giá trị được trao chob ". Nó sẽ rõ ràng từ bối cảnh của các tiện ích trong câu hỏi.

Ví dụ

$ awk -v var="d" '...' data.in

Bất cứ ai biết về awksẽ nói rằng -v var="d"có nghĩa là " sự awkbiến varđược gán giá trị dtrên dòng lệnh ".

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.