Skip to main content

16. Interactive Shell

다음은 UNIX 또는 Linux 셸을 대화형으로 사용하기 위한 몇 가지 간단한 힌트입니다. 개인적으로 대부분의 대화형 셸은 거의 모든 *nix 버전에서 사용할 수 있으며 로그인 셸로 사용하기에 매우 편리하기 때문에 bash 셸을 추천합니다. 그러나 루트 셸은 bash 또는 본 셸을 가리키든 항상 /bin/sh여야 합니다.

bash

bash에는 위쪽 및 아래쪽 화살표 키로 이전 명령의 기록을 스크롤할 수 있는 매우 편리한 기록 검색 도구가 있습니다. 더 유용하게는 Ctrl+r을 누르면 명령줄의 어떤 부분과도 일치하는 역방향 검색이 수행됩니다. ESC를 누르면 선택한 명령이 현재 셸에 붙여넣어져 필요에 따라 편집할 수 있습니다.

이전에 실행한 명령을 반복하고 싶은데 어떤 문자로 시작했는지 알고 있다면 이렇게 하면 됩니다:

bash$ ls /tmp
(list of files in /tmp)
bash$ touch /tmp/foo
bash$ !l
ls /tmp
(list of files in /tmp, now including /tmp/foo)

화살표 키뿐만 아니라 PageUp 및 PageDn을 사용하여 명령줄의 시작과 끝으로 이동할 수 있습니다.

ksh

vi 또는 emacs 모드에서 히스토리 명령을 추가하여 ksh를 더 유용하게 사용할 수 있습니다. 이 작업을 수행하는 방법은 정확한 상황에 따라 여러 가지가 있습니다. set -o vi, ksh -o vi 또는 exec ksh -o vi(이맥스 모드를 선호하는 경우 "vi"를 "emacs"로 대체할 수 있습니다).

다른 대화형 셸에서 ksh 세션을 시작하려면 다음과 같이 ksh를 호출하면 됩니다:

csh% # oh no, it's csh!
csh% ksh
ksh$ # phew, that's better ksh$ # do some stuff under ksh
ksh$ # then leave it back at the csh prompt: ksh$ exit
csh%

그러면 새 ksh 세션이 시작되며, 이 세션에서 종료한 후 이전 셸로 돌아갈 수 있습니다. 또는 실행 명령을 사용하여 csh(또는 다른 셸)를 ksh 셸로 바꿀 수도 있습니다:

csh% # oh no, it's csh!
csh% exec ksh
ksh$ # do some stuff under ksh ksh$ exit

login:

여기서 차이점은 csh 세션을 되돌릴 수 없다는 것입니다.

좋은 점은 기록입니다:

csh% ksh
ksh$ set -o vi
ksh$ # You can now edit the history with vi-like commands,
  # and use ESC-k to access the history.

ESC를 누른 다음 k를 누르면 명령 기록을 거꾸로 스크롤할 수 있습니다. 다음과 같이 vi 명령 모드 및 입력 모드 명령을 사용하여 명령을 편집할 수 있습니다:

ksh$ touch foo
  ESC-k (enter vi mode, brings up the previous command) 
  w (skip to the next word, to go from "touch" to "foo" 
  cw (change word) bar (change "foo" to "bar")
ksh$ touch bar