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


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.