it-swarm-ko.tech

history 명령을 실행하지 않고 명령 행에 넣습니다.

! n을 사용합니다. 여기서 (n)은 history | less를 통해 찾은 명령 프롬프트에서 실행하려는 기록 파일에서 줄을 실행하기위한 줄 번호입니다.

그러나 수동으로 수정하려는 명령 줄 기록 이벤트가 있습니다. 실제로 실행하지 않고 히스토리 이벤트 컨텐츠를 명령 행에 삽입하여 수정하고 Enter를 누르려면 어떻게해야합니까?

베스트,

59
Vass

히스토리 대체 후에 실행되지 않고 명령이 인쇄되도록 요청하려면 :p수정 자 를 추가하십시오 (예 : !42:p. 결과 명령도 기록에 입력되므로 Up 그것을 편집하십시오.

histverify옵션 세트 (shopt -s histverify)가있는 경우 항상 결과를 편집 할 수 있습니다 역사 대체.

fc builtin 은 히스토리 확장 (Word 지정자가 없음)에 대한 액세스를 제한하며 외부 편집기에서 이전 명령을 편집 할 수 있습니다.

!prefix를 사용하여 prefix로 시작하는 마지막 명령을 참조하고 !?substring를 사용하여 substring로 시작하는 마지막 명령을 참조 할 수 있습니다. 찾고있는 것을 알면 history | less보다 많은 시간을 절약 할 수 있습니다.

이전 기록을 검색하는 또 다른 방법은 증분 검색입니다. Ctrl+R 찾고있는 부분 문자열을 입력하십시오. 프레스 Ctrl+R 검색 문자열의 이전 항목으로 이동하여 Ctrl+S 당신이 너무 멀리 간다면. 이외의 대부분의 키 Ctrl+RCtrl+SBackspace 일반 문자는 증분 검색을 종료하고 일반적인 효과를 나타냅니다 (예 : 화살표 키를 사용하여 커서를 도달 한 줄로 이동) Enter 명령을 실행하십시오).

또 다른 작은 것 : Alt+#

현재 줄을 주석 처리하여 기록 버퍼로 옮깁니다.

따라서 명령 줄을 조립할 때 임시 명령을 실행해야 할 때 파일을 찾으면 방금 Alt+#, 다른 명령을 내리고, 역사에서 위로 올라가서 주석을 풀고 진행하십시오.

15
Rahul Patil

Enter 키를 누르기 전에 마술 공간을 사용하여 기록을 확장 할 수 있습니다. .inputrc에서 공간을 마술 공간에 매핑하십시오.

$if Bash
     Space: magic-space
$endif

이제 내역 내역 뒤에 공백을 입력 할 때마다 공백이 즉시 확장되므로 편집하고 싶을 때 편리합니다!

7
Cascabel

기본적으로 history-expand-line에 바인딩 된 Alt+^ 명령을 살펴보십시오. 그것은 당신이 편집 할 수있는 줄을 제자리로 확장합니다.

7
Alex Barrett

Ctrl+r 기록을 검색 할 수 있습니다.

[email protected] ~ $ 
(reverse-i-search)`xran': xrandr -o normal

찾은 모든 명령을 편집 할 수 있습니다 ...


필요한 것을 정확히 찾은 것 같습니다 : run shopt -s histverify 다음에 !n 명령이 실행되지 않고 명령 행에만 입력됩니다 ...

4
pbm

나는 종종 이것을 원했다. csh (및 tcsh)를 사용할 때 관용구가있었습니다.
!:88*:p

이 관용구는 현재 명령 행에서 입력하는 지점 (일반적으로 끝)에 이전 명령의 "Word 88에서 마지막 단어까지"를 삽입합니다. csh에서 이러한 표현식이 단어를 생성하지 않는 것은 오류가 아닙니다. 즉, 단어 88이 필요하지 않으며 그 뒤에 나오는 단어도 없습니다. Word 88이 없으면 입력중인 명령의 끝에 단어가 추가되지 않은 다음 결과 명령 줄을 실행하지 않고 기록으로 푸시합니다.

아시다시피
*! (!! 및! -1과 같은)이 이전 명령입니다.
* : 88은 Word 88 (첫 번째 Word-일반적으로 명령-0)이며 csh는 그러한 Word가 필요하지만 ...
* : 88 *는 Word 88에서 시작하는 모든 단어이므로 csh는 해당 단어가 필요하지 않습니다.
* : p는 인쇄를 의미하지만 명령 행을 실행하지는 않습니다.
: p의 유무에 관계없이 명령 행이 명령 내역에 추가됩니다.

"왜 88?" 궁금해하실 겁니다? *와 같은 키이므로 필요합니다. 긴 명령이 있다면 아마도! : 888 * : p가 필요할 것입니다. 죄송합니다 .bash AFAIK에서는 작동하지 않습니다. 배쉬는 단지 bash: :88*: bad Word specifier

재미있는 사실 : 일반적으로 당신의 명령이 우선 일 필요는 없습니다.
> /tmp/foo echo My command is Word 3
은 bash 및 csh에서 유효합니다.

1
W Dean Stanton

나는 보통 Ctrl+r 검색 후 Ctrl+e 실행하지 않고 줄의 끝으로 이동합니다.

0
nikc