Отправка содержимого в буфер обмена с помощью Bash-скрипта

Если я сделаю echo foo | xclip -i в терминале, а затем Ctrl + V, я получаю foo,

Но вместо этого, если я напишу файл,

bar.sh

#!/bin/sh
echo bar | xclip -i

и беги ./bar.sh в терминале содержимое буфера обмена не становится "полосой", как я ожидал.

Зачем? И как мне сделать так?

Мне удалось сделать это, изменив линию echo bar | xclip -i в echo bar | xclip -selection c, но почему этот способ работает, а другой нет?

1 ответ

Решение

Когда вы используете команду

echo bar | xclip -i

xclip сохраняет текст в своем primary зарегистрироваться, которая доступна с помощью средней кнопки мыши. от man xclip

-подбор
укажите, какой выбор X использовать, параметры являются "первичными" для использования XA_PRIMARY (по умолчанию), "вторичными" для XA_SECONDARY или "буфером обмена" для XA_CLIPBOARD

Когда вы используете

echo bar | xclip -selection c

bar захватывается в Xclip's clipboard зарегистрироваться - наверное c это псевдоним для clipboard,
Это странно echo bar | xclip -i тогда команда Ctrl + v сработала - это не для меня. Интересно, был ли у вас foo в вашем буфере обмена от предыдущей команды?

Другие вопросы по тегам