Разница между именем файла cat и именем файла cat ‹ в unix

Предположим, у меня есть файл с именем «file1». Я хочу отобразить содержимое «file1» с помощью команды cat в Unix.

И cat file1, и cat < file1 работают одинаково. В чем разница между ними?


person bvb    schedule 21.02.2014    source источник


Ответы (3)


Это то место, откуда поступает информация.

  • Если вы скажете cat file1, оболочка не сделает ничего особенного. cat вызывает open(2) файл и читает из него
  • Если вы говорите cat < file1, оболочка вызывает open(2) для файла и вызывает dup(2) в STDIN_FILENO для cat. cat только что прочитал из STDIN_FILENO
person cnicutar    schedule 21.02.2014
comment
Подскажите, пожалуйста, что это за open(2),dup(2),STDIN_FILENO? @cnicutar - person bvb; 21.02.2014
comment
Это системные вызовы, и они задокументированы на страницах руководства. ТАК, например, когда я говорю open(2), я имею в виду man 2 open, это ручная запись для open в разделе 2. - person cnicutar; 21.02.2014

Мы можем использовать другую команду, чтобы заметить разницу между:

wc –w food2.txt 

Возможный вывод:

6 food2.txt 

команда сообщает имя файла, так как оно известно (передается как аргумент).

wc –w < food2.txt 

Возможный вывод:

6 

стандартный ввод перенаправляется в файл food2.txt без ведома команды.

person user307770    schedule 10.09.2018

cat открывает файл, а cat > fileName указывает оболочке открыть файл в стандартном вводе cat.

Вот ссылка с более подробной информацией/ответом: https://unix.stackexchange.com/questions/258931/difference-between-cat-and-cat

person Mona Wade    schedule 08.12.2017