Jaka jest magia " - " (myślnik) w parametrach wiersza poleceń?

Przykłady:

  • Utwórz obraz ISO i nagraj go bezpośrednio na płytę CD.

    mkisofs -V Photos -r /home/vivek/photos | cdrecord -v dev=/dev/dvdrw -

  • Zmiana do poprzedniego katalogu.

    cd -

  • Nasłuchuj na porcie 12345 i przesyłaj do niego dane untar.

    nc -l -p 12345 | tar xvzf -

Jaki jest cel kreski i jak jej używać?

Author: codeforester, 2011-11-08

5 answers

Jeśli masz na myśli nagie - Na końcu tar polecenia, jest to powszechne w wielu poleceniach, które chcą użyć pliku.

Pozwala określić standardowe wejście lub wyjście, a nie rzeczywistą nazwę pliku .

Tak jest w Twoim pierwszym i trzecim przykładzie. Na przykład polecenie cdrecord pobiera standardowe wejście (strumień obrazu ISO wytwarzany przez mkisofs) i zapisuje go bezpośrednio do /dev/dvdrw.

Poleceniem cd, za każdym razem, gdy zmieniasz katalog, przechowuje katalog, z którego pochodzisz. Jeśli wykonasz cd ze specjalnym - "Nazwa katalogu", użyje on tego zapamiętanego katalogu zamiast prawdziwego. Możesz łatwo przełączać się między dwoma katalogami dość szybko za pomocą tego.

Inne polecenia mogą traktować {[0] } jako inną specjalną wartość.

 121
Author: paxdiablo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-08 03:15:06

To nie magia. Niektóre polecenia interpretują - jako użytkownika, który chce odczytywać ze standardowego wejścia lub zapisywać na stdout; powłoka nie ma w tym nic specjalnego.

 22
Author: Ignacio Vazquez-Abrams,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-08 03:08:57

- oznacza dokładnie to, co każde polecenie chce, aby oznaczało. Istnieje kilka powszechnych konwencji i widziałeś przykłady większości z nich w innych odpowiedziach, ale żadna z nich nie jest w 100% uniwersalna.

Nie ma nic magicznego w - jeśli chodzi o powłokę (poza tym, że sama powłoka i niektóre jej wbudowane polecenia, takie jak cd i echo, używają jej w konwencjonalny sposób). Niektóre postacie, jak \, ', oraz ", "magiczne", posiadające specjalne znaczenia wszędzie tam, gdzie się pojawiają. Są to "metacharaktery powłokowe". - to nie tak.

Aby zobaczyć jak dane polecenie używa -, przeczytaj dokumentację dla tego polecenia .

 10
Author: Keith Thompson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-02 18:58:39

Magia jest w konwencji. Przez tysiąclecia ludzie używali' -', aby odróżnić opcje od argumentów, i używali ' - 'w nazwie pliku, aby oznaczać albo stdin lub stdout, odpowiednio. Nie lekceważ mocy konwencji!

 7
Author: William Pursell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-08 03:33:55

Oznacza użycie standardowego strumienia wejściowego programu.

W przypadku cd oznacza to coś innego: zmianę do poprzedniego katalogu roboczego.

 6
Author: Brian Cain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-07-24 04:36:57