Saya baru saja mengajukan pertanyaan terkait karena saya tidak bisa membuat xclip berfungsi saat masuk ke Ubuntu dari Git Bash di Windows: stackoverflow.com/q/60117294/470749
Ryan
1
Simpan konten file ke papan klip. apt install xclipdancat file | xclip -sel clip
EsmaeelE
Jawaban:
598
Saya selalu ingin melakukan ini dan menemukan cara yang bagus dan mudah untuk melakukannya. Saya menuliskan prosedur lengkap kalau-kalau ada orang lain yang membutuhkannya.
Pertama instal program 16 kB bernama xclip:
sudo apt-get install xclip
Anda kemudian dapat menyalurkan output ke xclipuntuk disalin ke clipboard:
cat file | xclip
Untuk menempelkan teks yang baru saja Anda salin, Anda harus menggunakan:
xclip -o
Untuk menyederhanakan kehidupan, Anda dapat mengatur alias di file .bashrc Anda seperti yang saya lakukan:
alias "c=xclip"
alias "v=xclip -o"
Untuk melihat betapa berharganya ini, bayangkan saya ingin membuka jalur saya saat ini di jendela terminal baru (mungkin ada cara lain untuk melakukannya seperti Ctrl+ Tpada beberapa sistem, tetapi ini hanya untuk tujuan ilustrasi):
Terminal1:
pwd | cTerminal2:
cd `v`
Perhatikan ` ` sekitarnya v. Ini dieksekusi vsebagai perintah pertama dan kemudian menggantikannya di tempat untuk cddigunakan.
Hanya salin konten ke Xclipboard
cat file | xclip
Jika Anda ingin menempel di tempat lain selain Xaplikasi, coba yang ini:
"cat file | xclip" hanya menyalin konten ke clipboard 'X', jika Anda ingin menempelkan di tempat lain selain aplikasi 'X', coba yang ini: "file cat | xclip-clipboard pilihan"
khotyn
5
Pilihan pegangan Anda sesuai!
Matt Joiner
4
Jika Anda ingin menghapus karakter baris baru sehingga Anda dapat langsung menyisipkan dan mengedit hasil "pwd | c", Anda dapat melakukan "pwd | tr -d '\ n' | xclip -Pemilihan c"
Anake
12
juga mendefinisikan alias "cs=xclip -selection clipboard"dan alias "vs=xclip -o -selection clipboard"membuat penyalinan / menempel dari clipboard sistem lebih mudah
Yibo Yang
1
Bagaimana dengan solusi di mana saya tidak memiliki akses sudo, dan xclip tidak diinstal ??
DanGordon
179
Pada OS X, gunakan pbcopy; pbpastepergi ke arah yang berlawanan.
Yups! Sama seperti ini untuk mantan:pbcopy < .ssh/id_rsa.pub
doublejosh
tidak bekerja untuk output perintah tho - misalnyapbcopy < git merge-base master some-branch
Ben
jika Anda menggunakan tmux, itu tidak akan berfungsi kecuali jika Anda memasang kembali sesi Anda: superuser.com/a/413233/146254
Atav32
1
Anda juga dapat menggunakan cat, jika Anda sudah menggunakannya: cat file.txt | pbcopy
rtrigoso
3
Saya tahu komentarnya berusia 5 tahun, tetapi jika seseorang menemukan ini di masa depan, untuk digunakan dengan output perintah, lakukangit merge-base master some-branch | pbcopy
Sam
62
Saya telah membuat alat untuk Linux / OSX / Cygwin yang mirip dengan beberapa yang lain tetapi sedikit unik. Saya menyebutnya cbdan dapat ditemukan di intisari github ini .
Pada intinya saya mendemonstrasikan cara melakukan copy dan paste melalui commandline menggunakan Linux, macOS, dan Cygwin.
Catatan: Saya awalnya hanya bermaksud menyebutkan ini dalam komentar saya untuk jawaban Bob Enohp . Tetapi kemudian saya menyadari bahwa saya harus menambahkan README ke inti saya. Karena editor inti tidak menawarkan preview Penurunan harga, saya menggunakan kotak jawaban di sini dan setelah menyalin / menempelkannya ke pemikiran utama saya, "Saya mungkin juga mengirimkan jawaban."
Ini berfungsi sempurna bagi saya untuk menyalin output perintah ke clipboard di terminal pada macOS, terima kasih!
Joshua Dyck
46
Saya menulis skrip kecil ini yang mengeluarkan tebakan tebakan dari perintah salin / tempel.
Versi Linux dari skrip bergantung pada xclip yang sudah diinstal di sistem Anda. Script ini disebut clipboard.
#!/bin/bash# Linux version# Use this script to pipe in/out of the clipboard## Usage: someapp | clipboard # Pipe someapp's output into clipboard# clipboard | someapp # Pipe clipboard's content into someapp#if command -v xclip 1>/dev/null;thenif[[-p /dev/stdin ]];then# stdin is a pipe# stdin -> clipboard
xclip -i -selection clipboard
else# stdin is not a pipe# clipboard -> stdout
xclip -o -selection clipboard
fielse
echo "Remember to install xclip"fi
Versi OS X dari skrip bergantung pada pbcopy dan pbpaste yang sudah diinstal pada semua Mac.
#!/bin/bash# OS X version# Use this script to pipe in/out of the clipboard## Usage: someapp | clipboard # Pipe someapp's output into clipboard# clipboard | someapp # Pipe clipboard's content into someapp#if[[-p /dev/stdin ]];then# stdin is a pipe# stdin -> clipboard
pbcopy
else# stdin is not a pipe# clipboard -> stdout
pbpaste
fi
Menggunakan skrip sangat sederhana karena Anda cukup pipa masuk atau keluar clipboardseperti yang ditunjukkan dalam dua contoh ini.
Saya menggunakan nama-nama pbcopydan pbpastedi Linux sehingga bekerja untuk Linux dan OS X.
StackedCrooked
Untuk membuat skrip berfungsi secara global di ubuntu: * Simpan di ~/.scripts/clipboard * Jadikannya dapat dieksekusi chmod +x ~/.scripts/clipboard untuk bash: * tambahkan export PATH=$PATH:~/.scriptske akhir ~/.bashrc untuk ikan: * tambahkan set PATH ~/.scripts $PATHke ~/.config/fish/fish.config Jika ada file atau folder yang belum ada, buat saja.
Hoki
2
Anda juga dapat membungkus skrip ini sebagai fungsi clipboard(){ ... }dan menempelkannya ke .bashrc
Sebastian Nowak
Ini sangat mirip dengan yang saya buat, tapi saya mengizinkan chaining seperti date | cb | tee -a updates.log. Itu akan mengirim dateoutput perintah ke clipboard dan meneruskannya ke tee -aperintah yang menambahkannya ke file dan meneruskannya ke stdout. Tapi itu seperti " tee anti bocor ke clipboard" karena jika Anda melakukannya date | cbAnda tidak mendapatkan hasil. Dan akhirnya itu juga cb > file.txtgist.github.com/RichardBronosky/…
Bruno Bronosky
Satu saran - hapus karakter trailing newline untuk menghindari mengeksekusi perintah pada paste (misalnya jika menyalin-paste jalur). Saya melakukannya dengan memodifikasi perintah xclip -i -selection clipboarduntukxargs echo -n | xclip -i -selection clipboard
Ivaylo Strandjev
23
Tambahkan ini ke ~/.bashrc:
# Now `cclip' copies and `clipp' pastes'
alias cclip='xclip -selection clipboard'
alias clipp='xclip -selection clipboard -o'
Sekarang klip pasta p dan salinan klip c - tetapi Anda juga dapat melakukan hal-hal yang lebih menarik:
clipp | sed 's/^/ /'| cclip
↑ indentasi clipboard Anda; bagus untuk situs tanpa { }tombol stack overflow
Anda dapat menambahkannya dengan menjalankan ini:
printf "\nalias clipp=\'xclip -selection c -o\'\n">>~/.bashrc
printf "\nalias cclip=\'xclip -selection c -i\'\n">>~/.bashrc
Saya menggunakan Parcellite dan xseluntuk menyalin pesan komit terakhir dari gitke clipboard manager saya (karena beberapa alasan xcliptidak berfungsi):
@AfshinMoazami, judul dan pertanyaannya sendiri bersifat generik, Hanya tag yang mengisyaratkan sistem unix, dan jawaban saya mencakup kasus ketika Anda mencoba mendapatkan tanggal DARI server unix KE mesin Windows, yang mungkin bermanfaat bagi pembaca di masa mendatang.
d.raev
1
Terpilih karena ya, berguna untuk admin Windows yang hanya memiliki Powershell untuk dimainkan secara lokal (walaupun sekarang dengan LSW sebenarnya berfungsi, saya dapat langsung melakukan bash dari Powershell dan melakukan * hal-hal aneh dari sana).
flith
Ini bekerja pada DOS prompt serta git bash pada windows 10 yaituecho Hello World | clip
5
Untuk mac, ini adalah contoh cara untuk menyalin (ke clipboard) tempel (dari clipboard) menggunakan baris perintah
Saya membuat alat kecil yang menyediakan fungsi serupa, tanpa menggunakan xclip atau xsel. stdoutdisalin ke clipboard dan dapat ditempelkan kembali di terminal. Lihat:
Perhatikan, bahwa alat ini tidak perlu sesi-X. Clipboard hanya dapat digunakan di dalam terminal dan tidak harus ditempelkan oleh Ctrl+Vatau klik tengah mouse ke jendela-X lainnya.
Saya berasal dari latar belakang KDE yang dilucuti dan tidak memiliki akses ke xclip, xselatau hal-hal mewah lainnya. Saya memiliki Konsole TCSH untuk memperburuk keadaan.
Catatan: Ini perlu bash karena TCSH tidak mendukung argumen multi-baris.
Diikuti oleh alias TCSH di .cshrc.
alias clipboard xargs -0/path/to/foo
Penjelasan:
xargs -0pipa stdin menjadi satu argumen. Argumen ini diteruskan ke bash executable yang mengirimkan permintaan untuk klippermenggunakan "salin ke clipboard" qdbus. Pipa to /dev/nulladalah untuk tidak mencetak karakter baris baru yang dikembalikan oleh qdbuske konsol.
Contoh penggunaan:
ls | clipboard
Ini menyalin isi folder saat ini ke clipboard.
Catatan: Hanya berfungsi sebagai pipa. Gunakan bash yang dapat dieksekusi secara langsung jika Anda perlu menyalin argumen.
Bagi mereka yang menggunakan bash yang terinstal di sistem windows mereka (dikenal sebagai Windows Subsystem untuk Linux (WSL)), mencoba xclip akan memberikan kesalahan:
Error:Can't open display: (null)
Sebaliknya, ingatlah bahwa subsistem linux memiliki akses ke windows executable. Mungkin untuk menggunakan clip.exe seperti
echo hello | clip.exe
yang memungkinkan Anda untuk menggunakan perintah tempel (ctrl-v).
Catat bahwa jika xserver (seperti vcxsvr atau xming) diinstal pada windows, tampilan sudah aktif dan xclipboard sedang berjalan, Anda sebenarnya dapat menggunakan xclip tanpa terlihat.
bitbyte
0
Hanya untuk menutupi kasus tepi :) dan karena judul pertanyaan bertanya (setidaknya sekarang) bagaimana cara menyalin output dari perintah langsung ke clipboard.
Sering kali saya merasa berguna untuk menyalin output dari perintah setelah dieksekusi dan saya tidak ingin atau tidak dapat menjalankan perintah lagi.
Untuk skenario ini, kita bisa menggunakan gdm atau utilitas mouse serupa dan memilih menggunakan mouse. apt-get install gdmdan kemudian klik kanan atau kombinasi Cntrl + Shift + c dan Cntrl + Shift + v untuk menyalin dan menempel di terminal
Atau, yang merupakan metode yang disukai untuk saya (karena mouse tidak dapat memilih dengan benar di dalam satu panel ketika Anda memiliki beberapa panel berdampingan dan Anda perlu memilih lebih dari satu baris), menggunakan tmux kita dapat menyalin ke dalam buffer tmux menggunakan standar [, spasi, pindah untuk memilih, memasukkan atau Anda dapat memilih satu blok kode. Juga ini sangat berguna ketika Anda berada di dalam salah satu jalur cli multiplexer seperti tmux DAN Anda perlu memilih banyak teks, tetapi bukan nomor baris (setup vim saya membuat nomor baris)
Setelah ini, Anda dapat menggunakan perintah:
tmux save-buffer - | xclip -i
Tentu saja Anda dapat menambahkannya ke sesuatu yang Anda sukai atau mengikat langsung di file konfigurasi tmux
Ini hanya untuk memberi Anda jawaban konseptual untuk menutupi kasus tepi ini ketika itu tidak mungkin untuk menjalankan perintah lagi. Jika Anda membutuhkan contoh kode yang lebih spesifik, beri tahu saya
apt install xclip
dancat file | xclip -sel clip
Jawaban:
Saya selalu ingin melakukan ini dan menemukan cara yang bagus dan mudah untuk melakukannya. Saya menuliskan prosedur lengkap kalau-kalau ada orang lain yang membutuhkannya.
Pertama instal program 16 kB bernama
xclip
:Anda kemudian dapat menyalurkan output ke
xclip
untuk disalin ke clipboard:Untuk menempelkan teks yang baru saja Anda salin, Anda harus menggunakan:
Untuk menyederhanakan kehidupan, Anda dapat mengatur alias di file .bashrc Anda seperti yang saya lakukan:
Untuk melihat betapa berharganya ini, bayangkan saya ingin membuka jalur saya saat ini di jendela terminal baru (mungkin ada cara lain untuk melakukannya seperti Ctrl+ Tpada beberapa sistem, tetapi ini hanya untuk tujuan ilustrasi):
Perhatikan
` `
sekitarnyav
. Ini dieksekusiv
sebagai perintah pertama dan kemudian menggantikannya di tempat untukcd
digunakan.Hanya salin konten ke
X
clipboardJika Anda ingin menempel di tempat lain selain
X
aplikasi, coba yang ini:sumber
alias "cs=xclip -selection clipboard"
danalias "vs=xclip -o -selection clipboard"
membuat penyalinan / menempel dari clipboard sistem lebih mudahPada OS X, gunakan
pbcopy
;pbpaste
pergi ke arah yang berlawanan.sumber
pbcopy < .ssh/id_rsa.pub
pbcopy < git merge-base master some-branch
git merge-base master some-branch | pbcopy
Saya telah membuat alat untuk Linux / OSX / Cygwin yang mirip dengan beberapa yang lain tetapi sedikit unik. Saya menyebutnya
cb
dan dapat ditemukan di intisari github ini .Pada intinya saya mendemonstrasikan cara melakukan copy dan paste melalui commandline menggunakan Linux, macOS, dan Cygwin.
Linux
macOS
Cygwin
Catatan: Saya awalnya hanya bermaksud menyebutkan ini dalam komentar saya untuk jawaban Bob Enohp . Tetapi kemudian saya menyadari bahwa saya harus menambahkan README ke inti saya. Karena editor inti tidak menawarkan preview Penurunan harga, saya menggunakan kotak jawaban di sini dan setelah menyalin / menempelkannya ke pemikiran utama saya, "Saya mungkin juga mengirimkan jawaban."
cb
Tee anti bocor ke clipboard
Script ini dimodelkan setelah
tee
(lihatman tee
).Ini seperti perintah salin dan tempel normal Anda, tetapi bersatu dan dapat merasakan kapan Anda menginginkannya dapat ditularkan
Contohnya
Salinan
Tempel
Rantai
Salin melalui pengalihan file
(Secara kronologis masuk akal untuk melakukan demo di bagian akhir)
sumber
Saya menulis skrip kecil ini yang mengeluarkan tebakan tebakan dari perintah salin / tempel.
Versi Linux dari skrip bergantung pada xclip yang sudah diinstal di sistem Anda. Script ini disebut clipboard.
Versi OS X dari skrip bergantung pada pbcopy dan pbpaste yang sudah diinstal pada semua Mac.
Menggunakan skrip sangat sederhana karena Anda cukup pipa masuk atau keluar
clipboard
seperti yang ditunjukkan dalam dua contoh ini.sumber
pbcopy
danpbpaste
di Linux sehingga bekerja untuk Linux dan OS X.~/.scripts/clipboard
* Jadikannya dapat dieksekusichmod +x ~/.scripts/clipboard
untuk bash: * tambahkanexport PATH=$PATH:~/.scripts
ke akhir~/.bashrc
untuk ikan: * tambahkanset PATH ~/.scripts $PATH
ke~/.config/fish/fish.config
Jika ada file atau folder yang belum ada, buat saja.clipboard(){ ... }
dan menempelkannya ke .bashrcdate | cb | tee -a updates.log
. Itu akan mengirimdate
output perintah ke clipboard dan meneruskannya ketee -a
perintah yang menambahkannya ke file dan meneruskannya kestdout
. Tapi itu seperti " tee anti bocor ke clipboard" karena jika Anda melakukannyadate | cb
Anda tidak mendapatkan hasil. Dan akhirnya itu jugacb > file.txt
gist.github.com/RichardBronosky/…xclip -i -selection clipboard
untukxargs echo -n | xclip -i -selection clipboard
Tambahkan ini ke
~/.bashrc
:Anda dapat menambahkannya dengan menjalankan ini:
sumber
Saya menggunakan Parcellite dan
xsel
untuk menyalin pesan komit terakhir darigit
ke clipboard manager saya (karena beberapa alasanxclip
tidak berfungsi):sumber
Tanpa menggunakan alat eksternal, jika Anda terhubung ke tampilan server SSH, ini adalah perintah yang relatif mudah:
Dari prompt perintah Windows 7+:
Ini akan menempatkan konten file jarak jauh ke clipboard lokal Anda.
(Perintah tersebut mengharuskan menjalankan Pageant untuk kunci, atau ia akan meminta Anda untuk kata sandi.)
sumber
echo Hello World | clip
Untuk mac, ini adalah contoh cara untuk menyalin (ke clipboard) tempel (dari clipboard) menggunakan baris perintah
Salin hasil
pwd
perintah ke clipboard sebagaiGunakan konten di clipboard sebagai
sumber
Saya membuat alat kecil yang menyediakan fungsi serupa, tanpa menggunakan xclip atau xsel.
stdout
disalin ke clipboard dan dapat ditempelkan kembali di terminal. Lihat:https://sourceforge.net/projects/commandlinecopypaste/
Perhatikan, bahwa alat ini tidak perlu sesi-X. Clipboard hanya dapat digunakan di dalam terminal dan tidak harus ditempelkan oleh Ctrl+Vatau klik tengah mouse ke jendela-X lainnya.
sumber
Di Linux dengan xclip diinstal:
sumber
Berdasarkan posting sebelumnya, saya berakhir dengan solusi alias ringan-berat berikut yang dapat ditambahkan ke
.bashrc
:Contoh:
sumber
Saya berasal dari latar belakang KDE yang dilucuti dan tidak memiliki akses ke
xclip
,xsel
atau hal-hal mewah lainnya. Saya memiliki Konsole TCSH untuk memperburuk keadaan.Persyaratan:
qdbus
klipper
xargs
bash
Buat bash yang dapat dieksekusi
foo.sh
.Catatan: Ini perlu bash karena TCSH tidak mendukung argumen multi-baris.
Diikuti oleh alias TCSH di
.cshrc
.Penjelasan:
xargs -0
pipa stdin menjadi satu argumen. Argumen ini diteruskan ke bash executable yang mengirimkan permintaan untukklipper
menggunakan "salin ke clipboard"qdbus
. Pipa to/dev/null
adalah untuk tidak mencetak karakter baris baru yang dikembalikan olehqdbus
ke konsol.Contoh penggunaan:
Ini menyalin isi folder saat ini ke clipboard.
Catatan: Hanya berfungsi sebagai pipa. Gunakan bash yang dapat dieksekusi secara langsung jika Anda perlu menyalin argumen.
sumber
Saya biasanya menjalankan perintah ini ketika saya harus menyalin
ssh-key
:ctrl+v
di tempat lain.sumber
pada Wayland xcopy sepertinya tidak berfungsi, gunakan wl-clipboard sebagai gantinya. misalnya pada fedora
sumber
Bagi mereka yang menggunakan bash yang terinstal di sistem windows mereka (dikenal sebagai Windows Subsystem untuk Linux (WSL)), mencoba xclip akan memberikan kesalahan:
Sebaliknya, ingatlah bahwa subsistem linux memiliki akses ke windows executable. Mungkin untuk menggunakan clip.exe seperti
yang memungkinkan Anda untuk menggunakan perintah tempel (ctrl-v).
sumber
Hanya untuk menutupi kasus tepi :) dan karena judul pertanyaan bertanya (setidaknya sekarang) bagaimana cara menyalin output dari perintah langsung ke clipboard.
Sering kali saya merasa berguna untuk menyalin output dari perintah setelah dieksekusi dan saya tidak ingin atau tidak dapat menjalankan perintah lagi.
Untuk skenario ini, kita bisa menggunakan gdm atau utilitas mouse serupa dan memilih menggunakan mouse.
apt-get install gdm
dan kemudian klik kanan atau kombinasi Cntrl + Shift + c dan Cntrl + Shift + v untuk menyalin dan menempel di terminalAtau, yang merupakan metode yang disukai untuk saya (karena mouse tidak dapat memilih dengan benar di dalam satu panel ketika Anda memiliki beberapa panel berdampingan dan Anda perlu memilih lebih dari satu baris), menggunakan tmux kita dapat menyalin ke dalam buffer tmux menggunakan standar [, spasi, pindah untuk memilih, memasukkan atau Anda dapat memilih satu blok kode. Juga ini sangat berguna ketika Anda berada di dalam salah satu jalur cli multiplexer seperti tmux DAN Anda perlu memilih banyak teks, tetapi bukan nomor baris (setup vim saya membuat nomor baris)
Setelah ini, Anda dapat menggunakan perintah:
tmux save-buffer - | xclip -i
Tentu saja Anda dapat menambahkannya ke sesuatu yang Anda sukai atau mengikat langsung di file konfigurasi tmux
Ini hanya untuk memberi Anda jawaban konseptual untuk menutupi kasus tepi ini ketika itu tidak mungkin untuk menjalankan perintah lagi. Jika Anda membutuhkan contoh kode yang lebih spesifik, beri tahu saya
Bersulang
sumber