2

Я привык указывать перенаправление вывода в конце строки, например:

echo blah > output.txt

И в Windows, и в * nix.

В последнее время я вижу все больше и больше примеров, которые перенаправляют в начале строки, например:

> output.txt echo blah

Опять же, это похоже на работу как на Windows, так и * nix.

Есть ли какое-то преимущество, чтобы перенаправить вывод в начале строки? Он ведет себя идентично перенаправлению в конце строки или есть какая-то разница? Почему там даже два варианта?

2 ответа2

3

Для таких простых примеров не имеет значения, где происходит перенаправление. Это выбор стиля кодирования здесь. Руководство Bash гласит:

Операторы перенаправления (...) могут предшествовать или появляться в любом месте простой команды или могут следовать за командой.

Что такое простая команда?

Простая команда - это команда, с которой чаще всего сталкиваются. Это просто последовательность слов, разделенных пробелами, оканчивающихся одним из управляющих операторов оболочки (см. Определения). Первое слово обычно определяет команду, которая должна быть выполнена, а остальные слова являются аргументами этой команды.

Порядок команд перенаправления имеет значение, когда их больше одного, очевидно.

1

Предположим, вы хотите записать count: 1 в файл.

Для Windows, echo count: 1>file.txt запишет count : в файл (без 1), потому что 1 интерпретируется как stdout. Вы можете использовать echo count: 1 >file.txt , но тогда есть нежелательный завершающий пробел. Размещение перенаправления на передней панели позволяет избежать проблемы: >file.txt echo count: 1 .

Не уверен, относится ли это также и к 'nix, но я подозреваю, что это так.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .