だから、特定のコマンドを実行する方法を忘れたとき、インターネット検索を始める前にマニュアルページを見る習慣を持ち上げようとしました。
今日はfindコマンドのマニュアルページを見て、要約セクションでコマンドフォーマットを次のように指定します。
SYNOPSIS
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
これは、オプションがパスの前に来て、次に式の前に来なければならないことを意味しませんか?または、概要に順序が指定されていませんか?
findを使用するときは、次のようにオプションの前にパスを指定する必要があります。
find . -cmin -10 -ls
答え1
-cmin
そして-ls
スルブそれの一部です表現する、オプションではありません。
オプションの終わりを表示できますが、--
その後も述語を受け入れることができます。
GNU ではfind
省略が許可されます。道:
find -- -L
文句を言う不明-L述語(-L
それは有効ですが、オプション-follow
実際に等しいものがありますスルブ)。
だからこそ
find "$file"
良い
wc "$file"
$file
で始まると正しく機能しません-
。
これはwc -- "$file"
問題を解決しますがwc
(特別な場合を除くfile='-'
)、解決しませんfind -- "$file"
。 FreeBSDはfind
すでにfind -f "$file"
これをやっています。
答え2
注文find
は非常に古く、日付は次の日付にさかのぼります。Unix V5。当時、コマンドライン構文規則はこれほどしっかりと確立されていませんでした。いくつかの古いプログラムはこれらの規則から外れています。
もともと選択肢find
はありませんでした。最初の引数は探索するディレクトリであり、残りの引数は式であると予想します。各ファイルに対して評価された式は、ファイルを印刷する必要があるかどうか(またはより一般的にはファイルとして実行するアクション)を表します。式は演算子とオペランドで構成されます。 find演算子は、オプションが次のように始まるのと同じ理由で、次のように始まります-
(一部の句読点を除く)-
。なぜなら、シェルには特別な意味がないので入力しやすいのですが、ファイル名と区別できるからです。で始まるファイル名ではこれをしないでください-
。
キャリアはオプションではありません。なぜ? options構文がないため... optionsスペル(で始まる-
)がありますが、他のコンテキストで使用されます。
後でfind
オプションと見なすことができるいくつかの点がありました。-depth
このようなグローバル設定は実際には表現に意味がありません。find
オプションがないため、一貫性のために式に含まれます。
後でfind
一般的なオプション構文(非オプションの前のオプション)を使用していくつかのオプションを取得します。これは、同じオプションをサポートし-H
、-L
シンボリックリンク動作を構成する他の多くのプログラムとの一貫性のために行われます。
シノプシスにはこのような内容が記載されています-H
。-L
できるまず、パス、次の式です。要約文法が常にすべての可能性を表現するわけではありません。それが完全であれば読むことができないので、あなたが知っているのはそれが可能性を提供することだけです。できることと不可能なことを正確に知りたい場合は、もっと読む必要があります。たとえば、、など-H
は-L
パスの前にのみ存在する場合は、任意の順序で表示できます。