답변:
히스토리 대체 후에 실행되지 않고 명령이 인쇄되도록 요청하려면 :p
수정자를 추가하십시오 ( 예 :) !42:p
. 결과 명령도 기록에 입력되므로을 눌러 Up편집 할 수 있습니다 .
histverify
옵션 세트 ( shopt -s histverify
) 가있는 경우 항상 히스토리 대체 결과를 편집 할 수 있습니다.
fc
내장은 역사 확장 (아무 단어 지정자)에 제한된 액세스를 제공하고, 외부 편집기에서 이전 명령을 편집 할 수 있습니다.
로 !prefix
시작하는 마지막 명령 을 참조 prefix
하고 !?substring
로 시작하는 마지막 명령을 참조하는 데 사용할 수 있습니다 substring
. 찾고있는 것을 알면 시간을 많이 절약 할 수 있습니다 history | less
.
이전 기록을 검색하는 또 다른 방법은 증분 검색입니다. Ctrl+를 누르고 R원하는 문자열을 입력하십시오. 보도 Ctrl+는 R지금까지 검색 문자열의 이전 선두로부터로 이동합니다 Ctrl+ S당신이 너무 멀리 갔다 한 경우. 이외의 대부분의 키 Ctrl+ R, Ctrl+ S, Backspace및 일반 문자는 증분 검색을 종료하고 자신의 일반적인 효과 (당신이 도달 한 줄에 커서를 이동합니다 예를 들어 화살표 키가 Enter명령을 실행 참조).
stty -ixon
Ctrl-s가 작동하기 전에 수행해야합니다 .
Ctrl-s
은 중요합니다. 그렇지 않으면 내가 한 것처럼 붙어 있습니다.
또 다른 작은 것 : Alt+#
현재 줄을 주석 처리하여 기록 버퍼로 옮깁니다.
따라서 명령 줄을 조립할 때 파일을 찾기 위해 임시 명령을 실행해야 할 경우 Alt+를 누르고 #다른 명령을 실행하고 기록에서 위로 이동하여 주석 처리를 제거하고 진행하십시오.
Esc
, #
작품
기본적으로 history-expand-line
바인딩 된 명령을 살펴보십시오 Alt+^
. 그것은 당신이 편집 할 수있는 줄을 제자리로 확장합니다.
Ctrl+r
당신을 사용하여 기록을 검색 할 수 있습니다 :
pbm@tauri ~ $
(reverse-i-search)`xran': xrandr -o normal
찾은 모든 명령을 편집 할 수 있습니다 ...
나는 당신이 필요로 정확히 찾을 수 있다고 생각 : 실행 shopt -s histverify
하고 다음 번에 사용할 때 !n
명령을 실행 만 라인을 명령 두지됩니다 ...
!n:p
작동 하지 않습니까?
나는 종종 이것을 원했다. csh (및 tcsh)를 사용할 때 관용구가있었습니다.
!:88*:p
이 관용구는 현재 명령 행에서 입력하는 지점 (일반적으로 끝 부분)에서 이전 명령의 "마지막 단어를 통해 단어 88"을 삽입합니다. csh에서 이러한 표현식이 단어를 생성하지 않는 것은 오류가 아닙니다. 즉, 단어 88 또는 그 뒤에 나오는 단어가 필요하지 않습니다. 단어 88이 없으면 입력중인 명령의 끝에 단어가 추가되지 않은 다음 결과 명령 줄을 실행하지 않고 기록으로 푸시합니다.
아시다시피,
*! (!! 및! -1과 같은)이 이전 명령입니다.
* : 88은 단어 88 (첫 번째 단어-일반적으로 명령-0)이며 csh에는 그러한 단어가 필요하지만 ...
* : 88 *는 단어 88에서 시작하는 모든 단어이며 csh는 단어가 존재하지 않아도된다.
* : p는 인쇄를 의미하지만 명령 행을 실행하지는 않습니다.
: p를 사용하거나 사용하지 않고 명령 행이 명령 히스토리에 추가됩니다.
"왜 88?" 궁금해하실 겁니다? *와 같은 키이므로 필요합니다. 긴 명령이 있다면 아마도! : 888 * : p가 필요할 것입니다. 죄송합니다 .bash AFAIK에서는 작동하지 않습니다. 배쉬는 단지
bash: :88*: bad word specifier
재미있는 사실 : 일반적으로 당신의 명령이 우선 일 필요는 없습니다.
> /tmp/foo echo My command is word 3
bash 및 csh에서 유효합니다.
나는 보통 Ctrl+ r를 사용 하여 검색 한 다음 Ctrl+ e를 사용하여 줄 끝으로 이동합니다.