Tras comerme un poco la cabeza pensé este sencillo script para bash, que permite ejecutar un comando en un terminal, y simultáneamente redirigir la salida a otro. Lo he llamado execmon.bash. En principio lo pensé para ejecutar tareas como "emerge -up world" y cosas así, pero posteriormente jugando un poco con él, he descubierto que funciona con todos los programas de consola, incluidos los editores. Por ejemplo haciendo
execmon.bash 'nano hola.txt' 5abrimos un editor y tanto la salida como el texto que vayamos introduciendo se redirigirá al terminal virtual número 5.
Los terminales virtuales disponibles se pueden ver haciendo:
ls /dev/pts. Cada terminal virtual lleva asociado un número.
Lo he probado con el terminal normal, con konsole y xterm y funciona bien.
Para probarlo basta con crear el fichero execmon.bash y pegar el contenido que adjunto a continuación:
#! /bin/bash
#execmon.bash
#Script para ejecutar un comando en un terminal y mostrar la salida
#en el terminal usado y en otro adicional.
#Publicado por airon, http://webpacifica.blogspot.com
param=$#
if [ $param -eq 2 ]; then
echo $1 | tee a.out && cat a.out > /dev/pts/$2 && exec `cat a.out` | tee /dev/pts/$2 && rm a.out
else
echo "Modo de uso:"
echo "execmon 'comando' num"
echo " -comando es el comando a ejecutar (hay que introducir las ')"
echo " -num es el número de la consola virtual a la que dirigir la salida"
fi
Ejemplo de utlización:
execmon.bash 'ls -l' 5
execmon.bash 'nano hola.txt' 5
3 comentarios:
y como se haria para desde un terminal /dev/pts/$1 ejecutar comandos en otro terminal /dev/pts/$2
Un comando rápido para hacer lo mismo
script /dev/pts/x
Dónde x es el terminal correspondiente
SaluditosASB
Buen apunte. Desconocía totalmente la existencia de ese comando, que realmente facilita la vida. Gracias ;).
Publicar un comentario