10

Có bất kỳ quy ước nào của chúng (được viết hoặc được hiểu chung) khi sử dụng dấu gạch chéo (/) hoặc hyphen (-) khi đọc đối số/cờ từ dòng lệnh?Khi triển khai cờ dòng lệnh, tôi có nên thêm tiền tố (/) hoặc dấu nối (-) không?

C:\> myprogram.exe -a 
C:\> myprogram.exe /a 

Cả hai dường như có thể thay thế cho kinh nghiệm của tôi, nhưng tôi chưa sử dụng đủ công cụ dòng lệnh để nói rằng tôi đã phát hiện bất kỳ quy tắc hoặc mẫu nào.

Có lý do chính đáng để sử dụng một trong hai cách này không? Về mặt lý thuyết, tôi có thể sử dụng dấu hoa thị asterisk (*) nếu tôi muốn?

+0

cả hai đều hoạt động tốt. bạn có thể tiêm xử lý tùy chỉnh của bạn để phân tích đối số của bạn. – David

+1

Trên Windows, bạn có thể sử dụng/args. Trên Unix, Linux và Windows, bạn nên sử dụng -x cho một ký tự arg và --xyz-abc cho nhiều ký tự args. – Nayuki

+3

Không có quy tắc cứng nhắc nào trong windows BUT '-' hoàn toàn hợp pháp trong tên tệp trong khi'/'thì không. Do đó -option có thể là một tên tập tin, nhưng/tùy chọn là không. Asterix là một nhân vật truyện tranh. '*' là dấu hoa thị. – Magoo

Trả lời

10

Bạn có thể (về mặt lý thuyết) sử dụng bất cứ điều gì bạn muốn, vì các tham số chỉ là các chuỗi được chuyển đến chương trình dòng lệnh của bạn.

ước Windows có vẻ thích việc sử dụng các dấu gạch chéo ipconfig /all, mặc dù có những chương trình mà phải mất một gạch nối gacutil -i hoặc thậm chí là một sắp xếp của cú pháp biến môi trường setup SKUUPGRADE=1.

* Quy ước Nix dường như thích dấu gạch nối -v cho tham số một chữ cái và gạch nối đôi --verbose cho thông số nhiều chữ cái.

Tôi có xu hướng thích dấu gạch nối, vì chúng có nhiều tính không phụ thuộc hệ điều hành (dấu gạch chéo chuyển tiếp là dấu phân tách đường dẫn trong một số hệ điều hành) và được sử dụng trong các ứng dụng Windows hiện đại hơn (ví dụ).

Edit:

Đây sẽ là một nơi tốt để giới thiệu một thư viện mà không tranh luận NET dòng lệnh phân tích cú pháp: http://commandline.codeplex.com/

0

Bạn có thể sử dụng bất kỳ thứ gì bạn muốn hoặc không có ký tự dẫn đầu nào cả. Nó là nhiều hơn về tôn trọng các tiêu chuẩn hơn bất cứ điều gì. Khi những người dùng khác sử dụng ứng dụng của bạn, họ sẽ nghĩ để bao gồm một - hoặc/khi thêm đối số vì đó là những gì chúng được sử dụng.

4

Thường là / trên Windows và -/-- trên các hệ thống Unix cho các tùy chọn ngắn/dài. Nhưng không có quy tắc cho điều đó, vì vậy nó thực sự là tùy thuộc vào bạn.

0

Một forward-slash hàng đầu (/) là phổ biến trong các ứng dụng Windows . Các dấu gạch nối đơn (-) là phổ biến cho các tùy chọn ngắn (các ký tự bao gồm một chữ cái đơn) trong các ứng dụng tuân thủ POSIX. Dấu gạch ngang kép (-) là phổ biến cho các tùy chọn dài trong các ứng dụng như vậy.

See this link for POSIX info.Or, see this SO post.

4

Xem thêm Command line options style - POSIX or what?.

Truyền thống trong DOS và Windows là sử dụng dấu gạch chéo, như trong /a hoặc /extend. Truyền thống sử dụng -a đến từ Unix (và có thể ở nơi khác).

Có một GNU standard trong đó một dấu gạch ngang duy nhất được sử dụng cho cờ một chữ, như -e -d, và chúng có thể được sáp nhập vào -ed (vì vậy -ed tương đương với -e -d).Sau đó, thiết bị chuyển mạch nhiều chữ cái cần hai dấu gạch ngang, như trong --extend --display. Đôi khi chỉ cần viết càng nhiều từ càng đủ để suy ra ý nghĩa của chuyển đổi, ví dụ: --disp có thể là một đoạn ngắn cho --display nếu không có chuyển đổi nào khác bắt đầu bằng các chữ cái disp....

+0

1 để đề cập đến lý do đằng sau dấu gạch ngang kép. Tôi đã không nhận ra nhiều chữ cái với một dấu gạch ngang đơn ('-ed') nên được coi là nhiều công tắc chữ cái duy nhất. – Connell

+0

hg của Mercurial, trong khi hoàn toàn khác biệt ở chỗ nó không cần dấu gạch chéo hoặc dấu gạch chéo, tương tự ở chỗ bạn chỉ cần nhập đủ ký tự để xác định rõ ràng những gì bạn muốn (ví dụ: "hg st") – JerKimball

1

Lệnh DOS cũ sử dụng tiền tố/cho tham số tùy chọn. Microsoft hiện đang tiến tới hỗ trợ việc sử dụng Posix - để biểu thị các tham số như được ghi trong tài liệu hướng dẫn tiêu chuẩn PowerShell Command-Line của họ. Điều này là do hệ điều hành của họ bây giờ nhìn thấy cả hai ký tự phân tách thư mục \ và/như.

https://technet.microsoft.com/en-us/library/ee156811.aspx

Các vấn đề liên quan