Как передать содержимое буфера обмена в gnome-терминал?

У меня есть плагин, который генерирует и копирует в буфер обмена готовую к вставке команду. Сейчас я открываю новый терминал, вставляю команду и выполняю ее. Я хочу написать скрипт, который автоматически открывает новый терминал и запускает эту команду, используя буфер обмена в качестве входных данных.

Я пытался использовать xclip, но не могу понять, как передать его вывод в gnome-терминал, и все потоки, которые я видел, фокусируются на противоположной проблеме: сохранение вывода команды в буфер обмена, а это НЕ то, что я хочу делать.

Что я пробовал: xclip -se c -o | gnome-terminal -e

Он говорит: "Не удалось разобрать аргументы: отсутствует аргумент для -e". Так что, по крайней мере, у меня есть проблема с синтаксисом.

У меня есть ощущение, что я не могу подходить к этой проблеме правильным способом. Полный нуб здесь, так что чем больше деталей, тем лучше!

Спасибо!

1 ответ

Решение

Это похоже на gnome-terminal не может получить ввод из стандартного ввода, поэтому вы должны использовать подстановку команд:

gnome-terminal -e "$(xclip -se c -o)"

Кроме того, если вы хотите выполнить разбиение слов и глобализацию содержимого буфера обмена до его запуска, вы можете использовать это:

gnome-terminal -x $(xclip -se c -o)

Если вам нужно держать терминал открытым после завершения команды, вы можете использовать это:

gnome-terminal -x bash -c "$(xclip -se c -o); read -p 'Press Enter to close.'"

Или, если вы хотите перейти к интерактивной подсказке:

gnome-terminal -x bash -c "$(xclip -se c -o); bash"

Дополнительные идеи см. В разделе " Средство запуска для приложения терминала". Как сохранить терминал открытым после завершения программы?

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