перенаправить STDERR в tcsh из .aliases
-
02-07-2019 - |
Вопрос
в tcsh я пытаюсь перенаправить STDERR из команды из моего файла .aliases.
Я обнаружил, что могу перенаправить STDERR из командной строки следующим образом...
$ (xemacs > /dev/tty) >& /dev/null
...но когда я помещаю это в свой файл .aliases, я получаю цикл псевдонимов...
$ cat .aliases
alias xemacs '(xemacs > /dev/tty ) >& /dev/null'
$ xemacs &
Alias loop.
$
...поэтому я поставил обратную косую черту перед командой в .aliases, что позволяет выполнить команду...
$ cat .aliases
alias xemacs '(\xemacs > /dev/tty ) >& /dev/null'
$ xemacs &
[1] 17295
$
...но теперь я не могу привести команде никаких аргументов:
$ xemacs foo.txt &
Badly placed ()'s.
[1] Done ( \xemacs > /dev/tty ) >& /dev/null
$
Кто-нибудь может предложить какие-либо решения?Заранее благодарю вас!
Обновить:Мне все еще любопытно, возможно ли перенаправить STDERR в tcsh из .aliases, но, как было предложено здесь, в итоге я получил сценарий оболочки:
#!/bin/sh
# wrapper script to suppress messages sent to STDERR on launch
# from the command line.
/usr/bin/xemacs "$@" 2>/dev/null
Решение
Я подозреваю, что это тот случай, когда лучшим вариантом является ОТКАЗ от использования псевдонима - попробуйте вместо этого использовать сценарий оболочки:
#!/bin/tcsh
(xemacs $* > /dev/tty ) >& /dev/null
Другие советы
Попробуй
alias emacs '(\emacs \!* > /dev/tty) >& /dev/null'
Сообщение "неправильно размещенный ()'s" появляется из-за неправильного размещения входного параметра в emacs.Без "\!*
" в определении псевдонима, "emacs abc
" становится
(/usr/bin/emacs > /dev/tty) >& /dev/null abc
С помощью "\!*
" включено",emacs abc
" становится
(/usr/bin/emacs abc > /dev/tty) >& /dev/null