Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Стандартный ввод/вывод и их перенаправление




Каталоги

Как мы упоминали ранее, каталоги — это файлы, предназначенные для хранения других файлов. Каталоги необходимы в операционной системе наподобие Linux. В Linux каждая команда является файлом, каждое устройство является файлом и каждая программа состоит по крайней мере из одного файла (а обычно из значительно большего их количества). Запишите все эти файлы в одно место — и вы совершенно потеряетесь среди тысяч отдельных файлов. Может быть и хуже — при работе в сети пользователь может иметь доступ не только к файлам на своем компьютере, но и к тысячам файлов на других машинах и, возможно, на файловом сервере. Конечно, нет никакого способа не запутаться в этих файлах, за исключением создания некоторой иерархической структуры для их хранения. Тут-то на передний план и выходят каталоги.

 Иерархия каталогов в Linux (вы можете представлять се себе как пирамиду) достаточно проста. На вершине пирамиды находится корневой каталог, обозначаемый символом косой черты (/). Каждый каталог является подкаталогом корневого каталога. Кроме того, подкаталоги могут также содержать подкаталоги и т. д.

Любой пользователь в каждый момент времени «находится» в каком-либо каталоге, называемом текущим каталогом. Приглашение командной строки обычно содержит имя текущего каталога (начинающееся с косой черты, обозначающей, что каталог содержится в иерархической структуре, вершиной которой является корневой каталог).

Обычная Linux-система, такая как Slackware Linux, имеет вполне определенный набор каталогов.

Некоторые из этих каталогов имеются практически в любой UNIX-системе — это каталоги etc, sbin, usr и var. Не которые из каталогов типичны для Linux-систем — это boot, cdrom, mnt, proc. shiib. Каталоги root и home предназначены для хранения информации пользователей. Если вы сами устанавливаете Linux, то, скорее всего, в вашей системе будет по крайней мере один домашний каталог root, используемый, когда вы входите в систему как пользователь root, и, вероятно, еще один — в каталоге home.

Linux содержит набор команд, позволяющих вам создавать ваши собственные каталоги. Эти команды обсуждаются далее в этой книге.

Стандартный ввод/вывод и их перенаправление

Третья часть головоломки Linux — связь между командами и файлами, организуемая при помощи стандартного ввода и вывода. Не пугайтесь технического термина — это понятие на самом деле касается того, как структурирована командная строка и куда отправляются результаты выполнения команды.

Linux, как и любая операционная система, при выполнении команды нуждается в информации, откуда команда будет получать данные и куда их выводить. Другие операционные системы, такие как Windows и Macintosh, самостоятельно делают предположения об источнике входных данных и назначении выходных. Зачастую так поступает и Linux. Однако, в большинстве случаев, вам самим следует подумать, откуда команда будет получать данные и куда выводить. Ниже мы объясним основы концепции стандартного ввода/вывода на примере.

Команда cat — удивительно многосторонняя команда. Она может использоваться для вывода содержимого файла на экран, добавления данных в конец файла и других операций. Она даже может быть использована в качестве простейшего текстового редактора:

$ cat

После ввода этой команды курсор переместится в следующую строку, и вы сможете вводить текст с клавиатуры. Поскольку в команде не указано, куда должен быть отправлен вводимый текст, то Linux и команда cat предполагают, что текст должен быть выведен на экран. После того как текст выведен на экран, он потерян навсегда. Большинство команд Linux по умолчанию используют в качестве стандартного ввода клавиатуру, а в качестве стандартного вывода — экран. Поэтому команду cat саму по себе вы можете использовать для тренировки навыков ввода информации с клавиатуры, но в таком виде для какой-либо другой цели она бесполезна.

Однако область применения команды cat существенно расширяется, если вы указываете в командной строке имена файла. Команда cat с именем файла в качестве аргумента выводит содержимое этого файла на экран.

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

Вы можете использовать команду 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

Существуют всего четыре символа перенаправления стандартного ввода/вывода:

• Символ > используется для перенаправления стандартного вывода команды в фаил. Например, cat > file запишет выводимую командой cat информацию в файл file.

• Символ < используется для переназначения стандартного ввода команды. Например, при выполнении команды cat < file в качестве стандартного ввода cat используется не клавиатура, а файл file.

• Символ > > используется для дописывания стандартного вывода команды в конец существующего файла. Например, cat > > file допишет выводимую командой cat информацию в конец файла file.

• Символ ¦ является символом потока. Он используется, когда вы хотите передать стандартный вывод одной команды на стандартный ввод другой. Например, cat ¦ grep отправит стандартный вывод команды cat на стандартный ввод команды grep. (Потоки более подробно обсуждаются ниже в этой главе. )

На первый взгляд может показаться, что эти символы — не что иное, как несколько способов сделать одно и то же. На самом деле символы < и > можно менять местами в командной строке, но они оба нужны. Команды, которые выглядят похоже, на самом деле могут совершенно по-разному обрабатываться операционной системой. Например, команда

$ cat pat. file выполняет те же действия, что и команда

$ cat < pat. file

Однако на самом деле это различные команды. В первом случае pat. file — это аргумент команды cat. С точки зрения Linux аргументы — это переменные, используемые в командной строке. В данном случае получилось так, что аргумент — это файл. Во втором же примере файл pat. file играет роль стандартного ввода для команды cat.

Нет никаких ограничений на использование символов перенаправления в командной строке. Достаточно часто используются сразу два символа перенаправления, особенно в сценариях интерпретаторов командной строки:

$ cat < filel > file2

Эта команда использует файл filel в качестве стандартного ввода команды cat, а файл file2 — в качестве стандартного вывода.

Подробный список команд Linux приводится в документе “Справочник команд Linux. chm”.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...