Jestem nowy w pracy w powłoce, a użycie tych poleceń wydaje się arbitralne. Czy istnieje powód, dla którego jedna flaga ma jedną kreskę, a inna może mieć podwójną kreskę?
Jestem nowy w pracy w powłoce, a użycie tych poleceń wydaje się arbitralne. Czy istnieje powód, dla którego jedna flaga ma jedną kreskę, a inna może mieć podwójną kreskę?
Odpowiedzi:
Po jednym łączniku mogą występować flagi jednoznakowe. Podwójny łącznik poprzedza pojedynczą opcję wieloznakową.
Rozważ ten przykład:
tar -czf
W tym przykładzie -czf
określa trzy flagi pojedynczych znaków: c
, z
, i f
.
Teraz rozważ inny przykład:
tar --exclude
W takim przypadku --exclude
określa pojedynczą opcję wieloznakową o nazwie exclude
. Podwójny łącznik disambiguates argument wiersza polecenia, zapewniając, że tar
interpretuje go jako exclude
zamiast kombinacji e
, x
, c
, l
, u
, d
, i e
.
cdrecord
wspomniano lata temu w powyższych komentarzach.
Wszystko zależy od programu. Zwykle „-” jest używane w przypadku opcji „krótkich” (jedna litera, -h), a „-” jest używane w przypadku opcji „długich” (er) (--help).
Krótkie opcje zwykle można łączyć (więc „-h -a” jest takie samo jak „-ha”)
W systemach uniksopodobnych do określania opcji powszechnie stosuje się łącznik minus ASCII. Po znaku zwykle występuje jedna lub więcej liter. Argument, który jest pojedynczym łącznikiem minus sam w sobie bez liter, zwykle określa, że program powinien obsługiwać dane pochodzące ze standardowego wejścia lub wysyłać dane na standardowe wyjście. W niektórych programach używane są dwa znaki łącznika minus (-) w celu określenia „długich opcji”, w których używane są bardziej opisowe nazwy opcji. Jest to wspólna cecha oprogramowania GNU.
To naprawdę konwencja. Może jednak pomóc parserom w bardziej efektywnym poznaniu opcji przekazanych do programu. Poza tym istnieją porządne narzędzia, które mogą pomóc w analizie tych poleceń, takie jak getopt(3)
niestandardowe narzędzia getopt_long(3)
do analizy argumentów programu.
To miłe, ponieważ możemy połączyć wiele krótkich opcji, jak mówią inne odpowiedzi tar -xzf myfile.tar.gz
.
Gdyby istniał argument „Lisa” ls
, prawdopodobnie miałby inne znaczenie ls -lisa
niż typ ls --lisa
. Były to l
, i
, s
oraz a
parametry, a nie słowa.
W rzeczywistości możesz pisać ls -l -i -s -a
, co oznacza dokładnie to samo co ls -lisa
, ale to zależy od programu.
Istnieją również programy, które nie przestrzegają tej konwencji. Szczególnie dla mojego wzroku dd
i gcc
.
krótkie opcje z pojedynczym myślnikiem vs. długie opcje z podwójnym myślnikiem
krótkie opcje można łączyć w jeden argument;
for example: ls -lrt #instead of ls -l -r -t
Jeśli pozwolimy na długie opcje z jednym myślnikiem, spowoduje to niejednoznaczność. Aby rozwiązać ten problem, używamy podwójnego myślnika dla długich opcji.