Es hat nichts mit Bash zu tun, es ist Teil der find
Syntax. Der Befehl muss wissen, wo die -exec
Aktion endet. Es endet um ;
oder um +
. Abhängig vom Abschlusszeichen wird eine geeignete -exec
Aktionsvariante verwendet.
Warum wurden diese beiden Charaktere für diesen Zweck ausgewählt? Ich weiß es nicht. Ein Weg zum Schluss -exec
war ein Muss und jemand entschied sich für ;
und +
. Jetzt sind die Zeichen Bestandteil des POSIX-Standards, wenn es um den find
Befehl geht.
Wir können nur vermuten, dass ;
das gewählt wurde, weil es auch einen Befehl in einer Shell beenden kann, so dass der Zweck ähnlich ist. Aus diesem Grund ;
muss das, was gesehen werden find
muss, speziell in der Hülle behandelt werden, also \;
( ';'
oder ";"
auch funktioniert). Es gibt kein solches Problem mit +
.
Technisch hätte fast jede andere Zeichenfolge anstelle von +
(die gleiche mit ;
) gewählt werden können. Beachten Sie, dass -exec
, {}
, +
und ;
(nachdem er übergibt die Schale durch Flucht oder zu zitieren), mögliche Tests oder Aktionen wie -type
oder -print
- sie alle sind Argumente find
; sie werden bedeutsam, wenn sie find
verarbeitet werden, ihre Bedeutung kommt von der find
Erfindung.
Zusammenfassen:
- Es geht darum
find
, nicht umbash
. - Das Tool unterstützt zwei geringfügig unterschiedliche
-exec
Aktionen. - Um sie voneinander zu unterscheiden, verwenden wir zwei verschiedene Argumente, die die
-exec
Anweisung beenden . Es ist eine Designwahl. - Diese zwei verschiedenen Argumente sind
;
und+
; Es ist eine Designwahl. - Diese Wahl hätte anders getroffen werden können. Selbst wenn eine Geschichte dahinter steckt
+
(was ich nicht weiß), ist es eine Kleinigkeit, nicht etwas wirklich Sinnvolles. Ich kann nur spekulieren,{} +
wenn "ein Argument oder mehr" wie 10+ manchmal "zehn oder mehr" bedeutet.
Ein breiterer Einblick
+
bedeutet plus wie3+5=8
oderconcatenate
, um zwei Strings zu einem wies1
+ zu verbindens2
. Es ist eine seltsame Sache, dem Argument eine Bedeutung zuzuweisen+
.
Wie wäre es mit
>
bedeutet "größer als" ... Es ist eine seltsame Sache, eine Bedeutung für "Weiterleitung" zuzuweisen>
.
" +
bedeutet plus" kommt nicht von Gott. Jemand entschied, andere folgten und das Symbol blieb hängen.
- Jemand entschied
+
in der Mathematik "Plus". - Jemand entschied
>
in der Mathematik "größer als". - Jemand entschied sich für
>
Weiterleitungen in einer Shell. - Jemand beschließt,
+
endet-exec
imfind
Kontext.