Вопрос

в 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top