Особенности перенаправления в bash

Как оказалось, в bash порядок указания перенаправлений имеет значение.

Рассмотри две команды:

a.out > outfile 2&>1
a.out 2&>1 > outfile

Кажется, что делают они одно и тоже, но это не так.

В первом случае в файл outfile перенаправляется stderr и stdout. А во втором случае в outfile окажется  только stdout.

Попытаюсь объяснить почему.

В певом варианте, stdout  перенаправляется в файл, а затем stderr перенаправляется  туда же куда направлен stdout (то есть в файл).

Во втором случает, сначала stderr перенаправляется туда  куда направлен stdout (например, в консоль), а после этого  stdout перенаправляется в файл. То есть стандартный поток ошибок был перенаправлен туда же, куда и стандартный выходной поток до его перенаправления в файл outfile.

 

 

 

Запись опубликована в рубрике Использование linux с метками , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован.

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>