Что делает $ выражения (<“dir/файл”), означают в ударе?

Я собирался предложить, поскольку это сохраняет его на одной строке, хотя установка переменной отдельно позволяет Вам изменять его и повторно выполнять команду из истории довольно легко.

B="./make/this/path" && mkdir -p -- "$B" && touch -- "$B/file.txt"
5
29.11.2013, 01:12
1 ответ

Перенаправление <"dir/file" открывает файл для чтения на стандартном входе на время команды, к которой относится перенаправление. Когда нет никакой команды, файл открыт для чтения (который приводит к ошибке, если файл не существует или испытывает недостаток в верных полномочиях), но кроме которого перенаправление не имеет никакого эффекта.

Ksh добавил расширение, которое было принято ударом и ksh. Если замена команды содержит перенаправление ввода и ничто иное $(<"dir/file") (никакая команда, никакое другое перенаправление, никакое присвоение, и т.д.), затем команда susbtitution заменяется содержанием файла. Таким образом $(<"dir/file") эквивалентно $(cat "dir/file") (за исключением того, что это не звонит cat утилита, таким образом, это незначительно быстрее и делает то же самое даже если cat был заменен или не находится в пути поиска команды).

Это упоминается в руководстве удара под “заменой команды”.

11
27.01.2020, 20:34

Теги

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