Как настроить таргетинг на несколько вариантов с помощью xclip

11

При копировании текста в буфер обмена, xclip предоставляет несколько целей выбора:

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

Есть ли способ нацелить несколько вариантов?

Я пробовал следующие варианты

  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

но никто из них не работал.

Амелио Васкес-Рейна
источник

Ответы:

16

Я пробовал следующие варианты

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

Вы были там очень близко ...
Если вы используете -fпервую xclipкоманду, она напечатает текст обратно на стандартный вывод и вы можете передать его второй xclipкоманде:

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

От 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
источник
Спасибо! Я принимаю это решение, потому что: 1) оно сообщает об интересной функции xclip. 2) Это позволяет мне трубы xclipкомандам, что вполне удобно и 3) По какой - то причине, это единственный ответ до сих пор , что дает рабочий раствор в моих экспериментах для связывания copy-pipeв tmux(это то , что побудило этот вопрос)
Амелио Васкес-Рейн
2
Если ваш дистрибутив предоставляет xselальтернативу xclip, вы можете использовать echo 'Hello World' | xsel -i -p && xsel -o -p | xsel -i -b. Это немного отличается и менее эффективно, чем xclipиз-за xselотсутствия опции фильтра. Но если вы застряли, xselто это способ решить проблему.
starfry
5

Я не использую xclip, так что может быть способ сделать это изначально, о котором я не знаю. В любом случае, это должно работать, если ваша оболочка bash:

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

>()это форма процесса замещения. bashзаменяет каждый путь к дескриптору файла, который связан со стандартным вводом программы в круглых скобках.

Крис Даун
источник
Спасибо! Знаете ли вы, совместим ли этот синтаксис zshтоже?
Амелио Васкес-Рейна
@ user815423426 Насколько я знаю, да.
Крис Даун
Я проверил здесь на моем Zsh, и он работает как шарм!
SergioAraujo