Intereting Posts

cat дает разную ошибку при открытии несуществующего файла

Обе следующие команды пытаются открыть несуществующий файл foo , но сообщения об ошибках немного отличаются. Что может быть причиной?

 $ cat foo cat: cannot open foo $ cat < foo -bash: foo: No such file or directory 

 cat foo 

Это запускает команду cat с аргументом foo . Ошибка, выводимая на экран, полностью зависит от того, что было определено программистом команды.

 cat < foo 

Это передает содержимое файла foo команде cat , используя перенаправление stdin Bash . Если файл не существует, то Bash жалуется на него.

В $ cat foo оболочка (здесь bash) выполняет команду cat и передает параметр foo . Программа cat выбирает интерпретацию этого параметра как имя файла – и пытается открыть файл. Ошибка, которую вы видите, из программы cat, которая (естественно) не может открыть файл.

Версия $ cat < foo – это перенаправление, которое обрабатывается оболочкой. < – оператор оболочки, который инструктирует оболочку открыть файл и перенаправить его на stdin. Файл не существует, поэтому вы получаете «Нет такого файла». На этот раз ошибка исходит от оболочки (bash) и выглядит немного иначе.

Вот почему вы видите две разные ошибки. Причина одна и та же – но это из двух разных программ (cat и bash).