명령을 변경하기 위해 실행하지 않고 이전 명령을 호출하는 방법은 무엇입니까? 때! 1255 명령에

마지막 명령을 실행하지 않고 얻을 수있는 트릭을 기억할 수 없습니다.

위쪽 화살표 키를 눌렀을 때! 1255 명령에 액세스하고 명령을 수정할 수 있기를 원합니다. 명령을 호출하는 트릭은 무엇입니까? 명령 행에 표시되지만 실행되지 않고 나중에 화살표 키를 통해 액세스 할 수 있습니까?

나는 에코를 넣어 보았지만 명령 전에 에코가 있는데 올바르게 수행하는 방법을 기억하지 못합니다.



답변

!1255:p

이것을 할 것인가

!히스토리 리콜
1255은 행 번호가
:p인쇄되지만 실행되지는 않습니다.

그런 다음 위쪽 화살표를 사용하여 이전 (실행되지 않은) 명령을 다시 가져 와서 필요에 따라 변경할 수 있습니다.

나는 종종 이것을 hg가장 좋아하는 별명 인 ( “History Grep”) 와 결합합니다 .

$ alias hg  # Maybe use hgr instead if you are a Mercurial CLI user.
alias hg='history | tail -200 | grep -i'

대소 문자와 상관없이 최근 히스토리 라인에서 텍스트를 검색하며 다음과 같이 사용됩니다.

특정 파일을 편집하기 위해 최근 vi 명령을 검색하려는 경우 그 중 하나를 재사용하여 동일한 파일을 편집하지만 파일 확장자가 다른 파일을 편집하려고합니다.

$ hg variables
 6153  vi Variables/user-extensions.js
 6176  vi Variables/user-extensions.js
 6178  vi Variables/user-extensions.js
 6190  vi Variables/user-extensions.js
 6230  hg variables
$ # Notice the difference in case with V and v is ignored
$ !6190:p
vi Variables/user-extensions.js
$ ["up-arrow"]
$ vi Variables/user-extensions.[now change .js to .html]

또한 hga전체 히스토리를 검색하도록 ( “History Grep All”)을 정의합니다 .

$ alias hga
alias hga='history | grep -i'

내 역사가 (의도적으로) 매우 커서 출력이 너무 많아 나중에 터미널의 페이지를 통해 스크롤하는 데 영향을 미치기 때문에 많이 사용하지 않습니다.


답변

명중 Ctrl+를 R터미널에서 (@gnp이 코멘트에 손짓으로 바인딩 이맥스 ‘역 증분 검색 키를 어느 것은) 특정 명령에 대한 histrory에서 검색 할 수 있습니다. 명령이 표시되고 실행 전에 편집 할 수 있습니다. 다음과 같은 것을 보게 될 것입니다.

출처


답변

fc명령은 당신이 원하는 것을

fc -l <number> 해당 번호 주위의 명령 기록을 표시합니다

fc <number>명령 줄 항목을 열거 vim나 (또는 ​​기본 편집기가 생각하는대로) 편집 할 수 :wq있으며 위쪽 화살표로 사용할 수 있습니다.


답변

bash에서 Ctl+alt+e쉘 확장을 수행 하므로이 !1255조합 을 입력 한 다음 누르면 현재 행을 히스토리 항목 1255의 내용으로 대체합니다


답변

실행 (-l) 대신 list를 지정하는 동안 fc 명령을 사용하려고합니다.

fc -ln -1