Просмотр, перенаправление и сложение файлов с помощью cat

В Red Hat Linux есть утилита, помогающая вам сохранять короткие списки, собирать их вместе и, тем самым показывающая часть мощи вашей системы.

Эта утилита называется cat, что является сокращением от "concatenate" (конкатенация), и используется для склеивания файлов.

Команда cat также может вывести содержимое всего файла на экран (например, введите cat filename.txt). Удобно использовать cat, если файл сравнительно небольшой. Но если файл велик, он будет быстро прокручиваться на экране, так как cat выводит файл целиком.

Тем не менее cat поможет продемонстрировать два важных понятия: устройства стандартного ввода и стандартного вывода.

Устройства стандартного ввода и вывода направляет ввод и вывод (часто также называемые I/O) к пользователю. Если программа читает с устройства стандартного ввода, по умолчанию она будет получать информацию, вводимую с клавиатуры. Если программа выводит в устройство стандартного вывода, по умолчанию, эта информация будет выведена на экран.

Запустите cat чтобы понять что это значит. В приглашении командной строки, введите:

cat

Курсор перемещается в пустую строку Теперь введите в этой строке:

stop by sneaker store

и нажмите клавишу [Enter]. Ваш экран будет выглядеть так:

[newuser@localhost newuser]$ cat
stop by sneaker store
stop by sneaker store

Рисунок 10-7. cat демонстрирует устройства стандартного ввода и вывода

Чтобы выйти из программы cat переместите курсор на пустую строку, нажав [Enter]. Затем нажмите [Ctrl]-[D].

Команда cat только что показала определение стандартного ввода и стандартного вывода; вы вводили слова (стандартный ввод) и они появлялись на экране (стандартный вывод).

Использование перенаправления

Под перенаправлением понимается указание оболочке изменить то, что является стандартным вводом или стандартным выводом.

Вы до этого использовали команду cat чтобы понять идею стандартного ввода и вывода. Теперь примените команду cat чтобы узнать как перенаправляется стандартный вывод.

Чтобы перенаправить стандартный вывод используйте символ >. Поместив > после команды cat (или после имени любой утилиты или приложения, пишущего в стандартный вывод), вы перенаправите вывод в файл, указанный после этого символа.

Попробуйте его. Введите в приглашении оболочки:

[newuser@localhost newuser]$ cat > sneakers.txt
buy some sneakers
then go to the coffee shop
then buy some coffee

Рисунок 10-8. Перенаправления вывода в файл

Теперь нажмите [Enter] чтобы перейти на пустую строку и нажмите [Ctrl]-[D] чтобы выйти из cat.

Заметили разницу (смотрите Рисунок 10-8)? Заметно одно отличие - строки не повторяются. Так получилось потому что стандартный вывод команды cat был перенаправлен. Было выполнено перенаправление в новый файл, названный sneakers.txt.

Вы можете найти этот файл в каталоге, в котором вы запускали cat(введите ls, если вы хотите увидеть его на экране).

Вы можете использовать cat также и для просмотра этого файла, выполнив:

cat sneakers.txt

в приглашении оболочки.

ВниманиеНе заменяйте файлы
 

Будьте осторожны, когда вы перенаправляете вывод в файл, так как может быть легко переписан существующий файл! Убедитесь в том, что в текущем каталоге нет файла с таким именем, конечно, если только вы не решили заменить его.

Попробуйте перенаправить в другой файл и назовите его home.txt. Введите следующую команду:

[newuser@localhost newuser]$ cat > home.txt
bring the coffee home
take off shoes
put on sneakers
make some coffee
relax!

Теперь, в пустой строке снова нажмите [Ctrl]-[D] чтобы выйти из cat.

Вы также можете проверить содержимое файла, выполнив:

cat home.txt

в приглашении оболочки.

Снова воспользуйтесь командой cat чтобы объединить файлы home.txt и sneakers.txt, и направить вывод из этих файлов в новый файл, названный saturday (вы найдете пример этого на Рисунке 10-9). Введите следующую команду:

[newuser@localhost newuser]$ cat sneakers.txt home.txt > saturday

Рисунок 10-9. Объединение файлов и перенаправление вывода

Теперь пора проверить что же было сделано. Введите:

[newuser@localhost newuser]$ cat saturday

и вы должны увидеть что-то подобное:

[newuser @localhost newuser]$ cat saturday
buy some sneakers
then go to the coffee shop
then buy some coffee
bring the coffee home
take off shoes
put on sneakers
make some coffee
relax!
[newuser @localhost newuser]$

Вы видите, что команда cat добавила файл home.txt в конец файла sneakers.txt.

ПодсказкаОбъединение файлов с помощью cat
 

Создание и объединение небольших файлов при помощи cat может быть удобной альтернативой использованию текстового редактора, например Pico.

Добавление в устройство стандартного вывода

Вы можете использовать перенаправление вывода чтобы дописать новую информацию в конец существующего файла. Также как и с символом > , вы указываете оболочке отправить информацию не на устройство стандартного вывода.

Однако, указав >>, вы будете добавлять информацию к существующей, а не заменять её.

Лучшее объяснение это демонстрация, поэтому возьмите два уже созданных файла — sneakers.txt и home.txt — и объедините их воспользовавшись символом добавления в устройство вывода. Если вы хотите добавить информацию из файла home.txt к информации в файле sneakers.txt, введите:

cat home.txt >> sneakers.txt

Затем просмотрите файл выполнив:

cat sneakers.txt

Вот и требуемый результат, содержимое файла home.txt оказалось в конце.

Введенная вами команда, указала системе "добавить выведенный файл home.txt в файл sneakers.txt."

Добавляя в устройство вывода, вы сократите одно или два своих действия (и сохраните порядок на диске), используя существующие файлы, а не создавая новые.

Теперь сравните получившиеся файлы sneakers.txt и saturday, и вы увидите, что они идентичны. Чтобы выполнить сравнение введите:

cat sneakers.txt; cat saturday

На экране отображается содержимое этих файлов — сначала sneakers.txt, затем saturday (как показано на Рисунке 10-10).

ВниманиеНе замените вместо добавления
 

Помните, для добавления информации в устройство вывода, вы должны указать два знака "больше" (>>). Иначе, будет выполняться замена файла, в который вы хотите добавить добавить информацию!

Рисунок 10-10. Соединение команд и сравнение файлов

Перенаправление устройства стандартного ввода

Вы можете не только перенаправить стандартный вывод, но также выполнить перенаправление стандартного ввода.

Когда вы применяете символ перенаправления ввода <, вы указываете оболочке, что команда должна получать входную информацию из файла.

Используйте только что созданный файл для демонстрации этой идеи. Просто введите:

cat < sneakers.txt

Так как вы указали символ "меньше" (<), отделив команду cat от файла, выведенный файл sneakers.txt был прочитан командой cat.