2010-10-05 18 views
11

Tengo mi programa generando algunos datos. Emite todo en el error estándar.¿Cómo canalizar la salida del programa en un editor?

Ahora me gustaría redirigir la salida a un editor de texto recién iniciado, a la ventana principal de edición sin nombre que se muestra al inicio. Intenté con vim y gedit sin éxito.

myprogram | gedit 
myprogram | gvim 

¿Alguien sabe acerca de un editor de texto X11 que apoyaría esto?

Respuesta

16

Si desea redirigir stderr de su programa para gvim que puede hacer:

myprogram 2>&1 | gvim - 

y en caso si desea redirigir la stdout al editor que puede hacer:

myprogram| gvim - 
+1

Sí, '-' se encuentra en muchos programas para STDIN/STDOUT en lugar de un archivo. – eumiro

+0

Ni siquiera es 'stderr' lo que quiero. Simplemente 'stdout'. ¿Cómo es posible que no haya pensado en usar el archivo '-'! La respuesta es simplemente 'myprogram | gvim -'. –

2

No conozco ningún editor que admita esto, pero redirigir a un archivo temporal puede ser más fácil.

F=$(mktemp) 
myprogram >$F 
gedit $F 
rm $F 
8

Probé esto en Ubuntu 12.04, funciona como desee:

sudo lshw | gedit & 

En Ubuntu 14,04

sudo lshw | gedit - & 
+0

Información adicional: esta es una nueva característica en Gedit. Fue introducido en la versión que vino con Gnome 3.0. Ver https://bugzilla.gnome.org/show_bug.cgi?id=121891. – Lii

+2

Creo que todavía necesita guión después de gedit 'sudo lshw | gedit - & '(probado ubuntu 14.04 y solo con dash funciona) –

5

Para hacer todo esto en una línea con cualquier editor, crear un archivo temporal, abrirlo con gedit, a continuación, elimine una vez gedit tiene abierto:

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

Los siguientes obras con un editor como vim, pero gedit, geany o emacs parecen ser incapaces de abrir los archivos de entrada o temporales como estándar creado por <()

vi <(echo hello)

echo hello | vi -

1
history | kate -i 

mi editor favorito :-)

Como ya se ha dicho, cuando un programa no admite tales tuberías, la mejor manera es utilizar un archivo temporal en el directorio/tmp/que generalmente se elimina en el siguiente inicio.

history > /tmp/bflmpsvz;mcedit /tmp/bflmpsvz 
Cuestiones relacionadas