私のコマンドとその出力を貼り付けるコマンド

私のコマンドとその出力を貼り付けるコマンド

私はしばしば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

-x1つのオプションは、コマンドが実行されるサブシェルでトレース(使用)を有効にすることです。これはコマンドを 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したがって、問題なく動作することができます。

関連情報