findコマンドの+をエスケープする必要がありますか?

findコマンドの+をエスケープする必要がありますか?

\+Bashには次のコードがありますが、それを削除して簡単に使用できるかどうか疑問に思います。+

   find "$fdir"                                \
      -type f -name "*.org" -o -name "*.texi"  \
      -exec head -n "$n" {} \+                 \
   | grep --color -e ^ -e '^==>.*' 

ベストアンサー1

+はいいいえシェルの特殊文字には引用符は必要ありません。

^これにはThompsonシェル(最初のUNIXシェル)が含まれていますが、Bourneシェルfish、、、、rcおよびeszshextendedglob{}rc引用の必要性と以前のバージョン fish*、、、、(はほとんど)>シェルで特別です。

すべての実装が複数のパラメータを受け入れるわけではありませんhead。 GNU実装はheadこれらの==>ヘッダー行を印刷しますが、複数の引数が渡された場合、またはこの-vオプションが使用されている場合にのみ印刷されます。

-oまた、AND(暗黙的)がOR()よりも優先されることに注意してくださいfind複数の '-name' と '-exec' を持つ 'find' は、最後に表示される '-name' のみを実行します。)、だから:

find "$fdir"                                       \
   -type f '(' -name '*.org' -o -name '*.texi' ')' \
   -exec head -v -n "$n" '{}' +                    \
   | grep --color -e '^' -e '^==>.*'

'...'代わりに参照を使用する"..."か、\一貫性のために引用を使用してください。)

Bourne、csh などのシェルで使用でき、/fishでは二重引用符を削除する必要があります。 csh/tcsh では次のように置き換えることができるので、改行文字が含まれていても機能します。rces"$fdir"$fdir:q$fdir

$fdir周囲の引用符は、cshのような$nシェルではなく、Bourneのようなzshシェルでのみ必要です。 /の参照演算子で"はありません。どちらも引用符演算子ではありません(他のシェルのように行の連続を実行しますが)。rces\rc

バラよりUnixシェルで通常の文字などの特殊文字を使用する方法は?どの文字がどのシェルで特別でエスケープ/引用方法を説明します。

おすすめ記事