내 명령과 그 출력을 붙여넣는 명령

내 명령과 그 출력을 붙여넣는 명령

나는 종종 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

이제 명령을 실행하고 screen'를 사용하여 C-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
$

내가 붙여넣은 원본 콘텐츠가 이제 내 Mac 클립보드에 있습니다.

답변1

-x한 가지 옵션은 명령이 실행되는 하위 쉘에서 추적(사용)을 활성화하는 것입니다. 이는 명령을 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

답변2

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

답변3

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

답변4

이제 화면의 Ca C-[를 사용하여 해당 영역을 강조 표시하고 Enter를 눌러 해당 버퍼에 복사하는 명령을 실행합니다.

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

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

Control이제 -를 사용하여 선택 항목을 표시 a [하고 -를 Space눌러 실행할 수 있습니다 . 내가 생각한게 이게 아닌데 실제로는 이게Controla bxsel꽤 흔한. 알아채다어떤 사람들은 그것을 pbcopy대신 사용합니다xsel따라서 아무런 문제 없이 작동할 수 있습니다.

관련 정보