![명령줄 처리 - 태그 및 메타 문자](https://linux55.com/image/74714/%EB%AA%85%EB%A0%B9%EC%A4%84%20%EC%B2%98%EB%A6%AC%20-%20%ED%83%9C%EA%B7%B8%20%EB%B0%8F%20%EB%A9%94%ED%83%80%20%EB%AC%B8%EC%9E%90.png)
나는 단지 명령줄 처리를 배우고 있으며 누군가가 다음 명령문을 해석하는 방법을 확인할 수 있기를 바랐습니다. 책에서 나는 명령줄 처리의 첫 번째 단계가 다음과 같다는 것을 읽었습니다.
- 명령을 고정된 메타 문자 집합으로 구분된 토큰으로 분할합니다.공간,상표,새로운 팀,
;
,(
,)
,<
,>
,|
, 그리고&
. 토큰 유형에는 단어, 키워드, I/O 리디렉터 및 세미콜론이 포함됩니다.
내가 명령에 대해 맞습니까?
ls | more
ls
more
토큰이고 문자는 두 토큰을 구분하는 기호 pipe
입니까 ?meta character
계속해서 <
and >
are 라고 되어 meta characters
있는데 토큰이 될 수 있다고 되어 있어서 조금 혼란스럽습니다 I/O directors
.
답변1
이것은 별로 좋은 설명이 아닙니다. ㅏ토큰단어나 문장 부호를 형성하는 일련의 문자입니다. 및 와 같은 <
문자 |
도 토큰의 일부입니다. 이를 메타 문자라고 부를 수 있지만 이는 유용한 용어가 아닙니다. 기본 규칙은 다음과 같습니다.
- 공백은 토큰의 일부가 아니며 토큰을 구분하는 데 사용됩니다.
- 토큰은 일반 문자 또는 연산자 문자로 구성되지만
()<>&|;
둘 다로 구성될 수는 없습니다. 예를 들어 (공통), (연산자), (공통), (연산자) 및 .foo<@a&>b
태그로 구성됩니다.foo
<
@a
&>
b
그런 다음 인용에 대한 추가 규칙이 있습니다. 특수 문자는 인용하면 의미를 잃고 참조 유형에 따라 다른 규칙이 있습니다. 예를 들어 은 foo'&&'bar\|qux
일련의 문자가 포함된 단일 토큰입니다 foo&&bar|qux
.