Bagaimana cara menyalurkan output standar terminal (stdout) ke clipboard?

106

Sebagai contoh,

Katakanlah saya ingin mendaftar konten folder dan langsung menempelkannya ke jendela obrolan untuk dilihat teman.

Saya menyadari bahwa saya dapat melakukan ls > filename.txtuntuk membuat file (filename.txt) dengan konten tersebut; Saya kemudian harus membuka atau mencetak file dan secara manual memilih dan menyalin blok teks ( yang dapat mengganggu / membosankan .) Saya jelas juga bisa memilih dan menyalin output lslangsung dari dalam jendela terminal.

Akan jauh lebih cepat / mudah untuk sekadar menyalurkan output standar ke clipboard .

Perintah terminal apa yang memungkinkan saya melakukan ini?

Insperatus
sumber
1
unix.stackexchange.com/questions/3892/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Jawaban:

122

Hal ini dapat dilakukan dengan baik xsel atau xclip utilitas baris perintah. Karena tidak ada program yang memiliki Ubuntu secara default, Anda harus menginstalnya melalui Perangkat Lunak Ubuntu atau terminal. Begini caranya di terminal (tapi ingat Anda hanya perlu satu dari dua ini.)

sudo apt install xsel
sudo apt install xclip

Sekarang beberapa contoh. Jika Anda ingin menyalin output dari lske clipboard, inilah yang akan Anda lakukan:

Dengan xsel:

ls | xsel -ib

Dengan xclip:

ls | xclip -sel clip

Ini tentu saja dapat digunakan untuk perintah terminal lainnya juga . Katakanlah Anda ingin menempelkan informasi jaringan Anda ke forum bantuan.

Dengan xsel:

sudo lshw -C network | xsel -ib

Dengan xclip:

sudo lshw -C network | xclip -sel clip

Buat ini lebih mudah dengan alias bash baru!

Edit ~/.bash_aliasesfile Anda (jika belum ada buat dulu dengan touch ~/.bash_aliases)

Kemudian tambahkan satu (tergantung pada program mana Anda memutuskan untuk pergi) dari berikut ini:

alias copy='xclip -sel clip'

atau

alias copy='xsel -ib'

Kemudian simpan dan tutup.

Sekarang (setelah memulai ulang terminal Anda), Anda dapat mengirim output standar ke clipboard hanya dengan memiparnya ke 'copy' (atau apa pun yang Anda putuskan untuk memberi nama alias baru Anda)

Sebagai contoh:

ls | copy
Insperatus
sumber
1
Dengan versi Ubuntu yang lebih baru, Anda harus menggunakan apt. Jadi sudo apt install xselatau sudo apt install xclip.
wisbucky
1
Terima kasih atas jawabannya tetapi apakah Anda tahu sesuatu hanya untuk terminal Linux?
Mohamad
1
@jpaugh. Bandingkan dokumentasi manajemen paket Ubuntu untuk 16,04 vs 14,04 . Dalam 16,04, itu hanya menyebutkan aptdan tidak apt-get. Anda masih dapat menggunakan apt-get, tetapi mereka mencoba mendorong orang untuk menggunakannya apt.
wisbucky
2
Anda tidak harus memulai ulang terminal; Anda bisasource ~/.bash_aliases
Rob K
1
@Mohamad Ini untuk dijalankan di dalam server X (karena menyediakan fungsionalitas clipboard). Jika Anda tidak memilikinya, Anda perlu melakukannya di emulator terminal Anda. Cara melakukannya, tergantung pada perangkat lunak yang sebenarnya Anda gunakan, karena tidak ada standar de-facto untuk itu.
Thorbjørn Ravn Andersen
2

Jika Anda mencoba menyalin ke clipboard menggunakan Ubuntu di Windows Subsystem untuk Linux (WSL) xsel atau xclip tidak akan berfungsi kecuali jika Anda menggunakan X Windows karena clipboard hanya untuk grahpical. Namun, untuk menyalurkan output standar terminal ke clipboard di WSL Ubuntu yang dapat Anda gunakan clip.exe. Anda kemudian dapat menempel ke terminal WSL Ubuntu dengan perintah tempel standar dan teks yang disalin akan tersedia di Windows juga. Sebagai contoh,

pwd | clip.exe 

akan menyalin direktori kerja saat ini ke papan klip (Windows).

Hasil pencarian ini muncul di bagian atas ketika mencari cara untuk menyalin / menempelkan teks di WSL jadi saya pikir perlu menyebutkan ini sehingga pembaca tidak perlu menginstal xsel atau xclip di Ubuntu dan sebagai gantinya gunakan clip.exe.

Bidikan Jepretan
sumber