BASH를 사용하여 이전 명령으로 "스크롤"한 후... 기록에서 다음 명령으로 어떻게 진행합니까?

BASH를 사용하여 이전 명령으로 "스크롤"한 후... 기록에서 다음 명령으로 어떻게 진행합니까?

죄송합니다. 이 제목은 제가 디자인한 제목 중 가장 우아하지 않습니다.

하지만 많은 사람들이 이에 대해 궁금해할 것이라고 생각하며 제 질문은 사기일 수도 있습니다. 아직 찾지 못했다고 가정하겠습니다.

"위로 스크롤"이라고 말하면 키보드의 "위쪽 화살표" 키를 사용한다는 뜻입니다. 이 키를 누르면 가장 최근 명령부터 시작하여 기록이 위로 스크롤됩니다.

따라서 나중에 30개 정도의 명령을 찾아서 실행합니다. 그런 다음 원래 뒤에 나온 명령을 실행하고 싶습니다. 이 작업을 수행하는 빠른 방법이 있습니까? 아니면 BASH에 능숙한 사람들은 이를 어떻게 수행합니까?

답변1

Ctrlorun 명령 대신 +를 사용 Enter하면 기록에서 명령을 실행한 다음 bash 기록의 맨 앞으로 돌아가는 대신 다음 명령을 대기열에 추가합니다.

답변2

Jon Reinhold의 답변은 훌륭하지만 보다 강력한 솔루션을 제안하고 싶습니다. Jon의 답변에 있는 문제에 대해서도 댓글을 달았지만 직접 댓글을 달기에는 평판이 충분하지 않으므로 @Jon Reinhold, 이 글을 읽으시면 아래에 제 댓글을 게시해 주세요.

fcBash에는 bash 기록 목록의 줄 번호를 인수로 사용하는 명령이 포함되어 있습니다 . 그런 다음 이 줄을 텍스트로 사용하여 기본 편집기를 엽니다. 이 시점에서 이러한 행을 편집하도록 선택할 수 있습니다. 그런 다음 편집기를 종료하면 bash가 다음 줄을 실행합니다!

편집할 수 있는 예는 "; read -p "next ..."와 같이 마지막 줄을 제외한 모든 줄에 추가하는 것입니다. 이렇게 하면 bash가 각 줄을 실행하고 계속하기 전에 메시지를 표시합니다.

Jon Reinhold의 의견: 훌륭한 답변입니다. 그러나 사용자가 bash 변수 HISTControl을 include로 설정하면 erasedups실행 후 C-o사용자는 혼란스러울 것입니다. 왜냐하면 기록에서 예상되는 다음 명령 대신 다음 명령이 표시되기 때문입니다. 표시됩니다. 이는 bash가 명령이 실행된 원래 인스턴스를 삭제하므로 모든 후속 명령이 한 줄 위로 이동하여 기록 목록에서 더 낮은 인덱스 번호로 이동되기 때문입니다.

답변3

원하는 동작을 달성하는 또 다른 방법은 bash readline 단축키(그 중 하나라고 생각합니다 CTRL) o와 bash 기록 검색에 익숙해지는 것입니다.

과거 검색

CTRL- rbash 명령 기록 검색으로 이동하여 검색하려는 명령을 입력하기 시작하면 bash가 자동으로 해당 명령을 완성합니다. 자동완성 기능 정말 좋네요. 입력 라인에 있을 때 실행하려는 ENTER명령을 실행할 수 있습니다.또는CTRL-를 눌러 e커서를 명령줄 끝으로 이동하고 기록 검색 모드를 종료합니다.

CTRL- e이 시점에서 멋진 점은 히스토리 버퍼가 명령의 컨텍스트를 기반으로 설정된다는 것입니다. 이제 다음 및 이전 명령은 기록 검색에서 찾은 줄 전후에 실행된 명령입니다. 위쪽 또는 아래쪽 화살표를 눌러 다음 명령을 받을 수 있습니다.

기록 검색은 매우 강력하며 위쪽 화살표를 사용하여 명령으로 돌아가는 것을 방지할 수 있는 좋은 방법입니다. 빠른 기록 검색 저장위치Jon이 위에서 지적한 대로 수동으로 기록을 검색하면 계속할 수 있습니다 CTRL.o

Readline 단축키

전반적인 bash-fu를 향상시키고 싶다면 화살표 키에 대한 readline 단축키를 사용해 보는 것이 좋습니다. 더 편리하고 타이핑 속도를 향상시킬 수 있지만 물론 YMMV입니다. 다음은 몇 가지 더 있습니다:

  1. CTRL- n다음 명령(아래쪽 화살표와 동일)
  2. CTRL- p이전 명령의 경우(위쪽 화살표와 동일)
  3. CTRL- b한 문자 뒤로 이동(왼쪽 화살표와 동일)
  4. CTRL- f한 문자 앞으로 이동(오른쪽 화살표와 동일)

내 생각에는 이러한 readline 단축키(- 줄 CTRL시작 및 -줄 끝 과 함께 )가 명령줄의 속도와 효율성을 향상시킬 것입니다.aCTRLe

관련 정보