10

Czy są jakieś konwencje (zarówno w formie pisemnej lub po prostu ogólnie rozumiane) do kiedy należy użyć ukośnik (/) lub myślnikiem (-) podczas czytania argumentów/flagi z linii poleceń?Podczas implementowania flag wiersza poleceń powinienem poprzedzić fowardslash (/) lub łącznik (-)?

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

Obie wydają się być stosowane zamiennie z mojego doświadczenia, ale nie był używany wystarczająco narzędzi wiersza polecenia, aby powiedzieć, że już zauważony żadnych reguł lub wzorów.

Czy istnieje dobry powód, że którykolwiek z nich jest w ogóle używany? Czy mógłbym teoretycznie użyć gwiazdki o numerze (*), jeśli chciałem?

+0

oba powinny działać poprawnie. możesz wprowadzić własne przetwarzanie, aby przeanalizować argumenty. – David

+1

W systemie Windows można użyć/args. W systemach Unix, Linux i Windows powinieneś używać -x dla jednoliterowych argumentów i --xyz-abc dla wieloargumentowych argumentów. – Nayuki

+3

Nie ma sztywnych reguł w oknach, ALE '-' jest całkowicie legalne w nazwie pliku, natomiast'/'nie jest. Stąd -opcją może być nazwa pliku, ale/opcja nie jest. Asterix to postać komiksowa. '*' jest gwiazdką. – Magoo

Odpowiedz

10

Możesz (teoretycznie) użyć tego, co chcesz, ponieważ parametry są po prostu ciągami przekazanymi do twojego programu wiersza poleceń.

Konwencja Windows wydaje się preferować użycie ukośnika w przód ipconfig /all, choć istnieją programy, które pobierają łącznik gacutil -i lub nawet sortowanie zmiennych środowiskowych setup SKUUPGRADE=1.

* Konwencja Nix wydaje się preferować łącznik -v dla parametrów jednoliterowych i podwójny łącznik --verbose dla parametrów wieloliterowych.

Preferuję łączniki, ponieważ są bardziej agnostyczne dla systemu operacyjnego (ukośniki naprzód są ogranicznikami ścieżek w niektórych systemach operacyjnych) i używane w bardziej nowoczesnych aplikacjach systemu Windows (na przykład nuget).

Edit:

Byłoby to dobre miejsce, aby polecić biblioteki, które wykonuje analizowania argumentów wiersza polecenia NET: http://commandline.codeplex.com/

0

Możesz użyć czegokolwiek, lub w ogóle nie mieć postaci wiodącej. Chodzi raczej o przestrzeganie standardów niż cokolwiek innego. Kiedy inni użytkownicy korzystają z aplikacji, będą myśleć, że dodają argumenty - lub/podczas dodawania, ponieważ do tego są przyzwyczajeni.

4

Zazwyczaj jest to / w systemie Windows i -/-- w systemie Unix dla opcji krótkich/długich. Ale nie ma na to reguły, więc to zależy od ciebie.

0

Wiodący przodu-slash (/) jest powszechne wśród aplikacji systemu Windows . Pojedyncze łączniki (-) są wspólne dla krótkich opcji (składających się z pojedynczej litery) w aplikacjach zgodnych z POSIX. Podwójne łączniki (-) są wspólne dla długich opcji w takich aplikacjach.

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

4

Zobacz również Command line options style - POSIX or what?.

Tradycja w systemach DOS i Windows polega na używaniu ukośnika, tak jak w przypadku /a lub /extend. Tradycja używania -a pochodzi z Uniksa (i być może z innych źródeł).

Jest GNU standard w których pojedynczy myślnik służy do jednoliterowych flagami, jak -e -d i mogą być połączone w -ed (tak -ed jest równoważna -e -d).Następnie przełączniki wielu liter wymagają dwóch myślników, jak w --extend --display. Czasami wystarczy napisać tyle słowa, ile wystarczy, aby wydedukować, co oznacza przełącznik, więc na przykład --disp może być krótką przystanią dla --display, jeśli żaden inny przełącznik nie zaczyna się od liter disp....

+0

+1 za podanie przyczyny podwójnego kreskowania. Nie zdawałem sobie sprawy, że wiele liter za pomocą pojedynczego myślnika ("-ed") powinno być traktowanych jako wiele pojedynczych przełączników. – Connell

+0

Hg Mercuriala, chociaż różni się tym, że nie wymaga ukośników ani ukośników, jest podobny do tego, że wystarczy wpisać wystarczającą liczbę znaków, aby wyraźnie zidentyfikować, co chcesz (np. "Hg st") – JerKimball

1

Stare polecenia DOS używają prefiksu/dla opcjonalnych parametrów. Microsoft dąży teraz do wspierania używania Posix - do oznaczania parametrów zgodnie z dokumentacją PowerShell Command-Line Standard. Dzieje się tak dlatego, że ich system operacyjny widzi teraz znaki \ i/i separatora katalogu.

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