私はしばしば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
1つのオプションは、コマンドが実行されるサブシェルでトレース(使用)を有効にすることです。これはコマンドを 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
外部ツールを使用して選択項目を直接コピーできます。たとえば、~/.screenrc
Linuxでは以下を追加しました。
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
したがって、問題なく動作することができます。