Как передать вывод программы в редакторе? - PullRequest
13 голосов
/ 05 октября 2010

У меня есть программа, генерирующая некоторые данные.Он выводит все при стандартной ошибке.

Теперь я хотел бы перенаправить вывод во вновь запущенный текстовый редактор в главное безымянное окно редактирования, которое отображается при запуске.Я пытался с vim и gedit безуспешно.

myprogram | gedit
myprogram | gvim

Кто-нибудь знает о текстовом редакторе X11, который бы поддерживал это?

Ответы [ 5 ]

19 голосов
/ 05 октября 2010

Если вы хотите перенаправить stderr вашей программы на gvim, вы можете сделать:

myprogram 2>&1 | gvim -

и в случае, если вы хотите перенаправить stdout в редактор, вы можете сделать:

myprogram| gvim -
8 голосов
/ 26 февраля 2013

Я пробовал это в Ubuntu 12.04, он работает как нужно:

sudo lshw | gedit &

В Ubuntu 14.04

sudo lshw | gedit - &

Dimitry K добавлено в Янв22 '16 в 19: 00 следующее

Я думаю, что вам все еще нужна тире после:

gedit sudo lshw | gedit - & 

(пробовал Ubuntu 14.04 и работает только с тире) -

5 голосов
/ 03 мая 2013

Чтобы сделать все это в одной строке с любым редактором, создайте временный файл, откройте его с помощью gedit, затем удалите его, как только gedit откроет его:

echo hello > temp ; gedit temp ; sleep 1 && rm temp &

Следующееработает с редактором, таким как vim, но gedit, geany или emacs не могут открыть стандартные входные или временные файлы, созданные <() </p>

vi <( echo hello )

echo hello | vi -

2 голосов
/ 05 октября 2010

Я не знаю ни одного редактора, поддерживающего это, но перенаправление во временный файл может быть проще.

F=$(mktemp)
myprogram >$F
gedit $F
rm $F
1 голос
/ 31 июля 2016
history | kate -i

мой любимый редактор: -)

Как уже говорилось, когда программа не поддерживает такой конвейер, лучшим способом является использование временного файла в каталоге / tmp /, который обычно удаляется при следующей загрузке.

history > /tmp/bflmpsvz;mcedit /tmp/bflmpsvz
...