Apakah mungkin untuk menyalurkan ke / dari clipboard di Bash?
Apakah itu pemipaan ke / dari gagang perangkat atau menggunakan aplikasi tambahan, saya tidak dapat menemukan apa pun.
Misalnya, jika /dev/clip
perangkat yang terhubung ke clipboard bisa kita lakukan:
cat /dev/clip # Dump the contents of the clipboard
cat foo > /dev/clip # Dump the contents of "foo" into the clipboard
:%y+
vim, yang merupakan vim-speak untuk "yank (copy) semua baris ke register '+' (PRIMARY
papan klip X )". Anda dapat mengganti%
dengan rentang jika Anda ingin spesifik. Tetapi ada tiga peringatan: 1. Sekarang, Anda harus menyimpan teks apa pun ke file sebelum dapat menyalinnya. Ini berbeda denganxclip
perintah yang disebutkan dalam jawaban. 2. Jika Anda belum tahu cara melakukannya, ini mungkin membosankan. 3. Anda hanya dapat melakukan ini jika fitur tertentu diaktifkan saat mengkompilasi vim. Jika Anda menginstal GVim, itu harus diaktifkan secara default di GUI dan terminal vim.xclip
. Jawaban Anda bekerja seperti mantra.:%y+
satu tapi ok, semua pangkalan Anda tertutup! BagusJawaban:
Ada banyak clipboard yang bisa Anda tangani. Saya berharap Anda mungkin adalah pengguna Linux yang ingin meletakkan barang di clipboard utama X Windows. Biasanya, papan klip yang ingin Anda ajak bicara memiliki utilitas yang memungkinkan Anda berbicara dengannya.
Dalam kasus X, ada
xclip
(dan lainnya).xclip -selection c
akan mengirim data ke clipboard yang berfungsi dengan Ctrl + C, Ctrl + Vdi sebagian besar aplikasi.Jika Anda menggunakan Mac OS X, ada
pbcopy
.Jika Anda berada dalam mode terminal Linux (tanpa X) maka lihat ke dalam
gpm
atau layar yang memiliki clipboard. Cobascreen
perintahnyareadreg
.Di bawah Windows 10+ atau cygwin, gunakan
/dev/clipboard
atauclip
.sumber
/dev/clipboard
juga berfungsi untuk shell bash Msys / MinGWxclip -selection c
akan mengirim data ke clipboard yang berfungsi dengan ^ C, ^ V di sebagian besar aplikasiclip
seperti ini:dir | clip
/dev/clipboard
, dan memaksa untuk menginstal xclip baik gpm yang hilang secara default setidaknya di Kubuntu (saya kira di sebagian besar distro lain juga) .Pastikan Anda menggunakan
alias xclip="xclip -selection c"
sebaliknya Anda tidak bisa menggunakan Ctrl+ vuntuk menempelkannya kembali di tempat yang berbeda.Ctrl+v
=== test
sumber
xclip -selection clipboard -o
alias pbcopy="xclip -selection c"
alias pbpaste="xclip -selection clipboard -o"
Semoga itu bisa membantu.xclip
tidak menambahkan baris baru,echo
adalah. Cobaprintf test | xclip -i -selection clipboard
. (printf
tidak menambahkan baris baru kecuali jika Anda menulis'test\n'
.)echo -n
sebagai gantiprintf
.Install
Jika Anda tidak memiliki akses ke
apt-get
ataupacman
, jugadnf
, sumber tersedia di sourceforge .Mendirikan
Pesta
Di
~/.bash_aliases
, tambahkan:Jangan lupa memuat konfigurasi baru Anda menggunakan
. ~/.bash_aliases
atau dengan memulai kembali profil Anda.Ikan
Di
~/.config/fish/config.fish
, tambahkan:Jangan lupa untuk me-restart instance ikan Anda dengan me-restart terminal Anda agar perubahan diterapkan.
Pemakaian
Anda sekarang dapat menggunakan
setclip
dangetclip
, misalnya:sumber
sudo pacman -S xclip
,. Namun perlu diketahui bahwa.bashrc
itu bukan tempat terbaik. Saya merekomendasikan agar pengguna membaca di bashrc, bash_aliases dan .profile file yang tepat dan bagaimana bash menangani masing-masing. Kiat: letakkan di .bash_aliases sebagai gantinya.pacman
manajer paket dan menghapus.bashrc
proposisi. Saya tahu.bash_aliases
lebih disesuaikan, tetapi hasil akhirnya sama (.bashrc
hanya membutuhkan.bash_aliases
jika ada). Jika orang menginginkan sistem yang berantakan, biarkan mereka memilikinya. :).bashrc
sumber saya.bash_aliases
di akhir. ;) Saya mengikuti konvensi lama ini, yang tetap 100% kompatibel di Arch, Ubuntu / Debian, varian Raspberry, macOS / OSX dan Windows Bash: stefaanlippens.net/my_bashrc_aliases_profile_and_other_stuff Dengan konvensi itu, saya menggunakan dotfiles yang sama persis di semua mesin. Saya menyentuh. Cukup bagus: github.com/eduncan911/dotfilesDi macOS, gunakan perintah
pbcopy
dan built-inpbpaste
.Misalnya, jika Anda menjalankan
isi
~/.bashrc
file akan tersedia untuk ditempelkan denganCmd
+v
shortcut.sumber
Mencoba
xclip
pria
sumber
xsel pada Debian / Ubuntu / Mint
Install
sumber
echo "foo" | xclip -selection c
?xsel
danxclip
sama dalam segala hal kecuali yangxclip
dapat membaca / menulis file dengan nama, tetapixsel
memerlukan pengalihan shell jika Anda ingin mengakses file.xsel
berfungsi dengan baik dari skrip, sementaraxclip
hanya berfungsi dari prompt. Tidak yakin kenapa.Wow, saya tidak percaya ada berapa banyak jawaban untuk pertanyaan ini. Saya tidak bisa mengatakan saya sudah mencoba semuanya tetapi saya sudah mencoba 3 atau 4 teratas dan tidak ada yang bekerja untuk saya. Apa yang berhasil bagi saya adalah jawaban yang terletak di salah satu komentar yang ditulis oleh pengguna bernama doug. Karena saya merasa sangat membantu, saya memutuskan untuk menyatakan kembali dalam jawaban.
Instal utilitas xcopy dan ketika Anda berada di Terminal, masukan:
Salinan
Tempel
Saya perhatikan banyak jawaban yang direkomendasikan pbpaste dan pbcopy. Jika Anda ke utilitas itu tetapi karena alasan tertentu tidak tersedia pada repo Anda, Anda selalu dapat membuat alias untuk perintah xcopy dan menyebutnya pbpaste dan pbcopy.
Maka akan terlihat seperti ini:
sumber
2018 menjawab
Gunakan clipboard-cli . Ini bekerja dengan macOS, Windows, Linux, OpenBSD, FreeBSD, dan Android tanpa masalah nyata.
Instal dengan:
npm install -g clipboard-cli
Maka Anda bisa melakukannya
echo foo | clipboard
Jika Anda ingin, Anda dapat alias untuk
cb
dengan menempatkan berikut di Anda.bashrc
,.bash_profile
atau.zshrc
:alias cb=clipboard
sumber
npm
paket yang aman ?Pada subsistem Windows untuk Linux Anda dapat menyalin ke clipboard dengan clip.exe.
Ingatlah untuk menggunakan
|
perintah pipa. Dan bukan>
perintah, karena itu tidak akan berhasil.sumber
Berikut ini adalah skrip bash yang siap digunakan untuk membaca clipboard yang berfungsi pada banyak platform. Harap edit skrip di sini jika Anda menambahkan fungsionalitas (mis. Lebih banyak platform).
sumber
Di Windows (dengan Cygwin) coba
cat /dev/clipboard
atauecho "foo" > /dev/clipboard
seperti yang disebutkan dalam artikel ini .sumber
clip
. Saya menggunakan msysgit 1.9.5 dan ini berhasil.echo "foo" > /dev/clipboard
tampaknya menghancurkan baris baru sepenuhnya (bukan sesuatu tetapi sepenuhnya hilang)Hanya untuk Mac:
Ini terletak
/usr/bin/pbcopy
dan/usr/bin/pbpaste
.sumber
Ada clipboard yang berbeda di Linux; server X memiliki satu, manajer jendela mungkin memiliki yang lain, dll. Tidak ada perangkat standar.
Oh, ya, pada CLI, program layar memiliki clipboard sendiri juga, seperti halnya beberapa aplikasi lain seperti Emacs dan vi .
Di X, Anda bisa menggunakan xclip .
Anda dapat memeriksa utas ini untuk kemungkinan jawaban lain: http://unix.derkeiler.com/Newsgroups/comp.unix.shell/2004-07/0919.html
sumber
Salin dan tempel ke papan klip di Windows (Cygwin):
Lihat:
Juga getclip (dapat digunakan sebagai ganti Shift+ Ins!) Dan putclip (echo oaeuoa | putclip.exe untuk memasukkannya ke dalam klip) ada.
sumber
Ini adalah skrip Python sederhana yang melakukan apa yang Anda butuhkan:
Simpan ini sebagai yang dapat dieksekusi di suatu tempat di jalur Anda (saya menyimpannya
/usr/local/bin/clip
. Anda dapat menyalurkan barang untuk disimpan ke papan klip ...Dan Anda dapat menyalurkan apa yang ada di clipboard Anda ke beberapa program lain ...
Menjalankannya dengan sendirinya hanya akan menampilkan apa yang ada di clipboard.
sumber
cat tmpfile
, bukan operasi clipboard. // sama dengan jawaban @horta.Saya telah menemukan referensi yang bagus: /unix/69111/
Dalam kasus saya, saya ingin menempelkan konten di clipboard dan juga untuk melihat apa yang telah disisipkan di sana, jadi saya juga menggunakan
tee
perintah dengan deskriptor file:>()
adalah bentuk proses substitusi. bash menggantikan masing-masing dengan path ke deskriptor file yang terhubung ke input standar program dalam tanda kurung.The
tee
perintah garpu perintah Anda memungkinkan Anda untuk "pipa isinya" dan lihat hasilnya di output standar "stdout"Anda juga dapat membuat alias untuk mendapatkan dan menulis di clipboard, memungkinkan Anda untuk menggunakan "pbcopy" dan "pbpaste" seolah-olah Anda berada di MAC. Dalam kasus saya, ketika saya menggunakan zsh saya memilikinya di file alias saya:
yang
(( $+command[name] ))
di tes zsh jika perintah "nama" diinstal pada sistem Anda, maka kedua alias dikelompokkan dengan{}
. yang&&
merupakan biner AND, jika b kemudian, maka jika Anda memiliki xclip maka alias akan ditetapkan.Untuk mendapatkan konten clipboard Anda cukup ketik:
sumber
Apakah pekerjaan untuk X Window, dan sebagian besar sudah diinstal. Tampilan di halaman manual xsel sepadan dengan usaha.
sumber
Beberapa program Windows yang saya tulis bertahun-tahun yang lalu. Mereka memungkinkan Anda membuang, mendorong, menambahkan dan mencetak clipboard. Ini berfungsi seperti ini:
Ini termasuk kode sumber: cmd_clip.zip
sumber
Ada beberapa cara. Beberapa cara yang telah disebutkan termasuk (saya pikir) tmux, layar, vim, emacs, dan shell. Saya tidak tahu emacs atau layar, jadi saya akan membahas tiga lainnya.
Tmux
Meskipun bukan pilihan X, tmux memiliki mode salin yang dapat diakses melalui
prefix-[
(prefix
adalah Ctrl+ Bsecara default). Buffer yang digunakan untuk mode ini terpisah dan eksklusif untuk tmux, yang membuka beberapa kemungkinan dan membuatnya lebih fleksibel daripada pilihan X dalam situasi yang tepat.Untuk keluar dari mode ini, tekan q; untuk menavigasi, menggunakan Anda
vim
atauemacs
mengikat (default = vim), jadihjkl
untuk gerakan,v/V/C-v
untuk pemilihan karakter / garis / blok, dll. Ketika Anda memiliki pilihan Anda, tekan Enteruntuk menyalin dan keluar dari mode.Untuk menempelkan dari buffer ini, gunakan
prefix-]
.Kulit
Setiap instalasi
X11
tampaknya datang dengan dua program secara default:xclip
danxsel
(agak seperti itu juga datang dengan keduanyastartx
danxinit
). Sebagian besar jawaban lain menyebutkanxclip
, dan saya sangat sukaxsel
dengan singkatnya, jadi saya akan membahasxsel
.Dari xsel (1x) :
Dan hanya itu yang perlu Anda ketahui.
p
(atau tidak sama sekali) untukPRIMARY
,s
untukSECONDARY
,b
untukCLIPBOARD
,o
untuk keluaran.Contoh: katakan saya ingin menyalin output dari
foo
TTY dan menempelkannya ke halaman web untuk laporan bug. Untuk melakukan ini, sebaiknya menyalin ke / dari sesi TTY / X. Jadi pertanyaannya menjadi bagaimana cara mengakses clipboard dari TTY?Untuk contoh ini, kami akan menganggap sesi X dipajang
:1
.Maka saya bisa
Ctrl-V
memasukkannya ke dalam bentuk seperti biasa.Sekarang katakan bahwa seseorang di situs dukungan memberi saya perintah untuk menjalankan untuk memperbaiki masalah. Ini rumit dan panjang.
Pemesanan pizza tampaknya seperti penggunaan baris perintah yang produktif.
...bergerak.
Vim
Jika dikompilasi dengan
+clipboard
(Ini penting! Periksa Andavim --version
), Vim harus memiliki akses ke XPRIMARY
danCLIPBOARD
pilihan. Kedua pilihan dapat diakses dari register*
dan+
, masing-masing, dan dapat ditulis dan dibaca dari pada waktu luang Anda sama dengan register lainnya. Sebagai contoh:Jika salinan vim Anda tidak secara langsung mendukung akses ke pilihan X, itu bukan akhir dari dunia. Anda bisa menggunakan
xsel
teknik seperti yang dijelaskan di bagian terakhir.Bind combo kunci pasangan dan Anda harus baik.
sumber
DISPLAY=
saat memanggil aplikasi X dari lingkungan non-X. Aplikasi X memerlukanDISPLAY
variabel lingkungan untuk mencari tahu server mana (atau apakah hanya ada satu server yang menangani beberapa sesi?) Yang mereka ajak bicara. CobaDISPLAY=:1 firefox
(atau apa pun ID tampilan Anda; milik saya kebetulan:1
) dari TTY, misalnya.:%y+
di VIM.Dari thread ini, ada opsi yang tidak memerlukan menginstal
gclip
/xclip
/xsel
software pihak ketiga.Skrip perl (karena perl biasanya selalu dipasang)
sumber
pbcopy dibangun dalam OSX:
Menyalin konten .bash_profile:
sumber
Di macOS, gunakan
pbpaste
.Sebagai contoh:
Perbarui clipboard
sumber
Jika Anda seperti saya dan jalankan di server Linux tanpa hak akses root dan tidak ada xclip atau GPM, Anda bisa menyelesaikan masalah ini hanya dengan menggunakan file sementara. Sebagai contoh:
sumber
X selections
(yang harus tersirat oleh "clipboard" dan menyebutkan xclip / xsel), Anda memerlukan sesi X aktif (dan dengan demikian server X) sehingga Anda dapat mengakses seleksi di tempat pertama. Untuk melihat apa yang saya maksud, coba jalankanDISPLAY="" xsel
di mesin lokal Anda. Ini akan keluar karena kesalahan, karena tidak dapat menemukan sesi""
, dan tidak ada interaksi dengan pilihan X yang akan dilakukan. Itu sebabnya saya awalnya mengatakan bahwa saya tidak melihat bagaimana faktor privilege root menjadi ini: root atau tidak root, Anda tidak akan menemukan pilihan X yang berguna di lingkungan server.Di Linux ini berfungsi:
sumber
pada Wayland xcopy sepertinya tidak berfungsi, gunakan wl-clipboard sebagai gantinya. misalnya pada fedora
sumber
Ada juga xclip-copyfile .
sumber
Meskipun> 1 tahun kemudian, saya berbagi solusi yang sedikit berbeda. Semoga ini bermanfaat bagi seseorang.
Kemarin saya menemukan diri saya dengan pertanyaan: "Bagaimana cara berbagi clipboard antara sesi pengguna yang berbeda?" . Saat beralih antar sesi dengan ctrlaltF7- ctrlaltF8, pada kenyataannya, Anda tidak dapat menempelkan apa yang Anda salin.
Saya datang dengan solusi cepat & kotor berikut , berdasarkan pipa bernama. Ini pasti sangat telanjang dan mentah, tetapi saya merasa fungsional:
kemudian di terminal pengirim
terakhir, di terminal penerima:
Sekarang, Anda mengetik atau menempelkan apa pun di terminal pertama, dan (setelah memukul return), itu akan segera muncul di terminal penerima, dari mana Anda dapat menyalin / menempel lagi di mana pun Anda suka.
Tentu saja ini tidak hanya mengambil konten secara ketat dari clipboard user1 untuk membuatnya tersedia di clipboard user2, tetapi lebih dari itu membutuhkan sepasang tambahan klik Paste & Copy.
sumber
xsel/xclip
. Sebagai contoh, salah satu ujung mendengarkan untuk melihat apakah ada pilihan yang berubah, dan kemudian secara otomatis pipa itu (melalui FIFO bernama) ke skrip lain, yang mendengarkan satu atau lebih pipa, yang memasukkannya ke dalam seleksi X sendiri. Menyalin teks dengan demikian secara otomatis akan menghasilkan teks yang sama muncul di pilihan sesi X lainnya. Dan jangan lupakan$DISPLAY
.Oneliner ruby menginspirasi saya untuk mencoba dengan python.
Katakanlah kita menginginkan perintah yang memasukkan apa pun yang ada di clipboard dengan 4 spasi. Sempurna untuk berbagi cuplikan di stackoverflow.
itu bukan salah ketik. Python membutuhkan baris baru untuk melakukan perulangan. Kami ingin mengubah garis dalam satu pass untuk menghindari membangun array ekstra dalam memori.
Jika Anda tidak keberatan membangun array tambahan, cobalah:
tapi jujur awk lebih baik untuk ini daripada python. Saya mendefinisikan alias ini di
~/.bashrc
file sayasekarang ketika saya menjalankan
indent
apa pun yang ada di clipboard saya indentasi.sumber