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
Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top