Red World

ОСНОВНЫЕ ПОНЯТИЯ И КОМАНДЫ

В зависимости от вашего опыта работы с компьютерами Linux покажется вам либо удивительно сложной и непостижимой (в том случае, если вы работали ранее с Microsoft Windows или компьютерами Macintosh), либо (если вы работали с MS-DOS или UNIX) еще одной простейшей операционной системой, управляемой из командной строки. Истина — посередине. Да, Linux может временами быть сложной и непостижимой, и, кроме того, она действительно построена на основе гштерфейса командной строки (даже если вы используете Х Window). Однако Linux не сложнее, чем MS-DOS или UNIX, и имеет утилиты, соперничающие с аналогичными программами для Windows или Macintosh.

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

• Linux — это набор небольших простых команд. Если вы упростите вашу задачу и разобьете ее на отдельные подзадачи, вы сможете сделать практически все.

• Даже когда вы работаете с XFree86 (графическим интерфейсом Linux), вы работаете с набором небольших простых команд.

Вы уже должны были понять, что тот, кто хочет разобраться с Linux, должен в первую очередь стремиться разобраться с командами Linux. Предлагаемая вашему вниманию книга содержит описания команд Linux. Однако до


Глава 1. Основные понятия и команды

того, как вы начнете изучать команды, вы должны понять, как вводить команды п как Linux их обрабатывает.

Командная строка

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

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

Командой обычно называется то же самое. Все, что вы вводите с клавиатуры после приглашения командной строки, Linux воспринимает как команду — приказ сделать что-нибудь. Вы можете использовать команды как для выполнения каких-либо действий (например, перемещения или


Командная строка

копирования файлов), так и для запуска программ (таких, как elvis ILTII emacs). Linux имеет вполне определенный набор команд, поэтому если то, что вы введете, не будет распознано как одна из команд, вы получите предупреждение о невозможности найти указанную команду. Вы можете найти полный список команд в определенных каталогах, но не будем забегать вперед. Операционная система Linux имеет сотни команд.

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

Как вы можете видеть, текущий каталог в нашем примере содержит единственный файл — 00601. tif. (Имена файлов и каталогов, упоминаемые в этой главе, не важны; все, что вам требуется запомнить, — это способы обозначения файлов и каталогов, которые могут быть использованы в сочетании с почти любой командой.) Однако команда Is без параметров выводит список только тех файлов, которые доступны всем пользователям и не являются скрытыми.


Глава 1. Основные понятия и команды

Скрытые файлы имеют имена, начинающиеся с точки (.):

если вы хотите, чтобы они тоже вошли в список, вы должны указать это команде Is. Вы должны указать соответствующий параметр. Для этой цели используется параметр -а. Если вы укажете его после команды, то будет выведен список всех файлов и подкаталогов текущего каталога, включая скрытые.

Продолжая наш пример, приведем результат выполнения команды Is с параметром -1, который указывает на необходимость вывода подробной информации о файлах и каталогах.

В главе 5, содержащей описание команд, значительное внимание уделено описанию их параметров. Очень немногие команды Linux не имеют параметров или аргументов какого-либо рода.

Файлы

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


Файлы

Практически все, с чем вы имеете дело в Linux, является файлами. Вы уже знаете, что команда Is выводит список файлов в каталоге, и именно потому, что все является файлом, эта команда так удобна. Команды — это не что иное, как файлы, содержащие программы. Устройства, присоединенные к вашему компьютеру, представлены в Linux файлами, которые, как правило, находятся в каталоге /dev. Когда вы печатаете текст, вы на самом деле просто отправляете его в файл, представляющий принтер.

Грубо говоря, файл представляет собой просто упорядоченную область на устройстве хранения информации, состоящую из битов. Бит — это наименьшая единица информации, он может содержать одно из двух значений: О или 1. Операционная система Linux организует биты в форму, понятную как вам, так и компьютеру. Без этой организации жесткий диск представлял бы собой бессмысленную смесь нулей и единиц. Система организации жесткого диска называется файловой системой.

Вот почему основная функция операционной системы Linux — управление файлами. Важность команды Is трудно переоценить — ведь она позволяет вам узнать, какие файлы находятся в данном месте файловой системы в данное время. И именно поэтому другие часто используемые команды Linux также связаны с управлением файлами — такие команды, как elvis для редактирования, пп для удаления и mv для перемещения файлов.

Всего имеются четыре типа файлов:

• файлы устройств,

• каталоги,

• ссылки,

• обычные файлы.


Глава 1. Основные понятия и команды

