Red Hat Linux 7.2: Официальное руководство по основам работы с Red Hat Linux | ||
---|---|---|
Назад | Глава 10. Основы командной строки | Вперед |
В Red Hat Linux есть утилита, помогающая вам сохранять короткие списки, собирать их вместе и, тем самым показывающая часть мощи вашей системы.
Эта утилита называется cat, что является сокращением от "concatenate" (конкатенация), и используется для склеивания файлов.
Команда cat также может вывести содержимое всего файла на экран (например, введите cat filename.txt). Удобно использовать cat, если файл сравнительно небольшой. Но если файл велик, он будет быстро прокручиваться на экране, так как cat выводит файл целиком.
Тем не менее cat поможет продемонстрировать два важных понятия: устройства стандартного ввода и стандартного вывода.
Устройства стандартного ввода и вывода направляет ввод и вывод (часто также называемые I/O) к пользователю. Если программа читает с устройства стандартного ввода, по умолчанию она будет получать информацию, вводимую с клавиатуры. Если программа выводит в устройство стандартного вывода, по умолчанию, эта информация будет выведена на экран.
Запустите cat чтобы понять что это значит. В приглашении командной строки, введите:
cat |
Курсор перемещается в пустую строку Теперь введите в этой строке:
stop by sneaker store |
и нажмите клавишу
[newuser@localhost newuser]$ cat stop by sneaker store stop by sneaker store |
Чтобы выйти из программы cat переместите курсор на пустую строку, нажав
Команда 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)? Заметно одно отличие - строки не повторяются. Так получилось потому что стандартный вывод команды 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! |
Теперь, в пустой строке снова нажмите
Вы также можете проверить содержимое файла, выполнив:
cat home.txt |
в приглашении оболочки.
Снова воспользуйтесь командой cat чтобы объединить файлы home.txt и sneakers.txt, и направить вывод из этих файлов в новый файл, названный saturday (вы найдете пример этого на Рисунке 10-9). Введите следующую команду:
[newuser@localhost newuser]$ cat sneakers.txt home.txt > saturday |
Теперь пора проверить что же было сделано. Введите:
[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).
Не замените вместо добавления | |
---|---|
Помните, для добавления информации в устройство вывода, вы должны указать два знака "больше" (>>). Иначе, будет выполняться замена файла, в который вы хотите добавить добавить информацию! |
Вы можете не только перенаправить стандартный вывод, но также выполнить перенаправление стандартного ввода.
Когда вы применяете символ перенаправления ввода <, вы указываете оболочке, что команда должна получать входную информацию из файла.
Используйте только что созданный файл для демонстрации этой идеи. Просто введите:
cat < sneakers.txt |
Так как вы указали символ "меньше" (<), отделив команду cat от файла, выведенный файл sneakers.txt был прочитан командой cat.