|
истема, при выполнении команды нуждается в
информации, откуда команда будет получать данные и куда их выводить. Другие
операционные системы, такие как Windows и Macintosh, самостоятельно делают
предположения об источнике входных данных и назначении выходных. Зачастую так
поступает и Linux. Однако, в большинстве случаев, вам самим следует подумать,
откуда команда будет получать данные и куда выводить. Ниже мы объясним основы
концепции стандартного ввода/вывода на примере.
' Но это отнюдь lie значит, что они обязательно есть в любой Linux-систе-ме, —
например, в дистрибутиве Debian отсутствует каталог shiib. — Примеч. перев.
Стандартный ввод/вывод и их перенаправление
Команда cat — удивительно многосторонняя команда. Она может использоваться для
вывода содержимого файла на экран, добавления данных в конец файла и других
операций. Она даже может быть использована в качестве простейшего текстового
редактора:
$ cat
После ввода этой команды курсор переместится в следующую строку, п вы сможете
вводить текст с клавиатуры. Поскольку в команде нс указано, куда должен быть
отправлен вводимый текст, то Linux и команда cat предполагают, что текст должен
быть выведен на экран. После того как текст выведен на экран, он потерян
навсегда. Большинство команд Linux по умолчанию используют в качестве
стандартного ввода клавиатуру, а в качестве стандартного вывода — экран.
Поэтому команду cat саму по себе вы можете использовать для тренировки навыков
ввода информации с клавиатуры, но в таком виде для какой-либо другой цели она
бесполезна.
Однако область применения команды cat существенно расширяется, если вы
указываете в командной строке имена файла. Команда cat с именем файла в
качестве аргумента выводит содержимое этого файла на экран.
В этом примере команда cat использует в качестве стандартного ввода не
клавиатуру, а указанный файл. Содержимое файла не изменяется, оно просто
выводится на экран.
Глава 1. Основные понятия и команды
Вы можете использовать команду cat для записи строк в файл. Для этого вам
следует использовать символы перенаправления. Эти символы позволяют любой
команде использовать в качестве стандартного ввода или вывода вместо клавиатуры
или экрана файл или стандартный ввод/ вывод другой команды. В следующем примере
стандартный вывод команды cat вместо экрана направляется в файл kevin.report:
$ cat > kevin.report
Вводимый с клавиатуры текст построчно записывается в файл kevin.report. Нажатие
клавиш Ctrl+D останавливает перенаправление и заканчивает выполнение команды
cat.
Перенаправление может использоваться как для стандартного вывода, так и для
стандартного ввода. Команда cat может использоваться для копирования файлов
следующим образом:
$ cat kevin.report > pat.report
В этом примере стандартным вводом служит файл kevin.report, а стандартным
выводом — файл pat.report. Содержимое файла kevin.report не изменяется.
Для того чтобы дописать данные в конец существующего файла, используется
специальный символ перенаправления. В следующем примере содержимое файла kevin.
report дописывается в конец файла pat.report:
$ cat kevin.report » pat,report
Если бы в этом примере было опущено имя файла kevin.report, то команда cat
дописала бы вводимый с клавиатуры текст в конец файла pat.report.
Соответствующая команда выглядит так:
$ cat » pat.report
Стандартный ввод/вывод и их перенаправление
Существуют всего четыре символа перенаправления стандартного в вода/вы вола:
• Символ > используется для перенаправления стандартного вывода команды в 4)аил.
Например, cat > file запишет выводимую командой cat информацию в файл file.
• Символ < используется для переназначения стандартного ввода команды. Например,
при выполнении команды cat < file в качестве стандартного ввода cat
используется не клавиатура, а файл file.
• Символ » используется для дописывапия стандартного вывода команды в конец
существующего файла. Например, cat » file допишет выводимую командой cat
информацию в конец файла file.
• Символ ¦ является символом потока. Он используется, когда вы хотите передать
стандартный вывод одной команды на стандартный ввод другой. Например, cat ¦
grep отправит стандартный вывод команды cat на стандартный ввод команды grep.
(Потоки более подробно обсуждаются ниже в этой главе.)
На первый взгляд может показаться, что эти символы — не что иное, как несколько
способов сделать одно и то же. На самом деле символы < и > можно менять местами
в командной строке, но они оба нужны. Команды, которые выглядят похоже, на
самом деле могут совершенно по-разному обрабатываться операционной системой.
Например, команда
$ cat pat.file выполняет те же действия, что и команда
$ cat < pat.file
Глава 1. Основные понятия и команды
Однако на самом деле это различные команды. В первом случае pat.file — это
аргумент команды cat. С точки зрения Linux аргументы — это переменные,
используемые в командной строке. В данном случае полу
|
|