Ниже приведены описания этих типов файлов в порядке их важности л-тя операционной системы Liniix:

Обычные фпй:1ы — рядовые файловой системы'. Обычно они содержат .танные, используемые программами и операционной системен. Обычный файл может содержать текст, данные для какой-либо программы (например, это может быть файл форматирования для программы разбивки на страницы пли база данных), код программы пли текст программы для интерпретируемого языка программирования, такого как Peri пли Тс1.

Катало/и являются файлами, содержащими информацию о других файлах. Файловая система в Liniix имеет иерархическую структуру, организованную при помощи каталогов. Каталоги обсуждаются ниже в этой главе.

Файлы устройств представляют устройства, подключенные к вашему компьютеру. Эти файлы обычно находятся в каталоге /dev. Например, файл, представляющий устройство накопления на магнитной ленте, может иметь имя /dev/stO.

Ссылки позволяют хранить один 4>айл в файловой системе под различными именами. Ссылки не играют большой роли в Linux, если только вы не работаете в сети2. Ссылки — наследие былых времен, когда места для хранения данных было так мало, что пользователи должны были использовать один и тот же файл, но, в связи со строением сети, ему должны были быть присвоены различные имена.

Каталоги

Как мы упоминали ранее, каталоги — это файлы, предназначенные для хранения других файлов. Каталоги необхо-

' Игра слои: рядовые — rank and file, фаил —file. — Примеч. перев. 2 Это нс совсем верно. — Примеч. перса.


Каталоги

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

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

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

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

Некоторые из этих каталогов имеются практически в любой UNIX-системе — это каталоги etc, sbin, usr и var. He-


Глава 1. Основные понятия и команды

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

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

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

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

Linux, как и любая операционная система, при выполнении команды нуждается в информации, откуда команда будет получать данные и куда их выводить. Другие операционные системы, такие как 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 аргументы — это переменные, используемые в командной строке. В данном случае получилось так, что аргумент — это файл. Во втором же примере файл pat.file играет роль стандартного ввода для команды cat.

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

$ cat < filel > file2

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

Потоки

Поток, обозначаемый символом ¦, — это просто еще один способ перенаправления стандартного ввода/вывода. Использование потоков позволяет работать непосредственно с командами, передавая информацию, выводимую одной из команд, на ввод другой. Синтаксис таков:

$ commandl ¦ command2

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

Общие параметры Х Window

Среди прочих команд глава 5 содержит описания команд системы Х Window. Эти команды имеют общий набор параметров. Вместо того чтобы перечислять эти параметры в описании каждой команды, мы перечислим их здесь.


Общие параметры Х Window

ПАРАМЕТР ЗНАЧЕНИЕ
-background

красный зеленый сипни

Установка циста фона
-background цвет Установка цвета фона окна
-bg цвет Установка цвета фона окна
-display

система.'номер сервера

Использование Х сервера с заданным номером (обычно — 0) на заданной системе
-fg цвет Установка основного цвета окна
-fn шрифт Использование указанного шрифта
-font шрифт Использование указанного шрифта
-foreground color

красный зеленый синий

Установка основного цвета окна
-foreground цвет Установка основного цвета окна
-geometry

ширинахвысота+х+у

Установка размера и расположения окна
-geometry ширинахвысота Установка размеров окна
-geometry +x+y Установка положения верхнего левого угла окна
-height строки Установка размера окна по вертикали, в строках
-position x у Установка положения верхнего левого угла окна, в пикселах



Глава 1. Основные понятия и команды

-reverse Замена местами цвета фона
  и основного цвета окна
-rv Замена местами цвета фона
  и основного цвета окна
-size ширина высота Установка размера окна,
  в пикселах
-Wb красный зеленый синий Установка цвета фона.
-Wf красный зеленый синий Установка основного цвета
  окна
-WG ширинахвысота+х+у Установка размера
  и расположения окна
-WG ширина^высота Установка размеров окна
-WG +.г-+г/ Установка положения
  верхнего левого угла окна,
  в пикселах
-Wh строки Установка размера окна
  по вертикали, в строках
-Wi Запуск программы со
  свернутым в значок окном
-width столбцы Установка ширины окна, в столбцах
-Wp л' г/ Установка положения
  верхнего левого угла окна,
  в пикселах
-Wr  
система -.номерсервера Использование Х сервера
  с заданным номером (обычно — 0)
  на заданной системе



Общие параметры Х Window

-Ws ширина высотп -Wt шрифт -Ww столбцы Установка размеров окна. в пикселах

I 1спользован11с указанного шрифта

Установка ширины окна, в столбцах




Сайт создан в системе uCoz