Как вставить команды в TTY?

У меня есть довольно длинные команды и пути к файлам, которые я скопировал в буфер обмена и должен выполнить в TTY, однако пути к файлам слишком длинные для перепечатки, и я хотел бы просто вставить их после $ ( Я могу еще раз напечатать команды перед ними), есть ли способ сделать это?

Так что я хотел бы выполнить команду и получить ее на следующей строке, начиная с $, поместить текст, скопированный в Буфер обмена выглядит так:

$ specialCommandToPasteText
$ pastedText

Я использую Ubuntu GNOME 16.04 с GNOME 3.20.

20
задан 19 June 2016 в 16:28

4 ответа

Это просто, но Вам нужен дополнительный инструмент.

  1. Установите пакет xsel который обеспечивает легкую команду для доступа к буферу обмена:

    sudo apt-get install xsel
    
  2. Узнайте который $DISPLAY Ваш рабочий стол использует. Обычно это должно быть :0, но можно проверить его путем выполнения этой команды в эмуляторе терминала на рабочем столе GUI:

    echo $DISPLAY
    

    Я предположу, что вывод :0, замена, что с Вашей эффективной выходной мощностью в следующих командах, если это отличается.

  3. Скопируйте команду, которую требуется выполнить в TTY, например, использующий Ctrl+C.

  4. Переключитесь на TTY, который Вы хотите использовать, например, для TTY1 с помощью Ctrl+Alt+F1.
    Войдите в систему путем ввода имени пользователя и пароля.

  5. Введите полную команду, которую Вы хотите выполнить, но заменять часть Вы хотите вставить от буфера обмена с $(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 для вставки содержания буфера обмена от рабочего стола там.

28
ответ дан 20 June 2016 в 02:28

Лично, я просто использую текстовые файлы:

  1. В Вашей настольной среде, откройте терминал и

    echo "whatever long text you have copied" > file
    
  2. Спад до tty и

    $(cat file)
    
20
ответ дан 20 June 2016 в 02:28
  • 1
    Система изменяет его для укоренения на перезагрузке – Walter M Green III 7 November 2017 в 03:49

Другое возможное обходное решение, не упомянутое выше, включает использование vim, вставляя и работая :!unix_command в командном режиме:

  1. копируют команды, и путь к буферу обмена
  2. открывают vim, перейдите к командному режиму Esc , введите подсказку : тип
  3. удар ! и затем вставляют Ctrl + Сдвиг + V команда, которую Вы ранее скопировали в подсказке, и выполнитесь
4
ответ дан 20 June 2016 в 02:28
  • 1
    sudo, показанный mysql:mysql mysqld владение изменений, но на перезагрузке система, возвращает его для укоренения. Я пытался изменить полномочия (chmod) все еще никакой mysql.socket – Walter M Green III 7 November 2017 в 03:59

Другой обходной путь с tmux, который не требует настройки:

Запустите tmux (откройте терминал и введите tmux ) в виртуальном «TTY» ( Ctrl + Alt + F2 для Ubuntu) и выполняйте свою общую работу.

Если вам нужно что-то вставить в сеанс терминала, просто откройте обычный настольный терминал ( Ctrl + Alt + T ) и введите tmux. , затем используйте нажатия клавиш Ctrl + b , затем w , чтобы вывести список активных сеансов и найти тот, в который вы хотите вставить содержимое. После этого просто закройте терминал на рабочем столе, и вы можете продолжать использовать терминал «TTY», как если бы вы никогда его не покидали!

2
ответ дан 7 March 2020 в 05:27

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

Похожие вопросы: