Cara menargetkan beberapa pilihan dengan xclip

11

Saat menyalin teks ke clipboard, xclip menyediakan beberapa target pilihan:

 -selection
    specify which X selection to use, options are:
    "primary" to use XA_PRIMARY (default), 
    "secondary" for XA_SECONDARY 
    "clipboard" for XA_CLIPBOARD

Apakah ada cara untuk menargetkan banyak pilihan?

Saya sudah mencoba opsi berikut

  1. echo "Hello world" | xclip -i -selection primary -selection clipboard
  2. echo "Hello world" | xclip -i selection primary | xclip -i selection clipboard
  3. echo "Hello world" | xclip -i selection primary,clipboard

tetapi tidak satupun dari mereka yang bekerja.

Amelio Vazquez-Reina
sumber

Jawaban:

16

Saya sudah mencoba opsi berikut

echo "Hello world" | xclip -i selection primary | xclip -i selection clipboard  

Anda benar-benar dekat di sana ...
Jika Anda menggunakan -fdengan xclipperintah pertama itu akan mencetak teks kembali ke stdout dan Anda dapat mengirimkannya ke xclipperintah kedua :

echo "Hello World" | xclip -i -sel p -f | xclip -i -sel c

Dari man xclip:

-f, -filter
            when xclip is invoked in the in mode with output level set to
            silent (the defaults), the filter option will cause xclip to print
            the text piped to standard in back to standard out unmodified
don_crissti
sumber
Terima kasih! Saya menerima solusi ini karena: 1) Memberitahu tentang fitur xclip yang menarik. 2) Hal ini memungkinkan saya untuk pipa xclipperintah yang cukup nyaman dan 3) Untuk beberapa alasan aneh, itu satu-satunya jawaban sejauh yang memberikan solusi bekerja dalam percobaan saya untuk mengikat copy-pipedalam tmux(ini adalah apa yang diminta pertanyaan ini)
Amelio Vazquez-Reina
2
Jika distro Anda menyediakan xsel, sebagai alternatif xclip, Anda dapat menggunakan echo 'Hello World' | xsel -i -p && xsel -o -p | xsel -i -b. Ini sedikit berbeda dan kurang efisien daripada xclipkarena xseltidak memiliki opsi filter. Tetapi jika Anda terjebak dengan xselmaka ini adalah cara untuk menyelesaikan masalah.
starfry
5

Saya tidak menggunakan xclip, jadi mungkin ada cara untuk melakukan ini secara native yang saya tidak sadari. Bagaimanapun, ini seharusnya berfungsi dengan asumsi shell Anda adalah bash:

echo "Hello world" | tee >(xclip -i -selection primary) >(xclip -i -selection clipboard) >/dev/null

>()adalah bentuk proses substitusi. bashmengganti masing-masing dengan path ke deskriptor file yang terhubung ke input standar program dalam tanda kurung.

Chris Down
sumber
Terima kasih! Apakah Anda tahu apakah sintaksinya juga kompatibel zsh?
Amelio Vazquez-Reina
@ user815423426 Sejauh yang saya tahu, ya.
Chris Down
Saya telah menguji di sini pada zsh saya dan itu berfungsi seperti pesona!
SergioAraujo