내 명령과 출력을 붙여 넣기위한 명령 영역을 강조하기

종종 github 버그에 무언가를 게시하고 싶습니다.

$ ping google.com
PING google.com (216.58.195.238): 56 data bytes
Request timeout for icmp_seq 0
64 bytes from 216.58.195.238: icmp_seq=0 ttl=53 time=1064.747 ms

지금 내가 명령을 실행, 사용 screenC-a C-[, 영역을 강조하기 enter에 붙여, 그 버퍼에 복사 vim한 후, 파일에 기록하고 cat그로 pbcopy. 더 좋은 방법이 있어야합니다.

tee내가 입력 할 수 있는 명령에 접두사 a $와 모든 출력을 추가 할 수 있는 명령 이 pbcopy있습니까? 아니면 가까운 것이 있습니까? 나는 구상

$ demo ping google.com
PING google.com (216.58.195.238): 56 data bytes
Request timeout for icmp_seq 0
64 bytes from 216.58.195.238: icmp_seq=0 ttl=53 time=1064.747 ms
^C
$

이제 붙여 넣은 원본은 내 맥 클립 보드에 있습니다.



답변

하나의 옵션은 -x명령을 실행하는 서브 쉘에서 추적 (with ) 을 활성화하는 것 입니다. 이것은 명령을 STDERR에 쓰고 표준 출력을 STDOUT에 씁니다. 둘 다 수집하고 파이프 pbcopy:

$ ( set -x; ping -c 3 google.com ) 2>&1 | pbcopy

$ pbpaste
+ ping -c 3 google.com
PING google.com (173.194.217.138): 56 data bytes
64 bytes from 173.194.217.138: icmp_seq=0 ttl=44 time=37.436 ms
64 bytes from 173.194.217.138: icmp_seq=1 ttl=44 time=38.891 ms
64 bytes from 173.194.217.138: icmp_seq=2 ttl=44 time=39.329 ms
--- google.com ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 37.436/38.552/39.329/0.809 ms


답변

script유틸리티를 사용 하여 프롬프트, 명령 및 출력을 포함하여 전체 상호 작용을 캡처 할 수 있습니다 .

script temp.log; cat temp.log | pbcopy
[ do stuff ]
[ end the interaction with ^D or logging out of the shell ]

그런 다음 파일을 검토하면 파일 내용이 이미 클립 보드에 있습니다.

당신은 또한 수:

script temp.log 'somecommand'; cat temp.log | pbcopy


답변

iterm2에는 쉘 통합 기능 이있어 cmd-shift-A를 사용하여 마지막 명령의 출력을 선택 (및 자동 복사) 할 수 있습니다.


답변

다른 답변에 대한 귀하의 의견에서 전체 프롬프트를 복사 하지 않고 단지 $.

이 문제를 해결하는 방법은 다음과 같습니다.

16:54:53 [myname mydirectory] 535 $ bash
bash-3.2$ PS1='\$ '
$ echo some command
some command
$ exit
exit
16:57:17 [myname mydirectory] 536 $

쉬운. 그런 다음 마우스를 사용하여 원하는 프롬프트, 명령 및 출력을 복사하여 붙여 넣습니다.


나는 다른 사용 사례를 들어 단지 가 아닌 출력되지에게 프롬프트를 명령을 원하는, 내가 별칭 설정 한 사람의 지침을 제공 할 수 있도록 zv하기 위해 (키보드에 가까운 “명령 V”로)를 복사 클립 보드에 마지막 명령 :

alias zv='printf %s "$(history -p \!\!)" | pbcopy'

클립 보드에 printf후행 줄 바꿈을 포함하지 않으 려면 사용 및 명령 대체를 참고하십시오 history.


답변

지금은 명령을 실행하고 화면의 Ca C- [를 사용하여 영역을 강조 표시하고 입력하여 해당 버퍼에 복사합니다.

이미 사용중인 경우 GNU screen외부 도구를 사용하여 선택 항목을 직접 복사 할 수 있습니다. 예를 들어 ~/.screenrcLinux 에서 이것을 추가했습니다 .

bind b eval writebuf 'exec /bin/sh -c " xsel -i </tmp/screen-exchange"' 'exec /bin/sh -c "killall xsel"'

지금은 선택 WIH을 표시 할 수 있습니다 Controla
[눌러 Space지금 누르십시오
Controla b실행 xsel. 내 생각이 아니라 실제로는 매우 일반적 입니다. 있습니다 어떤 사람들은 그것을 사용하는 pbcopy대신에xsel 당신을 위해 작동 할 수 있도록 문제없이.


답변