실행하지 않고 마지막 명령을 얻는 방법이 기억나지 않습니다.
!1255 명령에 액세스하고 위쪽 화살표 키를 누를 때 명령을 수정하고 싶다고 가정해 보겠습니다. 그렇다면 명령줄에 표시되지만 실행되지는 않고 위쪽 화살표 키를 통해 액세스할 수 있도록 이 명령을 호출하는 비결은 무엇입니까?
에코를 추가하려고 시도했지만 명령 앞에 에코가 있어서 올바르게 수행하는 방법을 기억할 수 없습니다.
답변1
!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'
그러나 나는 내 기록이 (의도적으로) 매우 크고 나중에 터미널에서 페이지를 뒤로 스크롤하는 데 영향을 미치는 너무 많은 출력을 얻기 때문에 자주 사용하지 않습니다.
답변2
터미널에서 Ctrl+를 누르면 R(주석에서 @gnp가 언급한 것처럼 emacs의 역방향 증분 검색 키 바인딩) 특정 명령에 대한 기록을 검색할 수 있습니다. 명령이 표시되며 실행 전에 편집할 수 있습니다. 다음과 같은 내용이 표시됩니다.
답변3
Ctl+alt+e
쉘 확장은 bash 에서 발생하므로 입력한 !1255
후 누르면 현재 행이 기록 항목 1255의 내용으로 대체됩니다.
답변4
목록을 지정할 때 실행(-l) 대신 fc 명령을 사용하고 싶습니다.
fc -ln -1