\+
Bashには次のコードがありますが、それを削除して簡単に使用できるかどうか疑問に思います。+
find "$fdir" \
-type f -name "*.org" -o -name "*.texi" \
-exec head -n "$n" {} \+ \
| grep --color -e ^ -e '^==>.*'
答え1
+
はいいいえシェルの特殊文字には引用符は必要ありません。
^
これにはThompsonシェル(最初のUNIXシェル)が含まれていますが、Bourneシェルfish
、、、、rc
およびes
。zsh
extendedglob
{}
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 では次のように置き換えることができるので、改行文字が含まれていても機能します。rc
es
"$fdir"
$fdir:q
$fdir
$fdir
周囲の引用符は、cshのような$n
シェルではなく、Bourneのようなzsh
シェルでのみ必要です。 /の参照演算子で"
はありません。どちらも引用符演算子ではありません(他のシェルのように行の連続を実行しますが)。rc
es
\
rc
バラよりUnixシェルで通常の文字などの特殊文字を使用する方法は?どの文字がどのシェルで特別でエスケープ/引用方法を説明します。