Previous: Formatting file timestamps, Up: ls invocation   [Contents][Index]


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

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

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

ファイル名中の非表示文字 (nongraphic characters) を、C 言語で使うような、 バックスラッシュにアルファベットや 8 進数を続ける方法を使用して、クォートする。

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

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

-q
--hide-control-chars

ファイル名中の非表示文字に代えて、疑問符を表示する、この動作は、 出力先が端末で、プログラムが ls の場合のデフォルトである。 (訳注: このオプションの現在の動作は変わっているかもしれない。 すなわち、非表示文字を疑問符ではなく、‘$''’ という書式で表示するかもしれない。 --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 提唱の ‘$''’ という書式を使用する。ほとんどのシェルに適している。

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 の説明や、ls の章の冒頭では、非表示文字を疑問符として表示するのが、 デフォルトの端末に対する出力だと言っている。info マニュアルの説明に少し混乱があり、 部分的に古い記述が残っているらしい。実のところ、coreutils の開発元では、バージョン 8.25 あたりから、デフォルトの端末に対する出力を --quoting-style=shell-escape にしている。 たとえば、ファイル名にタブが含まれている場合、ls は ‘aaa?bbb’ ではなく ‘'aaa'$'\t''bbb'’ のように端末に表示するのである。しかし、ディストリビューションによっては、 バージョン 8.26 でも、デフォルトの端末に対する出力を --quoting-style=literal にしていることもある。 その方が見やすいかもしれないので、それも一見識だろう。 ご自分のところではどうなっているか、一度お確かめになっておくとよい。)

--show-control-chars

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