コマンドラインで特殊文字がエスケープされるのはなぜですか

コマンドラインで特殊文字がエスケープされるのはなぜですか

私は AlmaLinux サーバーを持っていますが、エンコードの問題で苦労しています。たとえば、CLI で次のように入力するとします。

mkdir asdfü
ls ./

私は 'asdf'$'\303\274'

これをどうすれば修正できますか?

答え1

端末は入出力が UTF-8 でエンコードされるように設定されているようですが、シェル セッションは異なる文字セットのロケールで実行されており、バイト 0303 と 0274 (8 進数) は、個別または組み合わせても有効な印刷可能文字を形成しません。おそらく、そのロケールはC/ POSIX(定義されていないか不適切に定義されている場合のデフォルトのロケール) であり、文字セットは ASCII (別名 ANSI_X3.4-1968) であり、バイト 0303 と 0274 (0177 を超えるバイト) に文字を定義していません。

locale charmap

ロケールで使用されている文字セットがわかります。

locale

ロケール設定を表示します。

少なくとも、$LANG文字セットが UTF-8 で、自分の好みに合うロケールに変更したいと思うでしょう。

locale -a

サーバー上で利用可能なロケールのリストが表示されます。

関連情報