Tại sao có các lựa chọn thay thế ngắn và dài cho các tùy chọn dòng lệnh?


23

Hầu hết các lệnh unixoid có các lựa chọn thay thế ngắn và dài cho các tùy chọn dòng lệnh, như ls -a, và ls --all, ls -Als --almost-all. Tại sao hai cách đó tồn tại? Một cái ngắn hơn để gõ, cái kia dễ đọc và dễ hiểu hơn. Nhưng mỗi khi tôi viết một kịch bản shell, tôi cần quyết định tôi muốn sử dụng tập lệnh nào. Được biết tại sao hai sự thay thế tồn tại? Cái nào là đầu tiên, tại sao cái kia được giới thiệu. Trên DOS / Windows, ví dụ, hầu như chỉ có các tùy chọn một chữ cái không phân biệt chữ hoa chữ thường.

Câu trả lời:


24

Ban đầu chỉ có các tùy chọn ký tự đơn. Một số chương trình có các tùy chọn nhiều ký tự, nhưng vẫn có một dấu gạch ngang. Các tùy chọn đa ký tự kép của AFAIK đến từ GNU ; chúng được giới thiệu bởi vì chúng dễ đọc hơn và thường dễ nhớ hơn (và bạn có thể có hơn 52 trong số chúng). Nhiều chương trình hiện có cả hai: tùy chọn ngắn khi bạn nhập vào dòng lệnh và ghi nhớ ký tự, tùy chọn dài cho tập lệnh hoặc trên dòng lệnh nếu bạn chỉ nhớ tên tùy chọn dài hơn.


15
+1 để đề cập rằng các tùy chọn dài sẽ tốt hơn cho các tập lệnh, bởi vì chúng giúp ghi lại mọi thứ
Norman Gray

5
Còn đối với "chỉ 52 người trong số họ": Hãy thử ls -BartSimpsonIsJustCool(hoặc Greatnếu bạn đang ở Solaris.
Aaron Digulla

1
@AaronDigulla Đây có phải là trứng Phục sinh?
dùng712092

5
@ user712092 Không, đó là một mẹo. Trong Linux, mọi thứ sau Iđối số là -Itùy chọn, vì vậy nó chỉ tạo ra sự khác biệt nếu bạn có một tệp được gọi sJustCooltrong thư mục hiện tại. Phần -BartSimpsoncó thể được sắp xếp lại, ngoại trừ việc S(sắp xếp theo kích thước) phải ở sau t(sắp xếp theo ngày). Cũng mkhông có tác dụng khi nhoặc ocó mặt. Vì vậy, lệnh tương đương với ls -BSainopsrvà nếu tôi không bỏ lỡ bất cứ điều gì, bạn không thể xóa một chữ cái khác để đạt được cùng một đầu ra và bạn có thể sắp xếp lại các chữ cái này một cách tự do.
Gilles 'SO- ngừng trở nên xấu xa'

2
@Gilles: nhân tiện, để chính xác nhất có thể, có thể có 62 tùy chọn ngắn khác nhau (bao gồm cả chữ số), chứ không phải 52. Hãy xem xét gzip -9 filenameví dụ.
Radko Dinev

1

Bạn có thể đoán rằng đó là một vấn đề của hương vị. Khi gõ vào dòng lệnh, một tùy chọn ngắn có thể được ưu tiên, đặc biệt là trong trường hợp tùy chọn chạy cùng nhau (ví dụ ls -AL). Các tùy chọn dài sẽ tốt hơn trong việc truyền đạt ý định, do đó bạn không cần tham khảo trang người đàn ông khi bạn đọc ls --almost-all --dereference.

Đương nhiên, khi bạn có được kinh nghiệm, bạn có thể biết rằng cả hai tùy chọn ngắn -A-Lngắn đều đủ nổi tiếng và không yêu cầu tài liệu bổ sung này. Đặc biệt là trong một lệnh phức tạp có thể kết hợp một số lệnh theo những cách thú vị với đánh giá, chuyển hướng, v.v. Trong trường hợp như vậy, bạn có thể thích sự ngắn gọn hơn tài liệu.


1

Một mục đích khác mà tôi có thể thấy khi có các cách khác nhau để xác định các tham số (ngắn và dài) là khi gõ, các dòng lệnh Unix / Linux muốn có các lệnh càng ngắn càng tốt. Tuy nhiên, những thứ đó có thể trở nên khó hiểu và nếu một đoạn script được viết bằng các phiên bản ngắn đó, chúng có thể trở nên khó hiểu. Sử dụng phiên bản dài có thể làm cho lệnh SAME trở nên dễ đọc và dễ hiểu hơn bởi một người không phải bậc thầy của lệnh này, đặc biệt nếu lệnh này thực sự là một tập lệnh được viết cục bộ trái ngược với lệnh nổi tiếng.

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.