위쪽 화살표를 사용하여 이전 명령 실행


11

이전 명령을 실행하려면 위쪽 화살표를 사용해야하는 설정은 무엇입니까? Mac에서는 위쪽 화살표를 사용하여 방금 실행 한 명령을 다시 실행할 수 있지만 bash 셸에서는 작동하지 않는 것 같습니다.

8.04를 사용합니다 (일부 컴파일러 버전 문제로 인해 최신 배포판을 사용할 수 없습니다).

추가

Mac에서 VMWare Fusion을 사용하여 새로 설치 했으므로 아무 것도 변경하지 않았습니다.


3
기본 구성에서 위쪽 화살표는 완벽하게 작동합니다. 수정 한 것이 있습니까?
enzotib

@enzotib이 말했듯이 bash는 기본적 으로이 작업을 수행하지만 일부는 예를 들어 sh는 그렇지 않습니다!
Rory Alsop

답변:


10

히스토리가 사용 가능한지 확인하십시오. 다음을 실행하여 현재 상태를 확인할 수 있습니다.

set -o

출력에는 다음 내용이 포함되어야합니다 ( history on행 참고 ).

histexpand      on
history         on
ignoreeof       off

이것이 활성화되어 있지 않으면을 실행해야합니다 set -o history. 이 변경 사항을 영구적으로 유지하려면 다음을 추가해야합니다 ~/.bashrc.

set -o history

이전 명령을 실행하려면 다음 명령도 실행할 수 있습니다.

!!

에서 배쉬 매뉴얼 페이지 :

Event Designators
   An event designator is a reference to a command line entry in the history list.

   !      Start a history substitution, except when followed by a blank, newline,
          carriage return, = or ( (when the extglob shell option  is
          enabled using the shopt builtin).
   !n     Refer to command line n.
   !-n    Refer to the current command line minus n.
   !!     Refer to the previous command.  This is a synonym for `!-1'.
   !string
          Refer to the most recent command starting with string.
   !?string[?]
          Refer to the most recent command containing string.  The trailing ? 
          may be omitted if string is followed immediately by a newline.
   ^string1^string2^
          Quick  substitution.  Repeat the last command, replacing string1 with
          string2.  Equivalent to ``!!:s/string1/string2/'' (see Modifiers below).
   !#     The entire command line typed so far.

Bash를 사용하는 경우 히스토리를 탐색 할 때 기본 바로 가기를 사용할 수 있습니다.

  • Ctrl+ P: 이전 명령
  • Ctrl+ N: 다음 명령

    히스토리 이전 히스토리 조작 명령 (Cp) 목록으로 돌아가서 히스토리 목록에서 이전 명령을 가져옵니다. next-history (Cn) 목록에서 앞으로 이동하여 내역 목록에서 다음 명령을 가져옵니다.


1
설정이 올바른지 확인했지만 위쪽 화살표 키가 작동하지 않습니다. 그러나 동일한 결과를 얻기 위해 Ctrl-P / N을 사용할 수 있습니다. 감사.
prosseek

@prosseek이 경우 /etc/inputrc또는 ~/.inputrc? 를 변경 했습니까? 또한 사용중인 터미널에서 위쪽 및 아래쪽 화살표가 어떤 이스케이프 시퀀스를 생성합니까? 확인하려면을 실행 cat한 다음 빈 줄에서 위쪽 화살표와 아래쪽 화살표를 누른 다음 Ctrl + C를 눌러 cat을 종료하십시오. 여기서 생산합니다 ^[[A^[[B.
geirha

@geirha : ~ / .inputrc 파일이 없으며 / etc / inputrc를 변경하지 않았습니다. 그리고 탈출 시퀀스의 경우 화면에 아무것도 보이지 않습니다.
prosseek

@prosseek 그러면 화살표 키가 터미널에 전혀 도달하지 않는 것처럼 들립니다. 아마도 VMWare 인터페이스가 그것들을 걸러내는 것일 수도 있습니다.
geirha

14

실제로 bash를 사용하고 있는지 확인하십시오. 일반적인 문제는 사용자 또는 그룹 (GUI) 응용 프로그램 useradd대신 adduser또는 새 사용자를 만드는 것입니다 . 전자의 경우 기본 셸 세트는 /bin/sh입니다. 실행 chsh( 채널 플랜지 엘) 확인이로 설정되어 확인합니다 /bin/bash.


1

터미널에서 다음을 입력하십시오.

gedit  ~/.inputrc

그런 다음 붙여 넣기를 복사하여 저장하십시오.

"\e[A": history-search-backward
"\e[B": history-search-forward
"\e[C": forward-char
"\e[D": backward-char

이제 터미널에서 증분 검색을 수행 할 수 있습니다. 이전 명령을 찾으려면 처음 두세 글자를 입력하고 위쪽 화살표를 사용하면 빠르게 이동할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.