Mac OS X 터미널에서 bash에서 아래쪽 화살표 기록을 찾는 방법은 무엇입니까?


2

내가 사용한 거의 모든 최신 명령 줄 환경에서 화살표를 누르면 기록의 몇 가지 명령으로 돌아가서 이전 명령을 다시 실행할 수 있습니다. 그러나 내가 사용한 일부 명령 줄 환경에서는 다음 명령 프롬프트에서 아래쪽 화살표를 눌러 이전 명령이 내역에 나타난 곳에서 내역을 찾아 볼 수도 있습니다.

예를 들어 다음과 같이 가정하십시오.

$ vi mysource.c  
$ make  
$ make test  

그런 다음 테스트가 실패한다고 가정하면 다시이 단계를 통해 가고 싶은, 그래서 당신은 위쪽 화살표 명중 위로 얻기 위해 3 번 vi mysource.c, 그리고 공격 return이 실행합니다. 그런 다음 그 다음 프롬프트에서 아래쪽 화살표를 한 번 눌러 도달 할 수 있기를 원합니다 make. 그리고 그 후 다음 프롬프트에서에 도달하려면 아래쪽 화살표를 한 번 누르십시오 make test.

Mac OS X의 기본 bash설정 또는 기본 Terminal.app 설정에 해당하는지 또는 무엇인지 모르겠지만, "새 기록에서 아래쪽 화살표를 눌러 기록을 사용한 마지막 위치에서 기록을 찾아보십시오" 기능은 기본적으로 활성화되어 있지 않습니다.

bash(1)매뉴얼 페이지를 탐색 하고 다음을 발견했습니다.

       forward-search-history (C-s)

... ^S아무것도하지 않은 것 같습니다. 터미널이 구식 XOFF또는 다른 것으로 삼키고 있는지 확실 하지 않습니다 (단말기 출력을 일시 중지하지는 않았지만).

다른 참고 사항 :

  • Mac OS X Snow Leopard 10.6.6에 있습니다.
  • 나는 쉘 역사를 다루는 다른 많은 재미있는 방법을 이미 알고 있습니다. 지금 내가 노력하고있는 것은이 하나의 특별한 일입니다.
  • 올바른 방향의 포인터가 도움이 되더라도 bashTerminal.app 의 10.6.x에서 작동하는 것으로 알려진 솔루션 은 매우 유용합니다.

"내가 사용한 거의 모든 최신 명령 줄 환경에서"다른 플랫폼에 bash가 포함되어 있습니까? 즉, bash가 이런 식으로 동작 할 수 있다는 것을 알고 있습니까? 내가 본 적이 없기 때문에. 아래쪽 화살표 (및 ^ s)는 위쪽 화살표 (또는 ^ r)로 기록을 탐색하기 시작하면 작동하지만 bash가 이전에 실행 된 기록 명령을 추적하도록 옵션을 보는 것을 기억하지 않습니다. 명령 줄.
Chris Page

1
@Chris 참고로 거의 모두 위쪽 화살표 이력이 있지만 일부 는 내가 찾고있는 아래쪽 화살표 이력 형식을 가지고 있습니다. 내가 기억하는 것처럼 Windows 명령 프롬프트에는이 기능이 있으며 Windows의 tclsh에는이 기능이 있다고 확신합니다. 전통적인 유닉스 쉘이 어디에서나 이것을하는 것을 보았는지 확실하지 않지만, 아마도 어디에서나 Windows / cygwin에서 bash를 볼 것입니다. tclsh가 Windows에서는이 기능을 수행하지만 Mac OS X에서는 그렇지 않기 때문에이 기능이 쉘 자체의 일부인지 또는 터미널 에뮬레이터 (또는 cmd.exe)의 일부인지는 잘
모르겠습니다.

답변:


1

^S의 반대를 수행 ^R(작업을 완료 한 후에 ^R). 동작 stty -ixon을 비활성화 하기 위해 수행해야 할 수도 XOFF있습니다.

찾고있는 것에 가장 가까운 것은 ^O(readline operate-and-get-next)에서 제공합니다 . 위쪽 화살표를 눌러 이전 명령을 검색하고 ^O대신을 누르십시오 Enter. 명령이 실행됩니다. 프롬프트가 다시 발행되면 히스토리의 다음 명령이 명령 행에 놓입니다. Enter 키 또는 ^O이 시점에서 화살표를 사용할 수 있습니다 .


bash의 bind -p내장 기능 C-o이에 바인딩 되어 있다고 말 하더라도 이것은 전혀 효과가 없습니다 operate-and-get-next. 심지어 먼 과거의 어느 시점에서 터미널 또는 bash 환경을 망쳐 놓지 않았는지 확인하기 위해 Guest 계정에서 시도했습니다.
Spiff

2
신경 쓰지 마라, 나는 ^Otty가 "discard"캐릭터로 먹었다는 것을 알았다 . stty discard "^-"고쳤다. 나는 다음의 기능을 시험해 보았고, 내가 찾고있는 것과 충분히 가깝지 않다고 결정했습니다. 검색은 계속됩니다 ...
Spiff

1

stty 버전에 따라 "stty flush undef"가 필요할 수 있습니다. (현재 OS X stty 매뉴얼 페이지에는 "flush"가 있지만 stty -a 출력에는 여전히 "discard"값이 표시됩니다.)

다음 명령을 원할 경우 ^ o를 사용하여 기록에서 명령을 실행하십시오. 원하는 경우 ^ o를 반복하십시오. 결국 원하지 않으면 ^ p, ^ n, ^ s 등을 사용하여 해당 지점에서 히스토리를 이동하거나 ^ u를 사용하여 명령 행을 지우십시오.

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