用于粘贴我的命令及其输出的命令

用于粘贴我的命令及其输出的命令

我经常想在 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所以它可能对你有用,没有任何问题。

相关内容