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, rmund 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.
rmProgramms 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.