Otra posibilidad es usar command
para degradar exec
de una construcción especial a una construcción simple como:
alias shh='command exec >/dev/null 2>&1'
Entonces ahora puedes hacer:
(shh; call some process &)
Acabo de notar que command
no funciona zsh
(como parece hacerlo en la mayoría de los otros shells) , pero donde no funciona, puede hacerlo:
alias shh='eval "exec >/dev/null 2>&1"'
... que debería funcionar en todas partes.
De hecho, incluso podrías hacer:
alias shh='command exec >"${O:-/dev/null}" 2>&1'
Entonces podrías hacer:
O=./logfile; (shh;echo can anyone hear &)
O=; (shh; echo this\? &)
cat ./logfile
SALIDA
can anyone hear
Después de una discusión de comentarios con @ vinc17, vale la pena señalar que casi toda la salida de la consola de una aplicación GUI generalmente está destinada a X
su consola. Cuando ejecuta una X
aplicación desde un X
.desktop
archivo, la salida que genera se enruta a X
la terminal virtual, que es cualquier cosa desde la que se inició X
en primer lugar. Puedo abordar este número tty con $XDG_VTNR
.
Aunque parezca extraño, y tal vez porque recién comencé a usarlo startx
, parece que ya no puedo escribirle /dev/tty$XDG_VTNR
. Esto también puede (como creo que es más probable) tener algo que ver con el cambio muy reciente y drástico implementado con Xorg
v1.16 que le permite ejecutarse bajo una systemd
sesión de usuario en lugar de requerir privilegios de root .
Aún así, puedo hacer:
alias gui='command exec >/dev/tty$((1+$XDG_VTNR)) 2>&1'
(gui; some x app &)
Ahora toda some x app
la salida de la consola se enruta en /dev/tty$((1+$XDG_VTNR))
lugar de la de mi xterm
pty. Puedo obtener la última página de esto en cualquier momento como:
fmt </dev/vcs$((1+$XDG_VTNR))
Probablemente sea la mejor práctica dedicar algún terminal virtual para registrar la salida de todos modos. /dev/console
generalmente ya está reservado para esto, aunque es posible que prefiera no hacer lo chown
que es probable que tenga que escribir alegremente. Es posible que tenga alguna función que le permita hacer printk
, que básicamente es imprimir en/dev/console
, y, por lo tanto, podría usarlo de esa manera, supongo.
Otra forma de hacer esto sería dedicar una piedad a tales propósitos. Podría, por ejemplo, mantener una xterm
ventana abierta, guardar la salida de tty
cuando se ejecuta desde allí en una variable de entorno y usar ese valor como destino paragui
la salida de. De esa manera, todos los registros se enrutarían a una ventana de registro separada, que luego podría desplazarse si lo desea.
Una vez escribí una respuesta sobre cómo se podría hacer algo similar con la bash
historia, si estás interesado.