特殊文字を含むファイルを作成しようとしています。しかし、二重引用符や一重引用符を使用したくありません。
このファイルをどのように作成できますか?
答え1
バックスラッシュは、Bourneなどのシェルで引用の代替形式を提供するため、次のことができます。
printf %s \$\ \; > file
たとえば、ファイルに3つの特殊文字($
、スペース、および;
)が含まれているとします。 8進数シーケンスを使用してprintf
正確なバイト値を指定することもできます。
printf \\1\\2 > file
バイト 1 と 2 を含むファイルを作成します。一部のprintf
実装では、16進シーケンスもサポートしています。
printf \\xff\\x80 > file
または、Unicodeコードポイントを使用して文字を指定します。
printf \\u20ac > file
ユーロ記号を例に挙げてみましょう。ほとんどの実装では、文字はロケールの文字セットとして出力されます。 1つの例外は、組み込み関数がロケールの文字セットに関係なくprintf
UTF-8に出力されることです。ksh93
テキストを入力する他の方法については、こちらの記事をご覧ください。これは複数行のテキストに便利です。
cat << \EOF > file
some text with $ \ | # *
and anything you want
EOF
ファイルの作成名前これらの文字の場合は、次を使用します。
echo text > \$\ \;
または:
echo text > $(printf \\1\\2)
など。スプリット+グローブの効果により、$(...)
次の方法で無効にする必要があります。
IFS=; set -o noglob
$IFS
またはワイルドカード演算子(*
、、、?
)の[...]
文字の場合。