У меня есть довольно длинные команды и пути к файлам, которые я скопировал в буфер обмена и должен выполнить в TTY, однако пути к файлам слишком длинные для перепечатки, и я хотел бы просто вставить их после $
( Я могу еще раз напечатать команды перед ними), есть ли способ сделать это?
Так что я хотел бы выполнить команду и получить ее на следующей строке, начиная с $
, поместить текст, скопированный в Буфер обмена выглядит так:
$ specialCommandToPasteText
$ pastedText
Я использую Ubuntu GNOME 16.04 с GNOME 3.20.
Это просто, но Вам нужен дополнительный инструмент.
Установите пакет xsel
который обеспечивает легкую команду для доступа к буферу обмена:
sudo apt-get install xsel
Узнайте который $DISPLAY
Ваш рабочий стол использует. Обычно это должно быть :0
, но можно проверить его путем выполнения этой команды в эмуляторе терминала на рабочем столе GUI:
echo $DISPLAY
Я предположу, что вывод :0
, замена, что с Вашей эффективной выходной мощностью в следующих командах, если это отличается.
Скопируйте команду, которую требуется выполнить в TTY, например, использующий Ctrl+C.
Переключитесь на TTY, который Вы хотите использовать, например, для TTY1 с помощью Ctrl+Alt+F1.
Войдите в систему путем ввода имени пользователя и пароля.
Введите полную команду, которую Вы хотите выполнить, но заменять часть Вы хотите вставить от буфера обмена с $(DISPLAY=:0 xsel -ob)
.
Например, при копировании большого списка пакетов для установки, Вы могли бы ввести это в TTY:
sudo apt-get update && sudo apt-get install $(DISPLAY=:0 xsel -ob)
Отрывок буфера обмена должен не обязательно быть в конце Вашей команды, хотя, это может появиться где угодно.
Для упрощения вещей далее давайте переместимся, это все еще немного усложнило DISPLAY=:0 xsel -ob
к сценарию. Я назову его PASTE
(потому что paste
уже взят), но можно также назвать его по-другому.
Создать файл сценария в месте, куда каждый пользователь может выполнить его, не имея необходимость указывать полный путь (я рекомендую /usr/local/bin
для этого) и сделать это исполняемым файлом, просто выполните те две команды:
( echo '#!/bin/bash' && echo 'DISPLAY=:0 xsel -ob' ) | sudo tee /usr/local/bin/PASTE
sudo chmod +x /usr/local/bin/PASTE
Теперь можно просто встроить $(PASTE)
в Ваши команды на TTY для вставки содержания буфера обмена от рабочего стола там.
Лично, я просто использую текстовые файлы:
В Вашей настольной среде, откройте терминал и
echo "whatever long text you have copied" > file
Спад до tty и
$(cat file)
Другое возможное обходное решение, не упомянутое выше, включает использование vim
, вставляя и работая :!unix_command
в командном режиме:
vim
, перейдите к командному режиму Esc , введите подсказку : тип Другой обходной путь с tmux, который не требует настройки:
Запустите tmux (откройте терминал и введите tmux
) в виртуальном «TTY» ( Ctrl + Alt + F2 для Ubuntu) и выполняйте свою общую работу.
Если вам нужно что-то вставить в сеанс терминала, просто откройте обычный настольный терминал ( Ctrl + Alt + T ) и введите tmux.
, затем используйте нажатия клавиш Ctrl + b , затем w , чтобы вывести список активных сеансов и найти тот, в который вы хотите вставить содержимое. После этого просто закройте терминал на рабочем столе, и вы можете продолжать использовать терминал «TTY», как если бы вы никогда его не покидали!