コンソールで「tree」コマンドを実行すると、次の結果が表示されます。
.
├── Annexe\ 1\ -\ Sch\303\251ma\ global\ de\ la\ base\ de\ donn\303\251es.raw
...
結果はUTF-8シーケンスで構成され、報告された文字列を人間が読める形式で取得する必要があります。この不快なことをどのように変えることができますか?
答え1
--charset
スイッチで使用する文字セットを指定できます。
--charset charset
Set the character set to use when outputting HTML and for line
drawing.
また、次の2つのスイッチが役に立ちます。
-q Print non-printable characters in filenames as question marks
instead of the default.
-N Print non-printable characters as is instead of as escaped octal
numbers.
また、次のスイッチを使用して出力を向上させることもできます。
-A Turn on ANSI line graphics hack when printing the indentation
lines.
-S Turn on ASCII line graphics (useful when using Linux console mode
fonts). This option is now equivalent to `--charset=IBM437' and
may eventually be depreciated.
答え2
以下を使用して出力を取得できます。
LC_ALL=C tree -A
0303と0251が有効な文字(またはそのロケールの文字シーケンス)と見なされないことを\303\251
確認できます。tree
\303\251
ただし、isé
およびiso-8859-1またはiso-8859-15(フランス語使用国で一般的に使用される2つの一般的な文字ごとのシングルバイト文字セット)であるUTF-8ロケールで機能します。isおよび\303
isです。Ã
\251
©
したがって、ここでは、Cロケールと同様に、ASCIIなど、最初の128バイト値に対してのみ定義された文字セットを持つロケールにあります。
tree
文字セットがUTF-8またはiso-8859-15であることがわかり、対応する0303バイトを\303
。
locale -a
システムにUTF-8文字セットを使用するロケールがあるかどうかを通知します。その後、次のものを選択できますfr_FR.UTF-8
。
LC_ALL=fr_FR.UTF-8 tree
ただし、正しく表示されるかどうかは、端末エミュレータの理解に依存します。 UTF-8 文字を表示するように構成されていない場合は機能しません。
端末エミュレータでiso-8859-1を表示できる場合は、tree
UTF-8表示を有効にして次のコマンドを使用して変換できますiconv
。
LC_ALL=fr_FR.UTF-8 tree | iconv -f UTF-8