글

라벨이 Tokenization인 게시물 표시

Bash Tokenisation(토큰화)

이미지
  1. 쉘은 따옴표로 묶이지 않은 메타 문자를 식별하고, 이를 사용하여 명령 줄을 토큰으로 분할합니다. 2. 그런 다음, 쉘은 토큰을 단어와 연산자로 분류합니다. 3. 단어는 따옴표로 묶이지 않은 메타 문자를 포함하지 않는 토큰입니다. 4. 연산자는 따옴표로 묶이지 않은 메타 문자를 포함하지 않는 토큰입니다. 5. 연산자에는 두 가지 유형이 있습니다. - 제어 연산자(Control operators): 명령의 흐름을 제어하는 데 사용되는 연산자입니다. Newline, |, ||, &, &&, ;, ;;, ;&, ;;&, |&, (, ) - 리다이렉션 연산자(Redirection operators): 입출력을 다른 위치로 리다이렉션하는 데 사용되는 연산자입니다. <, >, <<, >>, <&, >|, <<-, <>, >& 먼저 아래와 같은 명령어를 확인해 보겠습니다. 사진1) bash 명령어 사진1과 같은 명령을 입력하면 bash에서는 test.txt파일을 생성하고 $data에 있는 데이터를 저장합니다. 하지만 이것을 Tokenisation을 어떻게 했는지 확인해 보겠습니다. 사진2) 메타데이터 위치 사진2에서 가장 먼저 찾는것이 메타 캐릭터 이다. 띄어쓰기(space)와 오른쪽 꺽쇄(Right Arrow)가 있는 것을 확인할수 있다. 총 4개의 메타캐릭터가 있는것을 알수 있다. 사진3) 워드의 위치 사진3과 같이 Bash에서는 3개의 워드 캐릭터를 찾습니다. 사진4) 오퍼레이터 찾기 사진4를 마지막으로 오퍼레이터를 찾습니다. 현재 명령문의 오퍼레이터는 리다이렉트 연산자만 존재하는 것을 확인할수 있습니다. 이렇게 진행하여 Bash의 Tokenisation이 마무리 됩니다.

Bash 이해해야 할 중요한 개념

이미지
1. Tokenization (토큰화)  의미: Bash는 사용자가 입력한 명령어를 토큰(Token)이라는 개별적인 부분으로 나눕니다. 예를 들어, ls -l /home/user 명령은 ls, -l, /home/user로 나뉩니다. 중요성: 이 과정은 Bash가 명령어를 올바르게 해석하고 실행하기 위한 첫 단계입니다. 토큰화 없이는 명령어의 구조와 의미를 파악할 수 없습니다. Bash Tokenisation(토큰화) 2. Command Identification (명령어 식별) 의미: 토큰화된 각 부분이 어떤 명령어, 옵션, 인자 등을 나타내는지 식별하는 과정입니다. 중요성: 이 단계에서 Bash는 사용자의 입력이 실제로 실행 가능한 명령어인지, 내장 명령어인지, 외부 프로그램인지를 판별합니다. 이는 명령어의 정확한 처리를 위해 필수적입니다. 3. Shell Expansions (셸 확장) 의미: Bash는 특정 패턴이나 표현을 확장하여 여러 값을 생성할 수 있습니다. 예를 들어, *, ?, {}, $ 등의 특수 문자를 사용한 확장이 여기에 해당합니다. 중요성: 이 기능을 통해 사용자는 간단한 표현으로 복잡한 명령어를 구성할 수 있습니다. 예를 들어, 파일 이름 패턴 매칭, 변수 확장, 명령어 치환 등이 가능합니다. -  Bash Shell Globbing 4. Quote Removal (인용 부호 제거) 의미: Bash에서는 큰따옴표("), 작은따옴표('), 백슬래시()를 사용하여 특수 문자의 기능을 변경하거나 무시할 수 있습니다. 이 단계에서는 이러한 인용 부호를 처리합니다. 중요성: 인용 부호는 문자열을 그대로 사용하거나 특수 문자의 기능을 제어하는 데 필요합니다. 예를 들어, 공백이 포함된 문자열을 하나의 인자로 처리하거나, 특수 문자의 일반 문자로서의 기능을 활용할 수 있습니다.  5. Redirections (리다이렉션) 의미: Bash에서는 입력과 출력의 방향을 변경할 수 있습니다. 예를 들어, >, >>,...