Стандартный ввод/вывод и их перенаправление
РАБОТА В КОМАНДНОЙ СТРОКЕ LINUX (ТЕРМИНАЛ) ОСНОВНЫЕ ПОНЯТИЯ И КОМАНДЫ В зависимости от опыта работы с компьютерами Linux покажется вам либо удивительно сложной и непостижимой (в том случае, если вы работали ранее с Microsoft Windows или компьютерами Macintosh), либо (если вы работали с MS-DOS или UNIX) еще одной простейшей операционной системой, управляемой из командной строки. Истина — посередине. Да, Linux может временами быть сложной и непостижимой, и, кроме того, она действительно построена на основе интерфейса командной строки (даже если вы используете Х Window). Однако Linux не сложнее, чем MS-DOS или UNIX, и имеет утилиты, соперничающие с аналогичными программами для Windows или Macintosh. Тот, кто хочет разобраться с Linux, должен в первую очередь стремиться разобраться с командами Linux. Командная строка Мы уже отмечали, что работа с Linux основана на использовании командной строки. Команды вводятся в командной строке. Когда Linux готова к приему команд, она сообщает вам об этом, выводя на ваш экран символ доллара: $ Знак доллара называется приглашением командной строки и сообщает вам о том, что Linux готова к приему команд. Вы можете ввести либо отдельную команду, либо набор команд и параметров, которые вместе называются командной строкой. Командой обычно называется то же самое. Все, что вы вводите с клавиатуры после приглашения командной строки, Linux воспринимает как команду — приказ сделать что-нибудь. Вы можете использовать команды как для выполнения каких-либо действий (например, перемещения или копирования файлов), так и для запуска программ (таких, как elvis ILTII emacs). Linux имеет вполне определенный набор команд, поэтому если то, что вы введете, не будет распознано как одна из команд, вы получите предупреждение о невозможности найти указанную команду. Вы можете найти полный список команд в определенных каталогах, но не будем забегать вперед. Операционная система Linux имеет сотни команд.
Команды могут иметь параметры, которые определяют, как именно будет выполняться команда и что она будет делать. Параметры также могут указывать, что команда должна выполняться только при соблюдении определенных условии. В качестве примера мы разберем одну из команд и некоторые ее параметры. Как вы можете видеть, текущий каталог в нашем примере содержит единственный файл — 00601. tif. (Имена файлов и каталогов, упоминаемые в этой главе, не важны; все, что вам требуется запомнить, — это способы обозначения файлов и каталогов, которые могут быть использованы в сочетании с почти любой командой.) Однако команда Is без параметров выводит список только тех файлов, которые доступны всем пользователям и не являются скрытыми. Скрытые файлы имеют имена, начинающиеся с точки (.): Если вы хотите, чтобы они тоже вошли в список, вы должны указать это команде Is. Вы должны указать соответствующий параметр. Для этой цели используется параметр -а. Если вы укажете его после команды, то будет выведен список всех файлов и подкаталогов текущего каталога, включая скрытые. Продолжая наш пример, приведем результат выполнения команды Is с параметром -1, который указывает на необходимость вывода подробной информации о файлах и каталогах. В главе 5, содержащей описание команд, значительное внимание уделено описанию их параметров. Очень немногие команды Linux не имеют параметров или аргументов какого-либо рода. Файлы Команда Ls используется для вывода списка файлов в текущем либо любом другом заданном каталоге. С точки зрения Linux достаточно странно, что аргументом этой команды может служить не файл. Изучая эту книгу, вы обнаружите, что подавляющее большинство команд имеют дело с файлами.
Практически все, с чем вы имеете дело в Linux, является файлами. Вы уже знаете, что команда ls выводит список файлов в каталоге, и именно потому, что все является файлом, эта команда так удобна. Команды — это не что иное, как файлы, содержащие программы. Устройства, присоединенные к вашему компьютеру, представлены в Linux файлами, которые, как правило, находятся в каталоге /dev. Когда вы печатаете текст, вы на самом деле просто отправляете его в файл, представляющий принтер. Грубо говоря, файл представляет собой просто упорядоченную область на устройстве хранения информации, состоящую из битов. Бит — это наименьшая единица информации, он может содержать одно из двух значений: 0 или 1. Операционная система Linux организует биты в форму, понятную как вам, так и компьютеру. Без этой организации жесткий диск представлял бы собой бессмысленную смесь нулей и единиц. Система организации жесткого диска называется файловой системой. Вот почему основная функция операционной системы Linux — управление файлами. Важность команды ls трудно переоценить — ведь она позволяет вам узнать, какие файлы находятся в данном месте файловой системы в данное время. И именно поэтому другие часто используемые команды Linux также связаны с управлением файлами — такие команды, как elvis для редактирования, rm для удаления и mv для перемещения файлов. Всего имеются четыре типа файлов: • файлы устройств, • каталоги, • ссылки, • обычные файлы. Ниже приведены описания этих типов файлов в порядке их важности для операционной системы Linux: • Обычные файлы — рядовые файловой системы. Обычно они содержат данные, используемые программами и операционной системой. Обычный файл может содержать текст, данные для какой-либо программы (например, это может быть файл форматирования для программы разбивки на страницы пли база данных), код программы пли текст программы для интерпретируемого языка программирования, такого как Perl пли Тс1. • Каталоги являются файлами, содержащими информацию о других файлах. Файловая система в Linux имеет иерархическую структуру, организованную при помощи каталогов. Каталоги обсуждаются ниже в этой главе.
• Файлы устройств представляют устройства, подключенные к компьютеру. Эти файлы обычно находятся в каталоге /dev. Например, файл, представляющий устройство накопления на магнитной ленте, может иметь имя /dev/stO. • Ссылки позволяют хранить один файл в файловой системе под различными именами. Ссылки не играют большой роли в Linux, если только вы не работаете в сети. Ссылки — наследие былых времен, когда места для хранения данных было так мало, что пользователи должны были использовать один и тот же файл, но, в связи со строением сети, ему должны были быть присвоены различные имена. Каталоги Как мы упоминали ранее, каталоги — это файлы, предназначенные для хранения других файлов. Каталоги необходимы в операционной системе наподобие 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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|