STDERR redirecionamento no tcsh de .aliases
-
02-07-2019 - |
Pergunta
em tcsh Eu estou tentando redirecionar STDERR de um comando do meu arquivo .aliases.
eu descobri que eu pode redirecionar STDERR partir da linha de comando como este. . .
$ (xemacs > /dev/tty) >& /dev/null
. . . mas quando eu colocar isso em meus .aliases arquivo eu recebo um loop alias. . .
$ cat .aliases
alias xemacs '(xemacs > /dev/tty ) >& /dev/null'
$ xemacs &
Alias loop.
$
. . . por isso eu coloquei uma barra invertida antes do comando em .aliases, que permite que o comando seja executado. . .
$ cat .aliases
alias xemacs '(\xemacs > /dev/tty ) >& /dev/null'
$ xemacs &
[1] 17295
$
. . . mas agora eu não posso dar o comando quaisquer argumentos:
$ xemacs foo.txt &
Badly placed ()'s.
[1] Done ( \xemacs > /dev/tty ) >& /dev/null
$
Alguém pode oferecer alguma solução? Agradecemos antecipadamente!
UPDATE: eu ainda estou curioso para saber se é possível redirecionar STDERR em tcsh de .aliases, mas como foi sugerido aqui, acabei com um shell script:
#!/bin/sh
# wrapper script to suppress messages sent to STDERR on launch
# from the command line.
/usr/bin/xemacs "$@" 2>/dev/null
Solução
Eu suspeito que este é um caso em que não usar um alias é a melhor opção - tente usar um script shell em vez disso:
#!/bin/tcsh
(xemacs $* > /dev/tty ) >& /dev/null
Outras dicas
Tente
alias emacs '(\emacs \!* > /dev/tty) >& /dev/null'
O "mal colocado () 's" mensagem vem de extravio do parâmetro de entrada para emacs. Sem o "\!*
" na definição de alias, "emacs abc
" se torna
(/usr/bin/emacs > /dev/tty) >& /dev/null abc
Com o "\!*
" incluído "emacs abc
" se torna
(/usr/bin/emacs abc > /dev/tty) >& /dev/null