여러 줄 명령을 복사하기 위해 줄 번호를 사용하지 않고 "history" 명령을 어떻게 실행할 수 있나요?

여러 줄 명령을 복사하기 위해 줄 번호를 사용하지 않고 "history" 명령을 어떻게 실행할 수 있나요?

가끔 명령을 실행하면 history4개의 명령이 연속으로 표시되는 경우가 있습니다.

다시 실행할 수 있도록 이 명령을 복사하고 싶습니다.

나는 일반적으로 마우스와 Shift-Ctrl-c를 사용하여 선택하는데 잘 작동하지만 줄 번호도 얻습니다.

history줄번호가 없으면 어떻게 해야 하나요?

매뉴얼 페이지를 시도했지만 헤매었습니다.

답변1

기록 출력은 로컬 환경에 따라 달라질 수 있습니다. 내 컴퓨터에서는 다음과 같습니다.

 $ history | tail -1
 2993  2012-08-13 17:42:17 echo "test"

귀하의 답변 중 어느 것도 나에게 적합하지 않습니다.

유용한 옵션 fc(보통 내장되어 있음)은 로컬 설정과 완전히 독립적일 수 있습니다.

fc-n출력에서 숫자를 억제하는 옵션이 있습니다 . 따라서 명령은 다음과 같습니다.

fc -l -n

마지막 몇 개의 명령만 출력합니다.

이 방법으로 전체 기록을 출력하려면 다음을 사용하십시오.

fc -l -n 1  

처음에 공백을 출력하지 않으려면 sed를 사용하여 공백을 제거할 수 있습니다.

fc -l -n 1 | sed 's/^\s*//'

답변2

awk를 사용하세요:

history | awk '{$1="";print}'

답변3

존재하다 bash:

history | tr -s ' ' | cut -d' ' -f3-

에서 :zshksh

history -n

존재하다 tcsh:

history -h

편집하다

사용에 대한 Rush의 답변도 참조하세요 fc.

답변4

또 다른 해결책은 터미널을 사용하는 것입니다블록 선택 방법,그렇다면. 대개선택하기 전에 Ctrl 키를 누르고 있으면 됩니다.마우스를 사용하세요. 이렇게 하면 많은 최신 터미널(확실히 libvte 기반 터미널)에서 블록 선택 모드가 활성화됩니다.

그런 다음 선택 블록이 복사하려는 모든 줄을 포함하도록(가장 긴 명령의 전체 너비까지) 끌어 놓기만 하면 됩니다. 그런 다음 붙여넣기만 하면 줄 바꿈이 유지됩니다.

이것은 줄 번호 접두사, 로그 파일의 타임스탬프 등과 같은 문제를 피하기 위해 빠른 복사/붙여넣기를 수행할 때 하루에 여러 번 사용하는 간단한 방법입니다.

복사된 명령 중 하나가 여러 줄에 걸쳐 있으면 이 기능이 작동하지 않습니다.

관련 정보