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

19

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

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

$ specialCommandToPasteText
$ pastedText

Я запускаю Ubuntu GNOME 16.04 с GNOME 3.20.

    
задан Paranoid Panda 19.06.2016 в 15:28
источник

3 ответа

27

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

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

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

    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/bin/PASTE

Теперь вы можете просто вставить $(PASTE) в свои команды в TTY, чтобы вставить содержимое буфера обмена с вашего рабочего стола.

    
ответ дан Byte Commander 19.06.2016 в 15:46
источник
18

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

  1. В среде рабочего стола откройте терминал и

    echo "whatever long text you have copied" > file
    
  2. Перейдите к tty и

    $(cat file)
    
ответ дан terdon 19.06.2016 в 16:14
4

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

  1. скопировать команды и путь в буфер обмена
  2. откройте vim , перейдите в командный режим Esc , введите приглашение :
  3. введите bang ! , а затем вставьте Ctrl + Shift + V команду, которую вы предварительно скопировали в запрос и выполнение
ответ дан Marcellinov 19.06.2016 в 16:12