カスタムアクションLinuxのBash機能です。書くとLinuxターミナルで
root@localhost: find ~ -type f -name 'foo*' -ok ls -l '{}' ';'
次に、次のように始まるファイル名があることを確認し、foo
ファイルの詳細を表示します。
< ls ... /home/me/bin/foo > ? y
-rwxr-xr-x 1 me me 224 2011-10-29 18:44 /home/me/bin/foo
< ls ... /home/me/foo.txt > ? y
-rw-r--r-- 1 me me 0 2012-09-19 12:53 /home/me/foo.txt
押すたびに、yこれらの結果が表示されます。
私の質問はこの文字の特別な意味は何ですか'{}' ';'
?
{}
現在のパスを表すコマンドを読んで終了しましたが、';'
bashでは決して';'
。
ベストアンサー1
これらはbashの一部ではありませんfind
。独立プログラムそして、実行のためにbashやPOSIXシェルも必要ありません。たとえば、bashとうまく機能しますfish
が、POSIXと互換性がなく、bashと同じ構文規則に従いません。実際にはシェルなしで使用できます(例:プログラミングコンテキストで)。
そのため(POSIXシェルを使用する場合、またはこの場合は同様の規則を持つシェルを使用している場合)、いくつかのパラメータで引用符を使用したいと思います。find
たとえば、find . -name '*foo'
一重引用符内の文字列は、置換または拡張を実行せずに渡されます。シェルはこれについて何もしません。 bashで使用しfind . name *foo
、そのglobに一致するファイルが現在のディレクトリに存在する場合は、何もしないことがあります。
異なるルールを持つシェルを使用している場合は、それらを使用するときにこれらのルールを考慮する必要がありますfind
。たとえば、実際に{}
引用する必要はありませんが、bash
を使用して同じことをすることがfish
できますfind: missing argument to '-exec'
。
中かっこは bash で意味があります。パラメーターの置換/拡張およびコマンドのグループ化に使用されます。私は同様の目的を果たしますfind
が、解析するのではfind
ありませんbash
。