Меня что-то беспокоит. Я хочу, чтобы перенаправить поток ошибок в позволяет говорить FD 5. Так что я выполнить следующую команду:Перенаправление stderr
[email protected]/home/me>$ exec &2>5
[1] 307
Так что я ожидаю, как результат этого Перенаправление, что теперь ошибки будут отправить Fd 5. Но это что происходит:
[email protected]/home/me>$ mkdir /a 5>/dev/null
mkdir: /a: [Permission denied]
На пороге отображается ошибка на стандартном выводе. В то время, когда я перенаправляю 2, он ничего не показывает:
[email protected]/home/me>$ mkdir /a 2>/dev/null
Может кто-нибудь объяснить, где я ошибаюсь?
Параметр 'exec' и' mkdir' независимые команды в оболочке. 'Exec' не перенаправляет' 2' на '5' для всех последующих команд (* i.e. *, эффект не является постоянным). См. Http://stackoverflow.com/questions/2821577/is-there-a-way-to-make-linux-cli-io-redirection-persistent. – lurker
Вы не хотите 'exec 2>/some/file' в интерактивной оболочке: приглашение bash напечатано на stderr –
, но как мне переименовать stderr 2? Если я хочу назвать его 5, как мне это сделать? – CuriousGuy