고양이 특수문자의 의미

고양이 특수문자의 의미

의 경우 플래그를 cat사용했지만 -A이 문자의 의미를 어디서도 찾을 수 없습니다. 예를 들어:

cat /proc/cpuinfo > output

cat -A output

그 줄 중 하나는 다음과 같습니다.

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이라는 제어 문자를 문서에 삽입할 수 있습니다 TAB. CTRL키를 누른 상태에서 을 눌러도 동일한 효과를 얻을 수 있다는 것을 알 수도 있습니다 I. 이것제어 키태그는 CTRLASCII를 입력하는 방법으로 존재합니다.제어 문자.

위 표에서 볼 수 있듯이 "I" 문자는 HT(가로 탭, TAB) 문자와 같은 줄에 있습니다.

CTRL오늘날 우리는 이 문자를 + 로 쓸 수 있지만 I과거에는 약어로 사용하는 것이 더 일반적이었습니다.^I

표에서도 알 수 있듯이 "@"은 "NUL"과 같은 줄에 있으므로 ^@널 문자 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또는 가로 탭에서 특정 코드를 찾으세요.

관련 정보