Bagaimana cara mengirim stdin ke clipboard?

44

Apakah ada fungsi di unix yang memungkinkan hal-hal berikut:

echo "Some Text" | copy-to-clipboard
Stefan
sumber
maksudmu stdout?
phunehehe
3
itu benar-benar tergantung pada sisi mana Anda berdiri: P untuk perintah yang mengirimkannya ke clipboard, itu stdin.
Stefan
2
Orang yang sudah lama menggunakan Unix akan memberi tahu Anda bahwa lebih baik menulis <longTextFile straightToClipboard. Itu sama dengan cat longTextFile straightToClipboard, tetapi tidak perlu berjalan cat. Hanya sebuah pengamatan. Jangan ragu untuk mengabaikannya. Lihat Penggunaan Cat Award yang Tidak Berguna untuk beberapa latar belakang dan contoh jika Anda tertarik.
Mikel

Jawaban:

34

Ada beberapa alat yang mampu menulis ke clipboard; Saya menggunakan xsel. Diperlukan bendera untuk menulis ke pemilihan X primer ( -p), pemilihan sekunder ( -s), atau clipboard ( -b). Lulus -iakan memberitahu itu untuk membaca dari stdin, jadi Anda ingin:

$ echo "Some Text" | xsel -i -b
Michael Mrozek
sumber
4
Satu lagi adalah xclip; itu menerima dari stdin secara default. Saya hanya menggunakannya karena itu adalah alat pertama yang saya pelajari.
Shawn J. Goff
@Shawn Posting sebagai jawaban yang terpisah :)
Michael Mrozek
Saya pikir -itidak diperlukan dalam kasus ini: man xsel1.2.0 mengatakan:and the selection is set from standard input if standard input is not a terminal (tty)
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
xsel tidak bekerja untuk saya (saya tidak tahu mengapa), tetapi xclip (sesuai jawaban lain)
markrian
11

Menggunakan xclip, seperti yang disarankan @Nicolas, jika Anda ingin menempelkan konten clipboard nanti, seperti menggunakan Ctrl + V, Anda dapat menggunakannya dengan cara ini:

$ echo "Some Text" | xclip -selection clipboard
danidemi
sumber
1
Bukan mencoba menghidupkan kembali pertanyaan lama, tetapi jika Anda malas maka itu akan echo "Some Text" | xclip -sel cberhasil juga.
anonim memilih
9

Anda bisa menggunakan xsel

xsel < file 
jamespo
sumber
10
Pertanyaannya adalah: Papan klip mana? Linux X server memiliki 3 (umumnya, hanya 2 yang digunakan) ... xsel menggunakan clipboard PRIMARY secara default .. Clipboard PRIMARY menendang secara otomatis setiap kali Anda memilih soemthing. Anda menempelkannya dengan menekan tombol tengah mouse .. Papan ketik Ctrl + C / Crtr + V disebut papan klip CLIPBOARD :) .. jadi jika Anda ingin menggunakan papan klip Ctrl + C / Ctrl + V dengan 'xsel', perintahnya adalah: xsel -ib <file-long-or-short("Lihat ma, tidak ada kucing!" :) ... atau jika Anda suka <file-long-or-short xsel -ib.. -i adalah default. -b adalah untuk tipe Ctrl + C / Ctrl + V clipBoard
Peter.O
terminal gnome. Diedit. @ jamespo - sepertinya ini tidak berhasil.
ripper234
bekerja untuk saya di gnome-terminal di ubuntu 10,04 menggunakan xsel di repo (tempel dengan tombol tengah)
jamespo
7

Di Mac OS X ada yang indah pbcopydan pbpasteperintah yang sangat membantu :)

cwd
sumber
0

Yang paling sederhana mungkin xclip:

$ echo "Some Text" | xclip

Kemudian tempel menggunakan tombol tengah mouse Anda.

Seperti xsel, biasanya tidak diinstal secara default, jadi Anda mungkin perlu menginstalnya ( sudo apt-get install xclipdi Debian / Ubuntu).

Nicolas Raoul
sumber
2
xclipmembutuhkan -selection clipboardopsi. Pilihan default per halaman manualnya adalah sesuatu yang lain.
Acumenus
0

xclipadalah cara yang baik untuk pergi seperti dijawab oleh @Nicolas Raoul tetapi ketika memipakan sesuatu yang berisi baris baru ke clipboard, seperti pwd, baris baru juga disalin. Dalam beberapa situasi mungkin diinginkan, tetapi kebanyakan orang tidak menginginkan baris baru.

Solusinya adalah:

echo -n $(pwd) | xclip -selection clipboard

( -nmenghapus baris baru dari argumen yang digaungkan)

atau:

printf %s $(pwd) | xclip -selection clipboard

The ""sekitar $(pwd)mungkin diperlukan tetapi bekerja dengan dan tanpa di ubuntu dengan bash.

calocedrus
sumber