非グラフィック文字と印刷できない文字の違い

非グラフィック文字と印刷できない文字の違い

私のシステム:

  • Ubuntu 22.04.3 LTS
  • GNU bash、バージョン 5.1.16(1)-リリース(x86_64-pc-linux-gnu)

man ls-b次のように説明します。

   -b, --escape
          print C-style escapes for nongraphic characters

これ「制御文字」のウィキペディアページ状態:

制御文字またはNPC(非印刷文字)は、書かれた文字や記号を表さない文字セットのコードポイントです。他のすべての文字は、「空白」文字を除いて、主に印刷文字(または印刷可能文字)とも呼ばれるグラフィック文字です。

これはあいまいです。

グラフィックではない文字が何であるか、この用語が印刷されていない文字とどのように異なるかを説明する権威あるソースはどこですか?

ベストアンサー1

これグラフィック文字なりますisgraph()/iswgraph()標準関数は、trueまたは正規表現に一致する値[[:graph:]]、つまりgraphロケールの文字クラス値を返します。

すべてPOSIX、クラスはprint親セットでなければならず、分離しなければならgraphcntrlgraph親セットでなければならず、空白(u + 0020)文字を含めてはいけません(他の空白文字は言及されていません)。upperloweralphadigitxdigitpunct

アイデアは比喩的な文字はインクで描いた文字で、印刷可能ビーコントローラーになります。

実際、GNUシステム(Ubuntuなど)は少なくともクラスに非制御文字をprint追加します。これは、glibc 2.35(Ubuntu 22.04で使用されている)と、以下を含むUTF-8ロケールを使用します。graphspace

U+0020 SPACE
U+1680 OGHAM SPACE MARK
U+2000 EN QUAD
U+2001 EM QUAD
U+2002 EN SPACE
U+2003 EM SPACE
U+2004 THREE-PER-EM SPACE
U+2005 FOUR-PER-EM SPACE
U+2006 SIX-PER-EM SPACE
U+2008 PUNCTUATION SPACE
U+2009 THIN SPACE
U+200A HAIR SPACE
U+205F MEDIUM MATHEMATICAL SPACE
U+3000 IDEOGRAPHIC SPACE

space授業には以下がありますが、

U+0009 CHARACTER TABULATION
U+000A LINE FEED
U+000B LINE TABULATION
U+000C FORM FEED
U+000D CARRIAGE RETURN
U+0020 SPACE
U+1680 OGHAM SPACE MARK
U+2000 EN QUAD
U+2001 EM QUAD
U+2002 EN SPACE
U+2003 EM SPACE
U+2004 THREE-PER-EM SPACE
U+2005 FOUR-PER-EM SPACE
U+2006 SIX-PER-EM SPACE
U+2008 PUNCTUATION SPACE
U+2009 THIN SPACE
U+200A HAIR SPACE
U+2028 LINE SEPARATOR
U+2029 PARAGRAPH SEPARATOR
U+205F MEDIUM MATHEMATICAL SPACE
U+3000 IDEOGRAPHIC SPACE

おすすめ記事