このBashラインはどういう意味ですか?

このBashラインはどういう意味ですか?
find . -name "*.html" -exec grep -l somethingtobefound {} \;

"-name" "-exec" "-l" "{}" "\" および ";"キーワードが何を意味するのか気になります。

また、多くの状況で単一ダッシュ「-」の代わりにダブルダッシュ「--」が使用される場合もよくあります。互いを変えて使えるのか、そしてその意味が何なのか知りたいです。ありがとうございます!

答え1

これはバッシュの問題ではありません。それ自体- このコマンドのすべてはUnix find(1)コマンドの一連の引数で、どのシェルから呼び出されても同じように機能します。

これを考えると、実際にやるべきことはfind(1)のドキュメントをチェックすることです。以下を実行してこれを実行できます。

$ man find

または、findバージョンがGnuバージョン(Linuxを実行している場合はGnuバージョン)の場合、

$ info find

もっと本のような文書のために。

2番目の質問:多くのコマンド(特にGnuプロジェクトに属するコマンド)は、次の形式の長いオプションフラグを使用します。

$ command --long-argument --other-long-argument

公式の短い主張の代わりとして

$ command -lo

または

$ command -l -o

。これを実行するコマンドは、対応するフラグの先頭に「-」の代わりに「--」を使用して、どのタイプのオプションフラグが表示されるかを明確にします。

答え2

このコンテキストでは、「.html」で終わる結果を見つけるために結果をフィルタリングするようにコマンドに-name指示し、結果と共に実行するようにコマンドに指示します。find-execfindgrep

-lコマンドに適用され、grepパターン(たとえば)に一致する最初の入力ファイルのファイル名を印刷し、スキャンを停止する必要があることを示します。そのページsomethingtobefoundによると、現在のファイルのパス名を渡してコマンドを終了する必要があります。man{}find\;

デュアルダッシュとシングルダッシュの場合、これはプログラムによって異なり、特別な意味を持たないはずです。つまり、通常、長いパラメータ(例--show-results)と単一文字パラメータ(例)の前に二重ダッシュが表示される傾向があります-s

答え3

答えはman findを通して見つけることができます。

`
-name pattern
          Base of  file  name  (the  path  with  the  leading  directories
          removed)  matches  shell  pattern  pattern.   The metacharacters
          ('*', '?', and '[]') match a '.' at the start of the  base  name
          (this is a change in findutils-4.2.2; see section STANDARDS CON‐
          FORMANCE below).  To ignore a directory and the files under  it,
          use  -prune; see an example in the description of -path.  Braces
          are not recognised as being special, despite the fact that  some
          shells  including  Bash  imbue  braces with a special meaning in
          shell patterns.  The filename matching is performed with the use
          of  the  fnmatch(3)  library function.   Don't forget to enclose
          the pattern in quotes in order to protect it from  expansion  by
          the shell.

-exec command ;
          Execute  command;  true  if 0 status is returned.  All following
          arguments to find are taken to be arguments to the command until
          an  argument  consisting of ';' is encountered.  The string '{}'
          is replaced by the current file name being processed  everywhere
          it occurs in the arguments to the command, not just in arguments
          where it is alone, as in some versions of find.  Both  of  these
          constructions might need to be escaped (with a '\') or quoted to
          protect them from expansion by the shell.  See the EXAMPLES sec‐
          tion for examples of the use of the -exec option.  The specified
          command is run once for each matched file.  The command is  exe‐
          cuted  in  the starting directory.   There are unavoidable secu‐
          rity problems surrounding use of the -exec  action;  you  should
          use the -execdir option instead.

など。

答え4

パラメータ-name-execは、「検索するファイルまたはディレクトリ名パターン」と「実行」を示します。一致する各結果ファイルまたはディレクトリでは、「.」はパターンと一致{}する結果に置き換えられるため、ステートメントでそれをコマンドを実行するための引数として使用できます。バックスラッシュはfindコマンドの終わりを示します。デュアルダッシュは通常長いオプションです。を示します(たとえば、および単一のダッシュは短いオプション(たとえば、まったく同じ意味を持つ)を示します。-name-exec\;--ls --all-ls -a

関連情報