커맨드라인 키보드 기법

커맨드라인의 목표 중 하나는 손을 많이 움직이지 않고도 다양한 일을 하게끔 하는 것이다.

마우스를 덜 사용하거나 키보드 내에서도 타이핑을 원활하게끔 하고 싶은 것인데, 이를 위한 기능들이 존재한다(해피해킹).

커서 이동이나 텍스트를 수정하는 등의 기능들이 ctrl 과 alt 등을 활용한 명령어로 구성되어 있기 때문에 익숙해지면 작업 능률이 향상된다.


커맨드라인 편집

우분투의 기본 쉘인 bash는 Readline이라는 라이브러리를 사용한다.

화살표 키로 명령어를 왔다갔다 하는 것 역시 이 Readline 의 일부인데, 이외에도 다른 다양한 명령어들이 존재한다.

CTRL 을 사용할 경우는 주로 한 글자를 다루고, ALT 의 경우는 한 단어를 다룬다.

ALT 키를 누른 상태에서의 명령어 같은 경우는, ESC 키를 눌렀다 뗌을 통해 같은 역할을 수행할 수도 있다.

아래는 키보드로 커서를 이동시킬 수 있는 명령어들이다.

실행
ctrl + a줄의 맨 앞으로 이동 (HOME)
ctrl + e줄의 맨 끝으로 이동 (END)
ctrl + f다음 칸으로 이동 (오른쪽 화살표)
ctrl + b이전 칸으로 이동 (왼쪽 화살표)
alt + f다음 단어로 이동
alt + b이전 단어로 이동
ctrl + l화면을 지우지만 (clear 명령어), 텍스트는 남아 있음


텍스트 편집

Readline 은 텍스트를 잘라내는 Killing 과, 버퍼에서 붙여넣는 Yanking 을 지원한다.

텍스트를 잘라낼 경우, 우리가 아는 클립보드의 개념인 kill-ring 이라는 버퍼에 저장해 놓는다.

키 실행 
ctrl + d현재 위치의 글자 하나 지우기
ctrl + t현재 위치의 글자와 앞 글자와 위치 바꾸기
alt + t현재 위치의 단어와 앞 단어와 위치 바꾸기
alt + l현재 위치부터 현재 단어의 끝까지 모두 소문자로 바꾸기
alt + u현재 위치부터 현재 단어의 끝까지 모두 대문자로 바꾸기
ctrl + k현재 위치부터 줄의 끝까지의 텍스트를 잘라내기
ctrl + u현재 위치부터 줄의 맨 앞까지 텍스트를 잘라내기
alt + d현재 위치부터 현재 단어의 끝까지 텍스트를 잘라내기
alt + backspace현재 위치부터 현재 단어의 맨 앞까지 텍스트를 잘라내기
ctrl + ykill-ring 버퍼에 있는 잘라낸 텍스트를 현재 위치에 붙여넣기


자동 완성

사실상 가장 편하게 자주 쓰는 기능들 중 하나로 자동 완성 기능이 있다.

파일이나 디렉토리 명을 다 치기 귀찮을 때, 앞의 몇 단어를 치고 탭 키를 눌러줌으로써 디렉토리에서 찾아 자동으로 완성시켜준다.

다만 같은 단어로 시작하는 파일명이 여러개 있을 때는 시스템 알림 소리를 내보내고, 탭 키를 두번 누를 경우 그 여러개의 파일들을 임시로 stdout 에 리스트업 하여 보여준다.

경로명 뿐만 아니라 시스템 변수명들이나 명령어, 호스트명들도 자동 완성을 해준다.

배쉬의 최신 버전은 사용자가 쉘 스크립트에 규칙을 추가해서 사용하게 하는 programmable 자동 완성 기능을 지원하는데, 모든 배포판에서 기본 지원하는 것은 아니기 때문에 찾아서 따로 세팅해주어야 한다.