Почему перенаправление не производит от работы nginx?

Я хочу перечислить все модули nginx сервера с методической точностью, таким образом, я ввожу следующее:

nginx -V | tr -- - '\n'

Но это не помещает модули в строки. Если я делаю это как это:

2>&1 nginx -V | tr -- - '\n'

работает. Но почему?

1
задан 8 November 2014 в 16:36

1 ответ

То, что Вы наблюдаете, указывает на это nginx -V пишет его вывод в поток стандартной погрешности (иначе stderr - на дескрипторе файла 2) вместо потока стандартного вывода (иначе stdout - дескриптор файла 1). Только stdout проходится канал | так Ваш tr команда не получает его.

2>&1 синтаксис говорит оболочке перенаправлять stderr кому: stdout так, чтобы это затем было передано по каналу к tr. К вашему сведению размещение, которое Вы использовали, является синтаксически законным, но нетрадиционным - чаще всего, такое перенаправление было бы записано как

nginx -V 2>&1 | tr -- - '\n'

BTW канал | действительно перенаправляет вывод первой команды, а не вход второго, которое прибывает из стандартного входного потока (stdin - дескриптор файла 0) как обычно.

3
ответ дан 10 November 2019 в 19:21

Другие вопросы по тегам:

Похожие вопросы: