/ / Was bedeutet + im Bash-Befehl `-exec {} +`? - Linux, Kommandozeile, bash, find, exec

Was bedeutet + im Bash-Befehl -exec {} +? - Linux, Kommandozeile, bash, find, exec

F√ľr die Befehlsstruktur -exec command {} ;Ich habe Informationen in man find.

  1. {} meint selected files.
  2. ; bedeutet, das Argument zu beenden.
  3. ; entkam, um sie vor der Expansion durch die Schale zu sch√ľtzen.

In dem Absatz zu -exec command {} +.

 -exec command {} +
This  variant  of the -exec action runs the specified command on
the selected files, but the command line is built  by  appending
each  selected file name at the end; the total number of invoca‚Äź
tions of the command will  be  much  less  than  the  number  of
matched  files.   The command line is built in much the same way
that xargs builds its command lines.  Only one instance of  `{}"
is  allowed  within the command, and (when find is being invoked
from a shell) it should be quoted (for example, "{}") to protect
it  from  interpretation  by shells.  The command is executed in
the starting directory.  If any invocation  returns  a  non-zero
value  as exit status, then find returns a non-zero exit status.
If find encounters an error, this can sometimes cause an immedi‚Äź
ate  exit, so some pending commands may not be run at all.  This
variant of -exec always returns true.

Es sagt nie etwas an + , Was bedeutet + in der Bash -exec command {} +?
Es bedeutet, das Argument wie zu beenden ;?
+ bedeutet plus wie 3+5=8 oder concatenate , um zwei Saiten zu einer zu verbinden, wie z s1+s2.
Es ist seltsam, eine Bedeutung zuzuweisen terminate the argument zum +.

Antworten:

1 f√ľr Antwort ‚ĄĖ 1

Es hat nichts mit Bash zu tun, es ist ein Teil von find Syntax. Der Befehl muss wissen, wo die -exec Aktion endet. Es endet um ; oder bei +. Je nach Abschlusszeichen eine passende Variante von -exec Aktion wird verwendet.

Warum wurden diese beiden Charaktere zu diesem Zweck ausgewählt? Ich weiß es nicht. Ein Weg zum Ende -exec Aussage war ein Muss und jemand wählte ; und +. Jetzt sind die Zeichen Teile des POSIX-Standards, wenn es um die find Befehl.

Das können wir nur erraten ; wurde gewählt, weil es auch einen Befehl in einer Shell beenden kann, daher ist der Zweck ähnlich. Aus diesem Grund jedoch ; das muss man gesehen haben find muss daher speziell in der Schale behandelt werden ; (";" oder ";" funktioniert auch). Es gibt kein solches Problem mit +.

Technisch h√§tte fast jede andere Saite gew√§hlt werden k√∂nnen + (das selbe mit ;). Beachten Sie, dass -exec, {}, + und ; (nachdem es die Shell dank Flucht oder Zitieren passiert hat), m√∂gliche Tests oder Aktionen wie -type oder -print - Sie alle sind Argumente f√ľr find; Sie werden sinnvoll, wenn find verarbeitet sie, ihre Bedeutung kommt von wie find wurde erfunden.

Zusammenfassen:

  1. Es geht um find, nicht √ľber bash.
  2. Das Tool unterst√ľtzt zwei leicht unterschiedliche -exec Aktionen.
  3. Um sie voneinander zu unterscheiden, verwenden wir zwei verschiedene Argumente, die enden -exec Aussage; es ist eine Designwahl.
  4. Diese beiden unterschiedlichen Argumente sind ; und +; es ist eine Designwahl.
  5. Diese Entscheidungen h√§tten anders getroffen werden k√∂nnen. Auch wenn dahinter eine Geschichte steckt + (was ich nicht wei√ü), es ist eine Kleinigkeit, nicht wirklich etwas Bedeutungsvolles. Ich kann nur spekulieren {} + ist f√ľr "ein Argument oder mehr" wie 10+ bedeutet manchmal "zehn oder mehr".

Weiterer Einblick

+ bedeutet plus wie 3+5=8 oder concatenate, um zwei Saiten zu einer zu verbinden, wie z s1+s2. Es ist seltsam, eine Bedeutung zuzuweisen, die das Argument f√ľr beendet +.

Wie wäre es mit

> bedeutet "gr√∂√üer als" ... Es ist seltsam, eine Bedeutung f√ľr "umleiten" zuzuweisen >.

"+ bedeutet plus "ist nicht von Gott. Jemandem entschieden, andere folgten und das Symbol blieb hängen.

  • Jemand hat entschieden + bedeutet "Plus" in der Mathematik.
  • Jemand hat entschieden > bedeutet "gr√∂√üer als" in der Mathematik.
  • Jemand hat entschieden > leitet in einer Shell um.
  • Jemand hat entschieden + beendet -exec im find Kontext.