Я запускаю следующую команду:
pkg_add emacs-23.4,2.tbz 2> output.log
Выход по-прежнему отображается в терминале. Когда я нажимаю ↑, я получаю
pkg_add emacs-23.4,2.tbz 2 > output.log
с пробелом перед2
.
Я изначально не ставил это. я пытаюсь
pkg_add emacs-23.4,2.tbz > output.log 2>&1
Опять же, когда я нажимаю ↑, пробелы были добавлены .
Почему это происходит со мной?
Я использую csh на FreeBSD.
command-line
freebsd
io-redirection
csh
gadgetmo
источник
источник
sh
.pkg_add
на FreeBSD, поэтому я предполагаю, что это для пользователя root (/ bin / csh по умолчанию для root во FreeBSD). В этом случае вам не следует менять оболочку на / usr / local / bin / bash. / bin / sh является приемлемым. Вы также можете просто переключиться на другую оболочку после входа в систему как root.Я не уверен, пытаетесь ли вы скрыть STDERR или перенаправить его на STDOUT.
Чтобы перенаправить STDOUT в файл:
Чтобы перенаправить STDOUT и STDERR в файл:
Чтобы перенаправить STDOUT в файл и скрыть STDERR:
Чтобы перенаправить STDOUT на консоль и скрыть STDERR:
Чтобы перенаправить STDOUT на консоль и STDERR в файл:
Чтобы перенаправить STDOUT в файл и STDERR в файл:
РЕДАКТИРОВАТЬ: Причина, почему это работает, в том, что действие в () происходит в первую очередь; Следовательно, если мы перенаправили STDOUT, он больше не будет доступен за пределами (). Это оставляет нам только STDERR, и тогда мы можем перенаправить его по желанию.
источник
Я знаю, как сделать это в Csh, но используя 2 оболочки:
Такой способ позволяет перенаправить только stderr в file.txt, без stdout, а именно то, что вы хотели.
источник