더북(TheBook)

3.3.2 캐럿을 이용한 히스토리 확장

다음 명령과 같이 jpg에서 오타가 발생해 jg로 입력됐다고 하자.

$ md5sum *.jg | cut -c1-32 | sort | uniq -c | sort -nr
md5sum: '*.jg': No such file or directory

이 명령을 제대로 실행하려면, 명령 히스토리에서 이전 명령을 불러온 다음 커서를 이동해 오타를 수정해야 한다. 하지만 이보다 더 쉬운 방법이 있다. 다음과 같이 틀린 부분(jg)과 수정한 내용(jpg)을 캐럿 기호(^)와 함께 쓰면 된다.

$ ^jg^jpg

그리고 Enter 키를 누르면 수정된 명령이 실행된다.

$ ^jg^jpg
md5sum *.jpg | cut -c1-32 | sort | uniq -c | sort -nr
...

캐럿 표기법(caret syntax)은 히스토리 확장 문법의 한 종류로, 여기서는 ‘이전 명령에서 jgjpg로 치환하라’는 뜻으로 쓰였다. 히스토리 확장과 마찬가지로 셸이 치환된 명령을 실행 전에 출력해준다.

치환은 원본(jg)의 첫 번째 출현에만 일어나므로 이전 명령에 jg가 한 번 이상 포함됐다면 첫 번째 jgjpg로 바뀐다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.