'{}'';'特別な意味と検索

'{}'';'特別な意味と検索

カスタムアクション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

おすすめ記事