반응형
유닉스 셸에서 워드 지정자(Word Designators)는 주로 명령어 히스토리를 편리하게 재사용하고 수정하기 위한 도구로 사용됩니다.
워드 지정자는 히스토리 확장(History Expansion) 기능의 일환으로, Bash와 같은 셸에서 강력하게 활용될 수 있습니다.
이를 통해 이전에 입력한 명령어를 쉽게 참조하고 부분적으로 재사용할 수 있습니다.
1. 히스토리 확장 기본 개념
히스토리 확장은 주로 !
문자를 사용하여 이전 명령어를 참조합니다. 워드 지정자는 이 확장을 좀 더 세부적으로 제어하는 데 사용됩니다. 먼저, 기본적인 히스토리 확장 방법들을 살펴보겠습니다.
1. 기본 히스토리 확장
!!
: 바로 이전 명령어를 재실행합니다.!n
: 히스토리 번호가n
인 명령어를 재실행합니다.!-n
: 현재 명령어에서n
번째 이전 명령어를 재실행합니다.!string
:string
으로 시작하는 가장 최근 명령어를 재실행합니다.!?string[?]
:string
이 포함된 가장 최근 명령어를 재실행합니다.
2. 워드 지정자
워드 지정자는 히스토리 확장에서 특정 부분(워드)을 참조하는 기능을 제공합니다. 기본 형식은 다음과 같습니다:
!event:word
event
는 히스토리 이벤트 지정자입니다(예:!!
,!n
,!string
등).word
는 명령어의 특정 부분을 지정합니다.
1. 워드 지정자의 종류
^
: 첫 번째 워드 (명령어의 첫 번째 인수).$
: 마지막 워드.n
:n
번째 워드 (0부터 시작).x-y
:x
부터y
까지의 워드 범위.*
: 첫 번째 워드부터 마지막 워드까지 모두.x*
:x
번째 워드부터 마지막 워드까지 모두.-y
: 첫 번째 워드부터y
번째 워드까지 모두.
2. 예제
가정: 아래와 같은 명령어 히스토리가 있다고 합시다.
1001 echo Hello World
1002 ls -l /usr/local/bin
1003 grep "search term" file.txt
!1002:0
:ls
(히스토리 번호 1002의 첫 번째 워드).!1002:1
:-l
(히스토리 번호 1002의 두 번째 워드).!1003:$
:file.txt
(히스토리 번호 1003의 마지막 워드).!1003:2
:"search term"
(히스토리 번호 1003의 세 번째 워드).!1002:*
:-l /usr/local/bin
(히스토리 번호 1002의 첫 번째 인수부터 끝까지).!1003:1-2
:grep "search term"
(히스토리 번호 1003의 두 번째 워드부터 세 번째 워드까지).!1002:1*
:-l /usr/local/bin
(히스토리 번호 1002의 두 번째 워드부터 끝까지).
3. 히스토리 확장 조합 예제
# echo Hello World 명령어를 다시 실행하지만, "Hello"를 출력
$ echo Hello World
$ !1001:1
Hello
# ls -l /usr/local/bin 명령어를 다시 실행하지만, "/usr/local/bin"만 출력
$ ls -l /usr/local/bin
$ !1002:2
/usr/local/bin
# grep "search term" file.txt 명령어에서 "file.txt"를 다른 명령어에서 사용
$ grep "search term" file.txt
$ cat !1003:$
cat file.txt
3. 추가 옵션
1. :p
옵션
명령어를 실행하지 않고 확장된 결과만 출력합니다.
$ !1001:p
echo Hello World
4. 요약
- 워드 지정자는 히스토리 확장에서 특정 부분을 참조하는 기능을 제공합니다.
!event:word
형식으로 사용되며, 다양한 형태의 워드 지정자가 있습니다.- 이를 통해 히스토리 명령어의 특정 부분을 재사용하고 수정할 수 있습니다.
반응형
'언어 > Bash' 카테고리의 다른 글
[ Bash ] shell 스크립트에서 입력 값 받기 (0) | 2024.12.31 |
---|---|
[ Bash ] LS_COLORS - shell에서 폴더의 글자 색상 변경하기 (0) | 2024.11.01 |
[ Bash ] source로 shell에 명령어 추가하기 (0) | 2024.06.30 |
[ Bash ] fc 명령어로 history 기능을 활용하기 (0) | 2024.06.30 |
[ Bash ] 유닉스 쉘 종류 구분하기 (0) | 2024.06.30 |