Как скопировать стандартный вывод команды в буфер обмена при установке Ubuntu по умолчанию?

Я столкнулся с этим вопросом, и я нашел его довольно интересным.

Во время исследования этого я обнаружил, что решение было уже опубликовано здесь на AskUbuntu, плюс несколько раз на StackOverflow и на Unix & Linux, но все предоставленные решения включали использовать xclip или xsel, которые недоступны при установке по умолчанию Ubuntu (то есть, например, их нет в Live DVD).

Вопрос: Как скопировать стандартный вывод команды в буфер обмена при установке Ubuntu по умолчанию?

2
задан 13 April 2017 в 15:24

1 ответ

Скопируйте stdout в буфер обмена, не устанавливая дополнительное программное обеспечение

Хотя это казалось невозможным мне сначала (и это - что-то вроде обхода), это очень хорошо возможно без дополнительного программного обеспечения. Единственная необходимая вещь python, как он установлен от новой установки.

Это решение использование pythonспособность скопировать текст в буфер обмена и сделать это доступным для других приложений, как объяснено (a.o). здесь.

Конструкция

  • Первый шаг должен создать пустой текстовый файл, скажем, terminal_log.txt
  • Команда (команды), которые работают в терминале, сопровождается | tee /path/to/terminal_log.txt, например.

    pwd | tee /path/to/terminal_log.txt
    

    Вывод будет в терминале, а также записан в terminal_log.txt

  • Между тем, сценарий (см. ниже), выполнения в фоновом режиме, обнаруживая изменения в файле
  • Если файл будет изменен, то изменение будет скопировано в буфер обмена

Результат примера выше:

pwd | tee /path/to/terminal_log.txt

Если я открываюсь gedit и нажмите Ctrl+V

/home/jacob/Desktop

Как установить

  1. создайте пустое (журнал-) файл, terminal_log.txt
  2. Скопируйте сценарий ниже в пустой файл. В главном разделе, установленном путь к terminal_log.txt, сохраните его как read_output.py
  3. Запустите сценарий с команды

    python /path/to/read_output.py
    
  4. Выполненный в (другом) терминале Ваша команда, сопровождаемая:

    | мишень /path/to/terminal_log.txt

  5. Вывод Вашей команды копируется в буфер обмена

При использовании его часто Вы могли бы выполнить его как приложение запуска.

Сценарий

#!/usr/bin/env python
import pygtk
pygtk.require('2.0')
import gtk
import time

#--- enter the path to the log file below
f = "/path/to/terminal_log.txt"
#---

output1 = open(f).read().strip()

while True:
    time.sleep(1)
    output2 = open(f).read().strip()
    if output1 != output2:
        tx = output2.replace(output1, "")
        clipboard = gtk.clipboard_get()
        clipboard.set_text(tx)
        clipboard.store()
    output1 = output2



Дополнительная информация

command | tee /path/to/terminal_log.txt

Не скопирует stderr к буферу обмена. Скопировать обоих stdout и stderr к буферу обмена используйте:

command > >(tee /path/to/terminal_log.txt) 2> >(tee /path/to/terminal_log.txt >&2)

как объяснено здесь

3
ответ дан 13 April 2017 в 15:24

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

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