[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

10.1.7 ファイル名のフォーマット

以下のオプションは、ファイル名の表示方法を変更する。

-b
--escape
--quoting-style=escape

ファイル名中の非表示文字を、C 言語で使うような、バックスラッシュにアルファベットや 8 進数を続ける方法を使用して、クォートする (訳注: このオプションでは、タブや改行だけでなく、空白 (Ox20) もバックスラッシュでクォートされる)。

-N
--literal
--quoting-style=literal

ファイル名をクォートしない。とは言え、ls では、出力先が端末の場合は、 ‘--show-control-chars’ が指定されていないかぎり、 非表示文字を疑問符として表示するぐらいのことは行う。

-q
--hide-control-chars

ファイル名中の非表示文字に代えて、疑問符を表示する。 この動作は、出力先が端末で、プログラムが ls の場合のデフォルトである。

(訳注: このオプションの現在の動作は変わっているかもしれない。 すなわち、出力先が端末以外の場合は、上記の通り、非表示文字を疑問符で表示するが、 出力先が端末の場合は、非表示文字を疑問符ではなく、‘$''’ という形で表示し、空白 (0x20) を含むファイル名はファイル名全体をシングルクォートで囲むかもしれない。 ‘--quoting-style’ の説明の末尾の訳注もご覧になっていただきたい。)

-Q
--quote-name
--quoting-style=c

ファイル名をダブル・クォートで囲み、非表示文字を C 言語と同じやり方でクォートする。

--quoting-style=word

ファイル名などの文字列には、通常使われない文字が含まれているかもしれない。 このオプションを指定すると、word というスタイルを使って、 そうした文字列をクォートすることになる。 word は、以下に挙げるものの一つでなければならない。

literal

文字列に手を加えず、そのまま出力する。これは、‘-N’ や ‘--literal’ オプションと同じである。

shell

文字列にシェルのメタ文字がある場合や、出力が誤解を招くものになりそうな場合に、 シェル向けのクォートを施す。このクォート方法は、bash のような POSIX 互換のシェルにはふさわしいものだが、 csh のような非互換のシェルでは、必ずしもうまく働くとはかぎらない。

shell-always

普通ならクォートが不要な場合でも、文字列にシェル向けのクォートを施す。

shell-escape

shell’ に似ているが、非表示文字のクォーティングに POSIX 提唱の ‘$''’ という書式を使用する。ほとんどのシェルに適している。 (訳注: ファイル名中に空白 (0x20) がある場合は、ファイル名全体をシングルクォートで囲む。)

shell-escape-always

shell-escape’ に似ているが、普通ならクォートが不要な場合でも、 文字列にクォートを施す。

c

C 言語の文字列リテラルをクォートするときのように、文字列をクォートする。 文字列をダブル・クォートで囲むことも行う。 これは、‘-Q’ や ‘--quote-name’ オプションと同じである。

escape

C 言語の文字列リテラルをクォートするときのように、文字列をクォートする。 ただし、文字列をダブル・クォートで囲むことはしない。 これは、‘-b’ や ‘--escape’ と同じである。

clocale

C 言語の文字列リテラルをクォートするときのように、文字列をクォートする。 ただし、文字列を囲む引用符には、ロケールにふさわしいものを使う。

locale

C 言語の文字列リテラルをクォートするときのように、文字列をクォートする。 ただし、文字列を囲む引用符には、ロケールにふさわしいものを使い、 さらに、デフォルトの C ロケールで言うと、"like this" ではなく、 ’like this’ のようにクォートを行う。この方が見栄えのよいディスプレイが多い。

--quoting-style’ オプションのデフォルト値は、環境変数 QUOTING_STYLE によって指定することができる。 この環境変数が設定されていない場合、デフォルトの値は、出力先が端末のときは ‘shell-escape’ であり、端末以外のときは ‘literal’ である。

(訳注: 上記の説明からは、デフォルトの端末に対する出力のスタイルは、 ‘shell-escape’ であるように読める。しかし、‘--hide-control-chars’ (‘-q’) の説明や、ls の章全体の冒頭では、 非表示文字を疑問符として表示するのが、デフォルトの端末に対する出力だと言っている。 info マニュアルの説明に少し混乱があり、部分的に古い記述が残っているらしい。実のところ、coreutils の開発元では、バージョン 8.25 あたりから、デフォルトの端末に対する出力を ‘--quoting-style=shell-escape’ にしている。 たとえば、ファイル名にタブが含まれている場合、オプションなしの ls は、‘aaa?bbb’ ではなく ‘'aaa'$'\t''bbb'’ のように端末に表示するのである。また、ファイル名中に空白がある場合は、 ファイル名全体をシングルクォートで囲って、‘'/misc/xxx yyy'’ のように表示する。しかし、ディストリビューションによっては、バージョン 8.26 でも、デフォルトの端末に対する出力を ‘--quoting-style=literal’ にしていることもある。 その方が見やすいかもしれないので、それも一見識だと思う。端末に対するデフォルトの出力や ‘-q’ オプションの動作が、ご自分のところではどうなっているか、一度お確かめになっておくとよい。)

--show-control-chars

ファイル名中の非表示文字に手を加えず、そのまま出力する。 この動作は、出力先が端末ではない場合や、プログラムが ls ではない場合のデフォルトである。

(訳注: 開発元配布のバージョン 8.26 では、‘--show-contrls-chars’ を指定した場合も、出力先が端末だと、非表示文字を ‘$''’ の書式で表示している。 出力先が端末以外なら、上の説明どおり、非表示文字がそのまま出力される。 しかし、ディストリビューション配布の ls では、出力先が端末の場合に上記説明通りの動作をするものもある。 これも、お手元で実際の動作を確かめておいていただきたい。)


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This document was generated on June 7, 2022 using texi2html 1.82.