기록 유틸리티를 사용하여 이전에 입력 한 명령을 다시 실행하지 않고 복사하는 방법은 무엇입니까?


14

historyCentOS 에서 명령 을 사용하여 이전에 입력 한 명령 목록을 가져올 수 있지만 다음과 같은 작업 !372을 수행하면 history가 참조 된 명령을 실행하려고 시도합니다.

현재 커서에 이전 실행 명령이 나타나야합니다. 예를 들면 다음과 같습니다.

[dev@home ~]$ previous_command_no_execute!372  

답변:


25

어떻습니까, 이것을 커맨드 라인에 넣으십시오 :

$ !372

그런 다음 Enter 키를 눌러 ESC다음 CTRL+E. 이것은 실제로 실행하지 않고 명령 행에서 자동 확장됩니다. (또한 env vars를 포함하여 라인의 다른 모든 것을 확장합니다)

이것은 내가 아는 한 Bash에서만 작동합니다.


예, 이것이 정확한 해결책입니다.
centosnoob 2016 년

1
zsh의 솔루션의 경우 입력 후 탭을 누르면 !372확장됩니다.
Reid

10

Ctrlr원래 명령에서 일부 문자를 사용한 다음 입력 할 수 있습니다.

(reverse-i-search)`/etc': sudo /etc/init.d/apache2 restart

위의 내용을 입력 Ctrl-r /etc하고 sudo /etc/init.d/apache2 restart기록 에서 명령을 가져 왔습니다.


6

history | grep 372 작동해야합니까?

편집하다:

또한 echo !372 > /dev/clip명령 디렉토리를 클립 보드에 넣는 것과 같은 작업을 수행 할 수 있습니다.


항상 나를 위해 일한 ...
voretaq7 16:30에

아니요, 특정 명령이 이전에 실행 된 것을 발견 할뿐입니다.
centosnoob

그렇다면 나 자신과 @ voretaq7은 귀하의 질문을 오해하고 있습니다. 좀 더 명확 해 지실 수 있습니까?
MDMarra

@MDMarra 질문을 업데이트했습니다. 나는 그것이 더 많은 빛을 비추기를 바랍니다.
centosnoob

@centosnoob은 업데이트를보고 콘솔이 마우스 및 복사 붙여 넣기를 지원한다고 가정하고 ( 요즘 복사 붙여 넣기 기능이없는 터미널 스타일 콘솔에 직접 있는 경우는 거의 없습니다) 복사 및 붙여 넣기 솔루션은 실제로 가장 고통스럽지 않습니다. . VI-스타일의 명령 편집 내가 내 대답에 설명 된대로 다른 옵션입니다,하지만 난 VI 열광 해요 그리고 심지어 내가 ... VI-스타일의 명령 줄 편집을 사용하지 않는
voretaq7

4

MDMarra는 손쉬운 방법을 제공했습니다 ( history|grep데스크톱 환경이 있으면 가정하여 복사 / 붙여 넣기). 데스크탑 환경이나 마우스 가없는 경우 작동하는 어려운 방식을 알려 드리겠습니다 .

bash를 쉘로 실행한다고 가정합니다.

$ 세트 -o vi
$ ESC372k

(이제 라인에서 372 명령을 실행 한 명령이 있고 vi스타일 명령 모드에 있습니다. ex/ 를 사용하는 것처럼 편집하십시오. vi)


흥미 롭군 "set -o vi"를 일찍 실행 한 경우에만 작동하는 것 같습니다. 이것을 bash 프로파일 또는 무언가에 넣어야 할 수도 있습니다.
Matt

그것은 "나는 항상 vi를 사용하는데 왜 vi 바인딩을 사용하여 bash의 줄을 편집하지 않는가?"라는 충격 중 하나입니다. 익숙해지기까지 약간의 시간이 걸리며, 다른 사람이 사용하는 이맥스 스타일 바인딩은 이상하고 쓸모가 없습니다.
cjc

@ 매트 예-편집 모드를 vi스타일 편집 으로 설정해야합니다 . 그것은 해야 즉시로로 작동 set -o vi하고, 전체 역사 작동합니다 (편집 모드는 쉘의 명령 내역과 다른 것들에 단지 인터페이스입니다).
voretaq7

@cjc vi를 선택한 편집자로 사용하지만 vi 스타일 바인딩을 사용하여 명령 줄을 편집하지 않습니다 (내 머리 꼭대기에서 vi 모드 에서이 작업을 수행하는 방법을 알고 있었지만 다른 사람들이 게시했습니다. 더 친근한 emacs-mode와 동등합니다 :).
voretaq7

4

원하는 것을 수행하는 가장 간단하고 빠른 방법은 다음을 실행하는 것입니다.

!372:p

다음 Enter


0

데스크탑 시스템 또는 서버에 있습니까?

쉘이 열린 Kubuntu 데스크탑 시스템에서는 마우스로 강조 표시를 지원합니다. 나는 보통 마우스로 텍스트를 강조 표시하고 마우스 가운데 버튼을 클릭하여 붙여 넣습니다.

따라서 명령을 grep 할 수 있습니다. 텍스트를 강조 표시하십시오. 마우스 가운데 버튼으로 붙여 넣은 다음 편집하십시오.

더 좋은 방법이있을 수 있지만 이것은 나를 위해 작동합니다.


0

자동 붙여 넣기를 수행하는 명령은 없지만 실행하기 전에 편집기에서 명령을 불러와 편집 할 수 있습니다. 이것은 원하는 것을 얻을 수 있지만 명령을 종료하면 명령이 실행되므로 중단하려면 편집기를 종료하기 전에 편집 버퍼를 지우십시오.

fc -e vi 372 372

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.