Pregunta

en tcsh estoy intentando redireccionar STDERR desde un comando desde mi archivo .aliases.

Encontré que puedo redireccionar STDERR desde la línea de comandos de esta manera. . .

$ (xemacs > /dev/tty) >& /dev/null

. . . pero cuando pongo esto en mi archivo .aliases obtengo un bucle de alias. . .

$ cat .aliases
alias xemacs '(xemacs > /dev/tty ) >& /dev/null'
$ xemacs &
Alias loop.
$

. . . así que puse una barra invertida antes del comando en .aliases, lo que permite que se ejecute el comando. . .

$ cat .aliases
alias xemacs '(\xemacs > /dev/tty ) >& /dev/null'
$ xemacs &
[1] 17295
$ 

. . . pero ahora no puedo dar ningún argumento al comando:

$ xemacs foo.txt &
Badly placed ()'s.
[1]    Done                          ( \xemacs > /dev/tty ) >& /dev/null
$ 

¿Alguien puede ofrecer alguna solución? ¡Gracias de antemano!


ACTUALIZACIÓN: Sigo sintiendo curiosidad por la posibilidad de redireccionar STDERR en tcsh desde .aliases, pero como se sugirió aquí, terminé con un script de shell:

#!/bin/sh
# wrapper script to suppress messages sent to STDERR on launch
# from the command line.
/usr/bin/xemacs "$@" 2>/dev/null
¿Fue útil?

Solución

Sospecho que este es un caso en el que NO usar un alias es la mejor opción; intente usar un script de shell en su lugar:

#!/bin/tcsh

(xemacs $* > /dev/tty ) >& /dev/null

Otros consejos

Probar

alias emacs '(\emacs \!* > /dev/tty) >& /dev/null'

Las " mal colocadas () 's " el mensaje proviene de la ubicación incorrecta del parámetro de entrada en emacs. Sin el " \! * " en la definición de alias, " emacs abc " se convierte en

(/usr/bin/emacs > /dev/tty) >& /dev/null abc

Con el " \! * " incluido, " emacs abc " se convierte en

(/usr/bin/emacs abc > /dev/tty) >& /dev/null
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top