В
зависимости от вашего опыта
работы с компьютерами 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. Ссылки — наследие былых
времен, когда места для хранения
данных было так мало, что
пользователи должны были
использовать один и тот же файл,
но, в связи со строением сети,
ему должны были быть присвоены
различные имена.
Каталоги
Как мы упоминали ранее, каталоги
— это файлы, предназначенные для
хранения других файлов. Каталоги
необходимы в операционной
системе наподобие Linux. В Linux
каждая команда является файлом,
каждое устройство является
файлом н каждая программа
состоит по крайней мере пз
одного файла (а обычно из
значительно большего их
количества). Запишите все эти
файлы в одно место — и вы
совершенно потеряетесь среди
тысяч отдельных файлов. Может
быть и хуже — при работе в сети
пользователь может иметь доступ
нс только к файлам на своем
компьютере, но и к тысячам
файлов на других машинах и.
возможно, на файловом сервере.
Конечно, нет никакого способа не
запутаться в этих (файлах, за
исключением создания некоторой
иерархической структуры для их
хранения. Тут-то на передний
план н выходят каталоги.
Иерархия каталогов в Linux (вы
можете представлять се себе как
пирамиду) достаточно проста. На
вершине пирамиды находится
корневой каталог,
обозначаемый символом косой
черты (/). Каждый каталог
является подкаталогом
корневого каталога. Кроме того,
подкаталоги могут также
содержать подкаталоги и т. д.
Любой пользователь в каждый
момент времени «находится» в
каком-либо каталоге, называемом
текущим каталогом.
Приглашение командной строки
обычно содержит имя текущего
ката-лога (начинающееся с косой
черты, обозначающей, что каталог
содержится в иерархической
структуре, вершиной которой
является корневой каталог).
Обычная Linux-система, такая как
Slackware Linux, имеет вполне
определенный набор каталогов.
Некоторые из этих каталогов
имеются практически в любой
UNIX-системе — это каталоги
etc, sbin, usr и var. Heкоторые
из каталогов типичны для
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
использует в качестве
стандартного ввода не
клавиатуру, а указанный файл.
Содержимое файла не изменяется,
оно просто выводится на экран.
Основные понятия и команды
Вы можете использовать команду
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
Основные понятия и команды
Однако на самом деле это
различные команды. В первом
случае 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 у
|
Установка положения
верхнего левого угла
окна, в пикселах
|
Основные понятия и команды
-reverse
|
Замена местами цвета
фона
|
|
и основного цвета
окна
|
-rv
|
Замена местами цвета
фона
|
|
и основного цвета
окна
|
-size ширина
высота
|
Установка размера
окна,
|
|
в пикселах
|
-Wb красный
зеленый синий
Установка цвета
фона.
|
-Wf красный
зеленый синий
|
Установка основного
цвета
|
|
окна
|
-WG
ширинахвысота+х+у
|
Установка размера
|
|
и расположения окна
|
-WG ширина^высота
|
Установка размеров
окна
|
-WG +.г-+г/
|
Установка положения
|
|
верхнего левого угла
окна,
|
|
в пикселах
|
-Wh строки
|
Установка размера
окна
|
|
по вертикали, в
строках
|
-Wi
|
Запуск программы со
|
|
свернутым в значок
окном
|
-width столбцы
|
Установка ширины
окна, в столбцах
|
-Wp л' г/
|
Установка положения
|
|
верхнего левого угла
окна,
|
|
в пикселах
|
-Wr
|
|
система -.номерсервера
|
Использование Х
сервера
|
|
с заданным номером
(обычно — 0)
|
|
на заданной системе
|
|