Tôi mới làm việc trong trình bao và việc sử dụng các lệnh này có vẻ tùy ý. Có một lý do nào một lá cờ có một dấu gạch ngang và một cái khác có thể có một dấu gạch ngang kép?
Tôi mới làm việc trong trình bao và việc sử dụng các lệnh này có vẻ tùy ý. Có một lý do nào một lá cờ có một dấu gạch ngang và một cái khác có thể có một dấu gạch ngang kép?
Câu trả lời:
Một dấu gạch nối đơn có thể được theo sau bởi nhiều cờ ký tự đơn. Một dấu gạch nối kép có tiền tố là một tùy chọn đa vi khuẩn.
Xem xét ví dụ này:
tar -czf
Trong ví dụ này, -czf
chỉ rõ ba lá cờ đơn ký tự: c
, z
, và f
.
Bây giờ hãy xem xét một ví dụ khác:
tar --exclude
Trong trường hợp này, --exclude
chỉ định một tùy chọn đa vi khuẩn có tên exclude
. Dấu nối đôi disambiguates các đối số dòng lệnh, đảm bảo rằng tar
diễn giải nó như exclude
chứ không phải là một sự kết hợp của e
, x
, c
, l
, u
, d
, và e
.
cdrecord
đã đề cập nhiều năm trước trong các ý kiến trên.
Tất cả phụ thuộc vào chương trình. Thông thường "-" được sử dụng cho các tùy chọn 'ngắn' (một chữ cái, -h) và "-" được sử dụng cho các tùy chọn "dài" (er) (- trợ giúp).
Các tùy chọn ngắn thường có thể được kết hợp (vì vậy "-h -a" giống như "-ha")
Trong các hệ thống tương tự Unix, dấu trừ gạch ngang ASCII thường được sử dụng để chỉ định các tùy chọn. Các nhân vật thường được theo sau bởi một hoặc nhiều chữ cái. Một đối số chỉ trừ một dấu gạch nối đơn mà không có bất kỳ chữ cái nào thường chỉ định rằng một chương trình sẽ xử lý dữ liệu đến từ đầu vào tiêu chuẩn hoặc gửi dữ liệu đến đầu ra tiêu chuẩn. Hai ký tự trừ dấu gạch nối (-) được sử dụng trên một số chương trình để chỉ định "tùy chọn dài" trong đó sử dụng tên tùy chọn mô tả nhiều hơn. Đây là một tính năng phổ biến của phần mềm GNU.
Đó thực sự là một quy ước. Tuy nhiên, nó có thể hỗ trợ các trình phân tích cú pháp biết hiệu quả hơn về các tùy chọn được truyền cho chương trình. Ngoài ra, có những tiện ích gọn gàng có thể giúp phân tích các lệnh này, chẳng hạn như getopt(3)
hoặc không chuẩn getopt_long(3)
để giúp phân tích các đối số của chương trình.
Thật tuyệt, vì chúng ta có thể có nhiều lựa chọn ngắn kết hợp, như những câu trả lời khác nói, như thế tar -xzf myfile.tar.gz
.
Nếu có một đối số "lisa" cho ls
, có lẽ sẽ có một ý nghĩa khác để gõ ls -lisa
hơn ls --lisa
. Các cựu là l
, i
, s
, và a
các thông số, chứ không phải từ.
Trong thực tế, bạn có thể viết ls -l -i -s -a
, có nghĩa chính xác như ls -lisa
, nhưng điều đó phụ thuộc vào chương trình.
Cũng có những chương trình không tuân theo quy ước này. Đáng chú ý nhất là cho tầm nhìn của tôi, dd
và gcc
.
tùy chọn ngắn với dấu gạch ngang đơn và tùy chọn dài với dấu gạch ngang kép
các tùy chọn ngắn có thể được kết hợp thành một đối số duy nhất;
for example: ls -lrt #instead of ls -l -r -t
Nếu chúng ta cho phép các tùy chọn dài với dấu gạch ngang đơn, nó sẽ gây ra sự mơ hồ. Để giải quyết điều này, chúng tôi sử dụng dấu gạch ngang kép cho các tùy chọn dài.