=?iso-8859-1?q?=5BComm=5D_=D0=C5=D2=C5=CE=C1=D0=D2=C1=D7=CC=C5=CE=C9=C5_?= =?iso-8859-1?q?=D7=D9=D7=CF=C4=C1_=D7_=CC=CF=C7?=

ASA =?iso-8859-1?q?llb_=CE=C1_udm=2Eru?=
Пт Окт 25 19:31:49 MSD 2002


Hello Sinom,

Friday, October 25, 2002, 8:09:08 PM, you wrote:

S> -----------------
S>   ls > dirlist 2>&1
S> перенаправляет оба стандартный вывод и стандартный поток ошибок в файл
S> "dirlist", тогда как команда 

S>   ls 2>&1 > dirlist

S> направляет только втандартный вывод в файл "dirlist", потому что
S> стандартный поток ошибок был дублирован как стандартный вывод перед
S> стандартным выводом был перенаправлен в "dirlist". 
S> ----------------- 

S> Перевести то я перевел, но понять не могу. :-( Пожалуйста, объясните ещё
S> раз, почему эти комманды приводят к различным результатам.
"комаанды", а не "комманды" (одно "м")

Сначала: bash, когда видит конструкцию N>&M, выполняет вызов
dup (т.е. копирование служебной информации об открытом файле).
А теперь посмотрим на это дело с точки зрения программы.
Как известно, имеются три стандартных файла: номер 0 -
стандартный ввод, номер 1 - стандартный вывод и номер 2 - вывод
ошибок.

сначала имеем
   0 < stdin
   1 > stdout
   2 > stderr
 ls >dirlist заставляет bash назначить файл номер 1 на вывод в
 файл dirlist.
   0 < stdin
   1 > "dirlist"
   2 > stderr
 Затем 2>&1 приводит к копированию в файл номер 2
 служебной информации об файле номер 1. То есть файл номер 2
 теперь тоже направлен в файл dirlist
   0 < stdin
   1 > "dirlist"
   2 > "dirlist" (скопировалось из 1)

 а теперь если ls 2>&1 то сначала в файл номер 2 скопируется
 информация о файле номер 1. То есть файл номер 2 будет
 перенаправен в стандартный вывод.
   0 < stdin
   1 > stdout
   2 > stdout  (скопировалось из 1)
 И после этого >dirlist назначит файл номер 1 на вывод в файл
 dirlist, но не затронет файл номер 2, который останется
 перенаправленным в стандартный выход.
   0 < stdin
   1 > "dirlist"
   2 > stdout

-- 
Best regards,
 ASA                            mailto:llb на udm.ru




Подробная информация о списке рассылки community