Dlaczego istnieją krótkie i długie alternatywy dla opcji wiersza poleceń?

23

Większość poleceń unixoid oferuje krótkie i długie alternatywy dla opcji wiersza poleceń, takich jak ls -ai ls --all, lub ls -Ai ls --almost-all. Dlaczego istnieją te dwa sposoby? Jeden jest krótszy do pisania, drugi jest łatwiejszy do odczytania i zrozumienia. Ale za każdym razem, gdy piszę skrypt powłoki, muszę zdecydować, którego chcę użyć. Czy wiadomo, dlaczego istnieją dwie alternatywy? Który był pierwszy, dlaczego wprowadzono drugi? Na przykład w systemie DOS / Windows dostępne są prawie tylko litery bez rozróżniania wielkości liter.

ygoe
źródło

Odpowiedzi:

24

Pierwotnie były tylko opcje jednoznakowe. Niektóre programy miały wiele znaków, ale wciąż z jednym myślnikiem. Opcje wielu znaków AFAIK z podwójnym myślnikiem pochodzą z GNU ; zostały wprowadzone, ponieważ są bardziej czytelne i często bardziej niezapomniane (i możesz mieć ich więcej niż 52). Wiele programów ma teraz obie opcje: krótkie opcje podczas pisania w wierszu poleceń i zapamiętywania znaku, długie opcje skryptów lub wiersza poleceń, jeśli pamiętasz tylko dłuższą nazwę opcji.

Gilles „SO- przestań być zły”
źródło
15
+1 za wzmiankę, że długie opcje są lepsze dla skryptów, ponieważ pomagają dokumentować rzeczy
Norman Gray
5
Jeśli chodzi o „tylko 52 z nich”: Spróbuj ls -BartSimpsonIsJustCool(lub Greatjeśli korzystasz z systemu Solaris.
Aaron Digulla,
1
@AaronDigulla Czy to jajko wielkanocne?
user712092
5
@ user712092 Nie, to podstęp. Pod Linuksem wszystko po nim Ijest argumentem -Iopcji, więc robi to różnicę tylko wtedy, gdy plik jest wywoływany sJustCoolw bieżącym katalogu. -BartSimpsonCzęść może zostać zreorganizowane, chyba że S(sortowanie według wielkości) ma pozostać po t(sortowanie według daty). Nie mma również wpływu, gdy nlub osą obecne. Więc polecenie jest równoważne ls -BSainopsr, a jeśli niczego nie przeoczyłem, nie możesz usunąć kolejnej litery, aby uzyskać ten sam wynik i możesz dowolnie zmieniać kolejność tych liter.
Gilles „SO- przestań być zły”
2
@Gilles: nawiasem mówiąc, aby być możliwie najdokładniejszym, mogą istnieć 62 różne krótkie opcje (w tym cyfry), a nie 52. Rozważmy gzip -9 filenamena przykład.
Radko Dinev
1

Można się domyślać, że to kwestia gustu. Podczas pisania w wierszu poleceń może być preferowana krótka opcja, szczególnie w przypadku opcji uruchamiania razem (np ls -AL.). Długie opcje są lepsze w przekazywaniu intencji, więc nie musisz odwiedzać strony podręcznika podczas czytania ls --almost-all --dereference.

Oczywiście, w miarę zdobywania doświadczenia, możesz dowiedzieć się, że zarówno krótkie , jak -Ai -Lkrótkie opcje są wystarczająco dobrze znane i nie wymagają dodatkowej dokumentacji. Zwłaszcza w złożonym poleceniu, które może łączyć kilka poleceń w ciekawy sposób z oceną, przekierowaniem itp. W takim przypadku możesz preferować zwięzłość nad dokumentacją.

Chen Levy
źródło
1

Innym celem, jaki widzę, mając różne sposoby określania parametrów (krótkich i długich), jest to, że podczas pisania, wiersze poleceń systemu Unix / Linux lubią mieć możliwie najkrótsze polecenia. Mogą one jednak stać się tajemnicze, a jeśli skrypt zostanie napisany przy użyciu tych krótkich wersji, może być trudny do zrozumienia na późniejszym etapie. Korzystanie z długiej wersji może sprawić, że komenda SAME bardziej czytelne i zrozumiałe dla kogoś, kto nie jest guru tego polecenia, szczególnie jeśli ta komenda jest rzeczywiście lokalnie napisany scenariusz, w przeciwieństwie do znanego polecenia.

jfmessier
źródło