어떻게하면 Bash에서 편집 된 히스토리 라인을 리셋 할 수 있습니까?


6

Bash에서는 위 (및 아래) 화살표를 눌러 기록을 탐색 할 수 있습니다. 그런 다음 명령을 실행하기 전에 수정할 수 있습니다. 때로는 명령을 잘못 수정하여 원래의 기록으로 재설정하려고합니다. 이것을 할 수있는 방법이 있습니까?

나는 빈 줄을 실행하고 역사를 다시 훑어 보았지만, 관련 줄은 편집 된 채로 남아있다.


거의 중복 된 수퍼 유저 /questions/302230/... , 나는 결코 그들을 저장하지 않고 명령을 원상대로 되 돌리는 것에 관심이있다.
Sparhawk

난 항상 이걸 잊고있어. 그 두 줄짜리 이맥스 키보드 매핑.
Lambart

@ Lambart 나는 동의한다. 나는 이것이 나를 위해 매우 유용한 명령이라고 느낀다. 그러나 나는 결코 그것을 암기에 성공하지 못했다!
Sparhawk

답변:


6

실행 취소는 C-x C-u (또는 C-_를 입력해야 할 수도 있음)입니다.


1
이것은 다소 효과적입니다. Ctrl + x 그때 Ctrl + u; 또는 Ctrl + Shift + -; 또는 Ctrl + / 명령을 편집 한 직후 모두 작동합니다. 또는 이전에 편집 한 행으로 돌아가서 (다른 명령을 실행 한 후) "실행 취소"할 수 있습니다. 하나 편집 할 경우 후속 명령을 실행하고 편집 된 명령을 "실행 취소"한 다음 명령 실행 기록을 다시 탐색하면 편집 명령이 실행 취소 전 상태로 되돌아 가고 이제는 실행 취소가 수행되지 않습니다.
Sparhawk

1

bash 히스토리를 담고있는 파일은 "~ / .bash_history"이다. 적어도 우분투에서는 다른 풍미에서는 다를 수있다. 그냥 좋아하는 텍스트 편집기로여십시오. 각 사용자는 자신의 .bash_history 파일을 가지고 있어야합니다. 앞의 "." 숨겨진 파일이라는 것을 의미하므로 -a와 함께 사용하지 않는 한 파일 브라우저 나 ls 명령에 나타나지 않습니다.


아마 나는 모호했다. 이것이 역사 파일의 위치라는 것을 알고 있지만 원래 명령을 직접 결정할 수있는 빠르고 쉬운 방법이 있는지 궁금합니다. 예 : 두 번째 마지막 명령을 수정하고 편집하지 않은 상태에서 다시 실행하고 싶었습니다.
Sparhawk

@Sparhawk : 음, 아직 거기에 있으며, 지금은 3 번째로 최근의 명령입니다.
ckhan

예,하지만 다른 명령을 먼저 실행해야 다시 표시됩니다. 널 (null) 명령 : 충분하지만 공백 행 (Sparhawk에서 시도한대로)은 유효하지 않습니다.
Uwe

나를 위해, : 편집 된 명령을 다시 설정하지 않았습니다. 명시 적으로 명확히하기 위해 입력을 시도했습니다. echo foo, enter. up, backspace, down, :, enter. up, up, 나는 아직도 보았다. echo fo, 아니라 echo foo.
Sparhawk

1
그것은 훨씬 더 복잡합니다. Bash는 수정 된 버전으로 돌아 가면 원래 실행 된 명령을 복원하는 것으로 보입니다. up, 완전히 지우고 (C-u), enter, 그리고 다시 역사 속으로 돌아가십시오. 왜 나 한테 묻지 마.
Uwe

1

이 바인딩은 실행되지 않은 기록 변경이 원본 덮어 쓰기를 방지합니다.

bind 'set revert-all-at-newline on'

예:

  1. 실행 ls
  2. 위쪽 화살표 누르기
  3. 더하다 -Al 줄에
  4. 아래쪽 화살표 누르기
  5. Return 키를 누릅니다 (변경 취소 시도).

이 바인딩이 없다면 :
ls 역사에서 대체 될 ls -Al비록 결코 실행되지 않았지만.

이 바인딩 :
실행되지 않은 ls -Al 사라지다. ls 유적.

분명히 이것은 실행되지 않은 기록 변경이 (zsh의 기본 동작처럼) 저장됩니다. 원본 만 복원하려는 경우 때때로 , 당신은 다른 대답들 중 하나와 함께 가야 할 것입니다.


알아 둘만 한. 방금 거의 속는 질문이 있다는 것을 깨달았습니다. 다른 답변 중 하나를 받아들이겠습니다. 내 질문에 더 구체적으로 적합합니다 (저장하지 않는 것과 반대되는 것으로 되돌아 감).
Sparhawk

이 대답은 현재 활성화 된 터미널 만 참조한다는 메모를 추가하려고합니다. 즉, 두 설정 중 하나라도 설정에 영향을주지 않습니다. ~/.bash_history 또는 다른 터미널.
Sparhawk
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.