본문 바로가기
C.W.K.
Stream
Lesson 09 of 10 · published

키보드 단축키: Readline / Zsh

~15 min · readline, shortcuts, emacs-keys, vi-mode

Level 0창 구경꾼
0 XP0/95 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

프롬프트 한 줄도 편집기야

셸은 입력한 명령을 곧바로 실행하기 전에 현재 줄을 편집할 수 있게 해. bash는 주로 GNU Readline을 사용하고 zsh는 ZLE라는 줄 편집기를 제공하지만, 기본 Emacs식 키 조합은 많이 겹쳐. 몇 개만 익혀도 긴 경로와 옵션을 화살표 키로 한 글자씩 고치는 시간을 크게 줄일 수 있어.

커서를 빠르게 옮겨

  • Ctrl+A: 줄 맨 앞으로 이동해.
  • Ctrl+E: 줄 맨 뒤로 이동해.
  • Alt+F / Alt+B: 단어 단위로 앞뒤 이동해.
  • Ctrl+F / Ctrl+B: 글자 단위로 앞뒤 이동해.

터미널 앱이 Option 키를 특수 문자 입력으로 쓰면 Alt 조합이 전달되지 않을 수 있어. 그때는 터미널의 키 전송 설정을 확인해.

삭제한 텍스트도 다시 쓸 수 있어

  • Ctrl+W: 커서 앞의 단어를 지워.
  • Ctrl+U: 커서 앞부분을 줄 시작까지 지워.
  • Ctrl+K: 커서 뒤를 줄 끝까지 지워.
  • Ctrl+Y: 방금 지운 텍스트를 붙여 넣어.
  • Ctrl+T: 커서 주변의 두 글자를 바꿔.

지우기 조합은 삭제 내용을 kill ring에 보관하므로 같은 옵션을 다른 위치로 옮길 때도 쓸 수 있어.

명령 기록을 검색해 재사용해

Ctrl+R을 누르고 일부 문자열을 입력하면 이전 명령을 역방향으로 찾아. 다시 누르면 더 오래된 일치 항목으로 이동하고, 찾은 줄은 실행 전에 수정할 수 있어. !!은 직전 명령 전체, !$는 직전 명령의 마지막 인자를 확장하지만 실행될 내용을 확인하지 않고 쓰면 엉뚱한 대상에 명령을 반복할 수 있어. 중요한 변경 명령은 확장 결과를 먼저 눈으로 확인해.

프로세스 제어 키는 편집 키와 달라

  • Ctrl+C: 전경 프로세스에 인터럽트 신호를 보내.
  • Ctrl+Z: 전경 작업을 일시 중지해.
  • Ctrl+D: EOF를 보내며 빈 프롬프트에서는 셸을 종료할 수 있어.
  • Ctrl+L: 화면을 다시 그려.

Ctrl+S로 출력이 멈췄다면 XOFF 흐름 제어일 수 있고 Ctrl+Q로 다시 풀 수 있어. 편집 중인 줄과 실행 중인 프로세스 중 어느 쪽에 키가 전달되는지 구분해야 해.

vi 모드는 선택 사항이야

bash의 set -o vi나 zsh의 bindkey -v로 vi식 편집을 켤 수 있어. Normal 모드의 이동과 삭제에 익숙하다면 긴 명령을 다루기 편하지만, 기본 키 조합과 모드 전환이 섞이면 오히려 혼란스러울 수 있어. 한 방식을 고른 뒤 자주 쓰는 조합을 실제 명령 한 줄에서 반복해 몸에 익혀.

Code

핵심 단축키 연습·bash
# 긴 명령을 입력한 뒤 다음 키를 연습
echo 'this is a long sample command for practice'
# Ctrl+A는 처음으로, Ctrl+E는 끝으로 이동
# Ctrl+W는 앞 단어를, Ctrl+U는 커서 앞 전체를 지움
# !!는 직전 명령을, sudo !!는 관리자 권한으로 다시 실행
히스토리 빠르게 뒤지기·bash
# Ctrl+R을 누르고 이전 명령의 일부 문자열 입력
# Ctrl+R을 다시 눌러 더 오래된 일치 항목으로 이동
# Enter는 실행, Esc 또는 Ctrl+G는 취소
# 명령 기록을 직접 grep으로 검색
history | grep ssh

External links

Exercise

긴 명령을 입력하되 실행하지 않은 상태에서 Ctrl+A, Ctrl+E, Ctrl+W, Ctrl+U, Ctrl+Y를 차례로 연습해. 명령 몇 개를 실행한 뒤 Ctrl+R로 기록을 검색하고, XON/XOFF가 필요 없다면 .zshrcstty -ixon을 추가한 뒤 Ctrl+S 때문에 출력이 멈추지 않는지도 확인해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.