Ich habe viele Tutorials gesehen, die --
After-Befehle verwenden. Etwas wie das:
command --
Was bedeutet dies --
bedeuten?
Ich habe viele Tutorials gesehen, die --
After-Befehle verwenden. Etwas wie das:
command --
Was bedeutet dies --
bedeuten?
Antworten:
Mit --
wird das Ende der Befehlszeilenoptionen angegeben. Auf diese Weise können Sie Argumente verwenden, die mit beginnen --
. Wenn Sie beispielsweise eine Datei mit dem Namen erstellen --foo
:
$ > '--foo'
$ ls
--foo
Und versuchen Sie dann, es zu löschen, rm
und denken Sie, Sie geben ihm ein Argument:
$ rm --foo
rm: unrecognized option '--foo'
Try 'rm ./--foo' to remove the file '--foo'.
Try 'rm --help' for more information.
Eine Möglichkeit, dies zu umgehen, ist die Verwendung von --
:
$ rm -- --foo
Dies ist gängige Praxis und wird von POSIX empfohlen. Daher wird es von vielen Programmen unterstützt.
rm
Programms und vieler POSIX-kompatibler Dienstprogramme. Siehe Leitlinie 10 . Um tatsächlich zu überprüfen, ob Bash die Arbeit nicht erledigt (und das würde keinen Sinn ergeben), erstellen Sie einfach ein kleines Skript mit just printf '> %s <\n' "$@"
und starten es mit --
.
--
, aber das liegt natürlich einfach daran, dass das betreffende Perl-Modul ( getopts
) es auch unterstützt. Sie haben völlig recht, ich habe nur schnell gesucht man bash
, den Abschnitt gesehen, den ich zitiert hatte, aber nicht bemerkt, dass er im Abschnitt "Befehlszeilenoptionen" war. Danke für die Korrektur, antworte bearbeitet.
Die meisten Befehle verwenden ein -, um dem Befehl mitzuteilen, dass weitere Parameter anders behandelt werden sollen. Ein Beispiel ist der oben angegebene rm_filename. Ein anderes Beispiel: Ein Skript wie 'startx' interpretiert sich selbst vor - und übergibt alles danach an den X-Server.