최신 bash 셸을 사용 중이라면 Ctrl+R 단축키를 활용해 명령어 기록(command history)을 손쉽게 검색할 수 있습니다. 이전에 사용했던 명령어를 불러와 다시 실행하는 기능으로, emacs 모드의 ksh 등 다른 셸에서도 작동할 수 있습니다. 이 간단한 팁 하나만 알아도 명령줄 작업 속도를 크게 향상시킬 수 있습니다.
이 기능을 사용하려면 먼저 터미널을 열어야 합니다. Ctrl+Alt+T를 누르거나, 데스크톱 환경이 지원한다면 Super+T를 사용하세요. 또는 응용 프로그램 메뉴에서 시스템 도구(System Tools)로 이동해 터미널을 클릭하거나, 우분투 대시(Ubuntu Dash)에서 '터미널'을 검색해도 됩니다.
방법 1: Ctrl+R로 명령어 검색하기
bash 프롬프트에서 Ctrl 키를 누른 상태로 R을 누르면 (reverse-i-search)`':라는 메시지가 커서와 함께 나타납니다. 이전에 입력했던 명령어의 첫 글자를 입력하면 해당 명령어를 찾을 수 있습니다. 예를 들어 cat 명령어로 텍스트 파일 내용을 확인했다면 'c'를 입력하면 되고, cal 명령어로 달력을 본 적이 있다면 이 명령어도 함께 나타날 수 있습니다.
Ctrl+R을 다시 누르면 비슷한 이름의 명령어들을 순차적으로 탐색합니다. bash 기록이 길다면 이름이 유사한 명령어가 여러 개 있을 수 있는데, 원하는 명령어를 찾으면 엔터 키만 누르면 됩니다. 프롬프트에는 마치 직접 입력해서 실행한 것처럼 표시되므로, 전체 명령어를 다시 입력할 필요 없이 한두 글자만 입력하면 충분합니다.
과거에 입력했던 긴 명령어도 몇 글자만 입력하면 바로 찾아낼 수 있으며, 찾은 후에는 엔터를 눌러 평소처럼 실행하면 됩니다. 덕분에 기록에서 원하는 명령어를 찾는 과정이 훨씬 수월해집니다. 명령어가 줄에 나타난 상태에서 방향키를 이용해 내용을 수정한 뒤 실행할 수도 있습니다.
실행을 취소하고 싶다면 Ctrl+C를 눌러 Ctrl+R 검색을 종료하면 됩니다. 터미널 명령줄의 다른 작업을 취소할 때와 동일한 방식입니다. 어떤 명령어를 실행한 후에도 이 기법을 자유롭게 사용할 수 있으며, 일부 웹사이트에서 설명하는 것과 달리 시도할 때 터미널에 이미 출력된 내용이 무엇인지 전혀 걱정할 필요가 없습니다.
방법 2: Ctrl+R 검색용 태그 추가하기
자주 사용하는 명령어를 반복해서 찾고 싶다면, 명령어 줄 끝에 주석 형태의 태그를 추가하는 방법이 유용합니다. 명령어를 입력한 뒤 공백을 하나 두고 #findme라고 입력한 후 엔터를 눌러 명령어를 실행하세요. #findme는 프로그래밍 언어의 주석으로 처리되기 때문에 셸이 이를 무시합니다.
이후 해당 명령어가 필요할 때마다 Ctrl+R을 누르고 '#fin'을 입력하면 명령어가 바로 나타납니다. 여러 명령어에 태그를 지정하려면 서로 다른 이름을 붙이면 됩니다. 예를 들어 #command1, #command2처럼 지정해두면 '#com'을 입력한 뒤 Ctrl+R을 몇 번 눌러 원하는 명령어를 빠르게 찾을 수 있습니다. 명령어 기록이 매우 많은 경우에 특히 효과적이며, 각 태그는 기록이 삭제될 때까지 계속 유지됩니다.
방법 3: ksh에서 emacs 모드 활성화하기
ksh를 기본 셸로 사용한다면 set -o emacs를 입력하고 엔터를 누릅니다. emacs 모드가 활성화되면 bash와 마찬가지로 Ctrl+R 기능을 사용할 수 있습니다. 다만 작동 방식이 아주 약간 다르며, bash 셸 사용자는 이 과정을 거칠 필요가 없으므로 대부분의 리눅스 사용자는 이 단계를 건너뛰어도 됩니다.
ksh 사용자가 Ctrl+R을 누르면 화면에 ^R이 출력됩니다. 검색어를 입력하고 엔터를 누르면 가장 일치하는 항목이 표시되며, 해당 항목을 편집하거나 엔터를 한 번 더 눌러 실행할 수 있습니다. 참고로 emacs 모드는 일반적인 방향키 기능 등 몇 가지 추가 옵션도 함께 제공합니다.
저자 소개

Kevin Arrows (케빈 애로우즈)
Kevin Arrows는 10년 이상의 업계 경험을 보유한 베테랑 기술 전문가입니다. Microsoft Certified Technology Specialist(MCTS) 자격증을 보유하고 있으며, 최신 기술 동향을 꾸준히 학습하는 데 깊은 열정을 가지고 있습니다. 소프트웨어 개발, 사이버 보안, 클라우드 컴퓨팅 등 다양한 분야에서 폭넓게 집필해 왔으며, 복잡한 기술 개념을 명확하고 간결하게 설명하는 능력으로 동료들에게 폭넓은 인정을 받고 있습니다.