我经常想在 github bug 上发布一些东西,比如
$ 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
'sC-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
一种选择是在运行该命令的子 shell 中启用跟踪(使用)。这会将命令写入 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 具有 shell 集成允许您使用 cmd-shift-A 选择(并自动复制)最后一个命令的输出。
答案4
现在我运行命令,使用屏幕的 Ca C-[ 突出显示该区域,输入将其复制到该缓冲区,
如果您已经使用,GNU screen
则可以使用外部工具直接复制选择。例如,我~/.screenrc
在 Linux 上添加了以下内容:
bind b eval writebuf 'exec /bin/sh -c " xsel -i </tmp/screen-exchange"' 'exec /bin/sh -c "killall xsel"'
Control现在我可以用-标记一个选择a
[,Space然后按
Control-a b来运行xsel
。这不是我的想法,这实际上是相当常见。注意有些人用它pbcopy
代替xsel
所以它可能对你有用,没有任何问题。