Я работаю в Ubuntu 14.04 и использую Gedit.
Теперь я имею ниже кода (работающий из меню "External Tools" в Gedit) для получения, Gedit в настоящее время открывал путь документа к буферу обмена.
echo -n $GEDIT_CURRENT_DOCUMENT_URI | xclip -sel clip;
Теперь я также хочу отобразить результат echo -n $GEDIT_CURRENT_DOCUMENT_URI
в окно вывода (с тем же оператором "эха"), наряду с копированием к буферу обмена.
Как я могу достигнуть этого?
Чтобы скопировать продукцию к клипборду, также производящему к текущему терминалу, Вы могли просто использовать tee
, который произведет stdin
к любому файлу, переданному к нему как аргумент и к stdout
; Вы можете использовать замену процесса, бегущую xclip
, чтобы «фальсифицировать» обычный файл и произвести к нему вместо к обычному файлу:
echo -n $GEDIT_CURRENT_DOCUMENT_URI | tee >(xclip -selection clipboard)
Другой выбор состоит в том, чтобы произвести к одному из свободных псевдотерминалов «по умолчанию» (tty1 к tty6), у которых есть correspodent файл устройства в «/dev» (»/dev/tty1» к «/dev/tty6»):
echo -n $GEDIT_CURRENT_DOCUMENT_URI | tee >(xclip -selection clipboard) >/dev/tty1
еще один выбор состоит в том, чтобы произвести к другому псевдотерминалу «слушания» использование названной трубы; это требует, чтобы установка установила терминал «слушания»:
Первый открытый терминал «слушания» и пробег этот сценарий (ради примера я предположу, что сценарий бежит в ~/tmp
):
#!/bin/bash
mkfifo fifo # creates a named pipe named "fifo" in the current working directory
trap 'rm fifo; exit 0' 1 2 3 13 15 # traps SIGHUP, SIGINT, SIGQUIT, SIGPIPE and SIGTERM; removes "fifo" and exits upon the reception of each of them
while [ 1 ]; do
cat fifo # outputs the content of "fifo"
done
Это создаст названную трубу, названную «первым прибыл, первым обслужен» в текущем рабочем справочнике, и будет непрерывно производить его содержание, пока выполнение сценария не будет остановлено;
Тогда использование Внешние Инструменты Джедита управляют этой измененной версией второй команды, которая вместо того, чтобы перенаправить продукцию к «/dev/tty1» перенаправляет его к названной трубе:
echo -n $GEDIT_CURRENT_DOCUMENT_URI | tee >(xclip -selection clipboard) >>~/tmp/fifo
Типовая продукция, используя два gnome-terminal
случаи:
Управление сценарием на правильном терминале
, Бегущем
echo -n $GEDIT_CURRENT_DOCUMENT_URI | tee >(xclip -selection clipboard) >>~/tmp/fifo
на левом терминале
, Совершающем нападки CTRL + ИЗМЕНЕНИЕ + V
У меня был похожий вопрос с собственным ответом, который был закрыт как дубликат этого вопроса. Тем не менее, это сильно отличается от принятого ответа здесь, поэтому я подумал, что это заслуживает публикации здесь.
xclip
xclip
позволяет сохранять выходные данные в буфер обмена. Чтобы установить его, используйте:
sudo apt update && sudo apt install xclip
Затем используйте его следующим образом:
$ ls -l | tee >(xclip -selection clipboard)
total 9788
-rw-rw-r-- 1 rick rick 9950180 Dec 12 09:13 QueryResults.csv
-rw-rw-r-- 1 rick rick 6491 Oct 31 12:18 StackQuery
-rwxrwxr-x 1 rick rick 55970 Dec 12 18:47 stack-to-blog.py
Вывод после команды ls
, появляющейся на вашем экране, также будет в буфере обмена, готовом к вставке в большинство приложений с помощью Ctrl+ Vили Меню Right-Click
, а затем опции Вставить
.
xclip
Если вы планируете использовать его более одного раза, необходимо создать псевдоним . Отредактируйте файл
~/.bashrc
и введите следующую строку:
alias clip="tee >(xclip -selection clipboard)"
Затем вместо ввода:
ls -l | tee >(xclip -selection clipboard)
Все, что вам нужно ввести, это:
ls -l | clip
ПРИМЕЧАНИЕ:После сохранения файла ~/.bashrc
он не готов к использованию до следующего перезапуска терминала или до тех пор, пока вы не освободите его с помощью команды . ~/.bashrc