猫の特殊文字の意味

猫の特殊文字の意味

の場合、フラグをcat使用しましたが、-Aこの文字の意味はどこにも見つかりません。たとえば、

cat /proc/cpuinfo > output

cat -A output

その行の1つは次のとおりです。

processor^I: 7$

New Lineが何を意味するのか知っていますが$、それはどういう^I意味ですか?

どういう意味ですか^@

私のCプログラムから削除できるように、どのタイプの空白cpuinfoが突き出ているのかを理解しようとしていますが、これを行うのに問題があります。

答え1

^I^@一般的な「カラット」表記法を使用します。制御文字^Iタブ文字である文字9のASCII文字control-Iを示します。^@Cの文字列終端文字である文字0のASCII文字control-@を示します。一般的な形式は大文字またはそのいずれかであり、値がマイナス64のバイト値を表し、バイト値に64を加えた値である127を表します。^cc@[\]^_c^??

別の標準的でない表現がありますcat -A。非ASCIIバイト(つまり、128以上のバイト値)が次のように表示され、M-その後に値が128未満のバイト(つまり、上位ビットが反転されたバイト値)の表現が表示されます。 。

cat -A視覚的にぼやけた出力を理解する最良の方法ではありません。 16進成績表は、より正確な情報を提供します。

od -t x1 /proc/cpuinfo
hd /proc/cpuinfo

ただし、Cプログラムではscanf情報を解析するために使用できます。すべてのASCIIスペースは空白であり、ファイル内のファイルはフォーマットが有効であるscanfこと/procを知っています。

答え2

この場合、^「control」は「control」の短縮語として使用されます。したがって、^AASCII文字1の「control-A」を意味します。 ^I表現control-IまたはASCII 9とも呼ばれますTAB^@したがって、ASCII 00 または NUL 文字です。

このような文字をしばしば「制御文字」といいます。

;これは「メタ」をM-意味し、最も高いビットが設定されたことを意味します(次の文字のASCII値に128が追加されます)。

答え3

付録として、文字と制御文字の関係は、他の答えから完全に明確ではありません

これASCII文字セット次の表に表示できます。

NUL   SP  @  `
SOH   !   A  a
STX   "   B  b
ETX   #   C  c
EOT   $   D  d
ENQ   %   E  e
ACK   &   F  f
BEL   '   G  g
BS    (   H  h
HT    )   I  i
LF    *   J  j
VT    +   K  k
FF    ,   L  l
CR    -   M  m
SO    .   N  n
SI    /   O  o
DL    0   P  p
DC1   1   Q  q
DC2   2   R  r
DC3   3   S  s
DC4   4   T  t
NAK   5   U  u
SYN   6   V  v
ETB   7   W  w
CAN   8   X  x
EM    9   Y  y
SUB   :   Z  z
ESC   ;   [  {
FS    <   \  |
GS    =   ]  }
RS    >   ^  ~
US    ?   _  DEL

ご存知のように、TABというラベルの付いたキーボードキーを押すと、TABという制御文字を文書に挿入できますTABCTRLキーを押しながらを押しても同じ効果が得られることがわかりますI。これ制御キータグはCTRLASCIIを入力する方法で存在します。制御文字

上の表に示すように、「I」文字はHT(水平タブ、TAB)文字と同じ行にあります。

CTRL今日、私たちはこの文字を+と書くことができますが、I以前は略語として使用する方が一般的でした。^I

表でもわかるように、「@」は「NUL」と同じ行にあるため、^@NULL文字0x00のNULを表します。

表の配列は、これらのASCII文字に割り当てられた数値(「コードポイント」)を示しており、各値は0x40に対応する制御文字の値を加えたものです。

答え4

16進ビューアを使用してください。

% hexdump -C /proc/cpuinfo | sed -n /processor/p
00000000  70 72 6f 63 65 73 73 6f  72 09 3a 20 30 0a 76 65  |processor.: 0.ve|
00000340  74 3a 0a 0a 70 72 6f 63  65 73 73 6f 72 09 3a 20  |t:..processor.: |
% 

ascii(7)次に、表または類似の表を見つけて、ここ09または水平タブで特定のコードを見つけます。

関連情報