Seringkali saya ingin memposting sesuatu ke bug github seperti
$ 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
Saat ini aku menjalankan perintah, penggunaan screen
's C-a C-[
untuk menyoroti daerah, enter
untuk menyalinnya ke buffer yang, paste ke vim
, menulis ke sebuah file dan kemudian cat
yang menjadi pbcopy
. Harus ada cara yang lebih baik.
Apakah ada perintah yang bisa saya jalankan yang akan tee
saya ketik perintah awalan dengan $
dan semua output untuk pbcopy
? Atau sesuatu yang dekat? Saya membayangkan
$ 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
$
dan sekarang hal asli yang saya tempel ada di clipboard mac saya.
command-line
clipboard
Paul Tarjan
sumber
sumber
pbcopy
dan itu akan menjadi pertanyaan yang sama.pbcopy
danC-a C-]
ke stdin-nya.Jawaban:
Salah satu opsi adalah mengaktifkan tracing (with
-x
) dalam subkulit yang menjalankan perintah. Ini menulis perintah ke STDERR dan output standar ke STDOUT. Kumpulkan keduanya dan pipa kepbcopy
:sumber
set -x
adalah pendekatan yang menarik. Terlihat dengan baik!+
menjadi$
PS4='\\$ ${BASH_SOURCE[0]:-inherited}:line ${LINENO}:${FUNCNAME[0]:+${FUNCNAME[0]}(): } '
. "\\ $" menjadikan "$" char pertama, dan char itu kemudian diulang untuk menunjukkan tingkat panggilan. ($ untuk level pertama, $$ untuk level kedua, dll)Anda dapat menggunakan
script
utilitas untuk menangkap seluruh interaksi termasuk permintaan, perintah, dan hasilnya:Anda kemudian dapat meninjau file, dan isinya sudah ada di clipboard Anda.
Anda juga bisa:
sumber
$
dan itu memungkinkan saya melakukan banyak perintah di mana saya hanya ingin satu, dan itu menambahkan header dan footer yang saya tidak inginkan.-q
. Anda dapat menggunakansed
untuk menghapus kode ANSI:sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"
script temp.log env PS1='$ ' bash --norc
untuk mendapatkan bash dengan prompt yang Anda inginkan. Atau Anda dapat mengedit Anda~/.bashrc
untuk memeriksa penggunaanscript
dan mengubah prompt:[ $(ps -o command= -p $PPID) = 'script' ] && PS1='$ '
iterm2 memiliki integrasi shell yang memungkinkan Anda memilih (dan menyalin otomatis) output dari perintah terakhir dengan cmd-shift-A.
sumber
Dari komentar Anda pada jawaban lain , Anda tidak ingin seluruh permintaan Anda disalin, tetapi hanya
$
.Bagaimana saya menyelesaikannya adalah:
Mudah. Kemudian saya menggunakan mouse untuk menyalin dan menempelkan prompt, perintah, dan output yang saya inginkan.
Untuk kasus penggunaan yang berbeda di mana saya hanya ingin perintah, bukan output dan bukan prompt, untuk dapat memberikan instruksi kepada seseorang, saya telah menyiapkan alias,
zv
(dekat dengan "Command V" pada keyboard) untuk menyalin perintah terakhir ke clipboard saya :Perhatikan penggunaan
printf
dan perintah substitusi untuk menghindari memasukkan baris baru darihistory
dalam clipboard.sumber
Jika sudah menggunakan,
GNU screen
Anda dapat menyalin pilihan langsung menggunakan alat eksternal. Sebagai contoh, saya menambahkan ini ke~/.screenrc
Linux:Sekarang saya dapat menandai pilihan dengan Control- a [, tekan Spacedan sekarang tekan Control- a buntuk menjalankan
xsel
. Itu bukan ide saya, itu sebenarnya sangat umum . Perhatikan bahwa beberapa orang menggunakannya denganpbcopy
bukannyaxsel
sehingga dapat bekerja untuk Anda tanpa masalah.sumber