10

bash , похоже, не жалуется, если вы запускаете команду вроде

$ < some-file-that-exists

Кажется, ничего не происходит.

Вы также можете использовать

$ <<<"any string"

и даже процесс замены.

Так что именно это делает, и почему это разрешено. Может ли это быть полезным для чего-либо?

2 ответа2

19

< устанавливает перенаправление для команды, которая может происходить до или после инструкций перенаправления. Т.е.

$ < file wc

работает так же как

$ wc < file

Но если вы не даете команду, bash устанавливает перенаправление и больше ничего не делает. Для перенаправления ввода это равносильно тому, что вы видели, ничего, если файл существует и доступен для чтения. Если файл не существует или не читается, bash выдаст ошибку. Для перенаправления вывода, выходной файл будет создан, если он не существует. Любой существующий выходной файл будет усечен, если > используется; нет усечения, если >> используется.

5

<читает из стандартного ввода по умолчанию или из файла. ваше выражение ничего не делает с вводом, потому что вы ничего не делали после прочтения.

если вы в конце сделаете выходной файл <some-file-that-существующие>, то увидите, что вы только что прочитали содержимое первого файла и записали его во второй файл.

<<< здесь в формате doc, поэтому он читает из строки, а не из файла. кошка <<< "любая строка", чтобы увидеть, что вы прочитали.

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