Я думаю, что это своего рода перенаправление io, но оно выглядит иначе, чем в примерах из руководство. Обычно мы можем перенаправить стандартный вывод скрипта с помощью следующей строки:
exec 1> /var/log/a.log
Но я видел эту строку в одном из скриптов:
exec &> /var/log/a.log
Что здесь означает '&'? Это и stdout, и stderr?
Спасибо, log »в сценарии оболочки? Я думаю, что это своего рода перенаправление io, но оно отличается от примеров из руководства. Обычно мы можем перенаправить stdout скрипта следующей строкой: exec 1> /var/log/a.log Но я видел ...
Я думаю, что это своего рода перенаправление io, но оно выглядит иначе, чем в примерах из руководство. Обычно мы можем перенаправить стандартный вывод скрипта с помощью следующей строки:
exec 1> /var/log/a.log
Но я видел эту строку в одном из скриптов:
exec &> /var/log/a.log
Что здесь означает '&'? Это и stdout, и stderr?
Спасибо, log »в сценарии оболочки? Я думаю, что это своего рода перенаправление io, но оно отличается от примеров из руководства. Обычно мы можем перенаправить stdout скрипта следующей строкой: exec 1> /var/log/a.log Но я видел ...
Я думаю, что это своего рода перенаправление io, но оно выглядит иначе, чем в примерах из руководство. Обычно мы можем перенаправить стандартный вывод скрипта с помощью следующей строки:
exec 1> /var/log/a.log
Но я видел эту строку в одном из скриптов:
exec &> /var/log/a.log
Что здесь означает '&'? Это и stdout, и stderr?
Спасибо, мы можем перенаправить стандартный вывод сценария с помощью следующей строки:
exec 1> /var/log/a.log
Но я видел эту строку в одном из сценариев:
exec &> /var/log/a.log
Что здесь означает '&'? Это и stdout, и stderr?
Спасибо, мы можем перенаправить стандартный вывод сценария с помощью следующей строки:
exec 1> /var/log/a.log
Но я видел эту строку в одном из сценариев:
exec &> /var/log/a.log
Что здесь означает '&'? Это и stdout, и stderr?
Спасибо, Джеймс
Ваше предположение верно.
exec> filename
команда перенаправляет stdout
в указанный файл. Это отправляет весь вывод команды, который обычно идет на stdout
, в этот файл. command &> filename
перенаправляет как stdout
, так и stderr
из команды в имя файла. Фактически, команда &> файл
является другой формой команда> файл 2> & 1
(недоступно в Bourne Shell до версии 4, окончательный выпуск, или в стандартной оболочке Debian Almquist shell, используемой в Debian / Ubuntu):
Что делает символы и
? Очень хорошо объяснено здесь :
В оболочках, производных от csh (оболочка C), синтаксис вместо этого добавляет символ
&
(амперсанд) для символов перенаправления, таким образом достигая аналогичный результат. Причина в том, чтобы различать файл с именем '1' и стандартным выводом, то естьфайл cat 2> 1
vsфайл cat 2> & 1
. в в первом случае stderr перенаправляется в файл с именем '1' и в во-вторых, stderr перенаправляется на stdout.
Подробнее о перенаправлении ввода-вывода можно узнать здесь:
http://www.tldp.org/LDP/abs/html/io-redirection.html
http: / /www.tldp.org/LDP/intro-linux/html/sect_05_02.html#sect_05_02_01