Warum sind die backslash und Semikolon erforderlich, mit dem Befehl "suchen" die -exec-option?
Habe ich begonnen, die Kombination verschiedener Befehle in der linux terminal. Ich Frage mich, warum der backslash und Semikolon sind erforderlich für ein Befehl wie:
find ./-name 'blabla' -exec cp {} ./test \;
bei einem einfachen cp Befehl ist einfach:
cp randomfile ./test
ohne \;
Sind Sie eindeutig zu Kennzeichnen das Ende eines Befehls, oder ist es einfach erforderlich, in der Dokumentation? Was ist das Prinzip?
Danke!
- Ein
;
auf seine eigene wäre am Ende, der Befehl. Durch die Verwendung\;
eine wörtliche;
wird als parameter übergebenfind
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den backslash vor dem Semikolon verwendet, weil
;
ist eine Liste mit Operatoren (oder&&
,||
) für die Trennung von shell-Befehlen. Im Beispiel:Den
find
- Dienstprogramm;
oder+
zu beenden, die shell-Befehle aufgerufen-exec
.So zu vermeiden, spezielle shell-Zeichen von der interpretation, die Sie benötigen, um mit Backslashes zu entfernen, eine Besondere Bedeutung für das nächste Zeichen gelesen und für Zeile fortgesetzt.
Daher die folgenden Beispiel-syntax ist erlaubt für
find
Befehl:Siehe auch:
vom "Mann finden":
finden muss wissen, wenn die Argumente von exec beendet werden. Es ist natürlich, zu beenden, einen shell-Befehl mit ; weil auch die Schale verwendet dieses Zeichen. Für die sehr gleichen Grund, solche Zeichen müssen escaped werden, wenn Sie eingesetzt wird durch die Schale.