Учебник по Unix для начинающих

(═источник информации: http://www.linux.org.ru/books)

Чтобы пользоваться услугами Internet, операционную систему UNIX знать не обязательно. Однако это может пригодиться при обращении к Internet посредством какой-нибудь общедоступной UNIX-системы. Вам достаточно познакомиться лишь с десятком-другим простых команд. Ниже к Вашим услугам учебник-"пятиминутка" по ОС UNIX.

Вход в систему

Операционная система UNIX - это многопользовательская система с разделением времени. Начинать сеанс работы с ней нужно с сообщения о том, кто Вы. Это не зависит от того, работаете Вы за терминалом в своем кабинете или по коммутируемой линии связываетесь с большим узлом общего пользования. В этом заключается одно из отличий UNIX от DOS, Windows и Macintosh - операционных систем, в которых понятие "многопользовательский" отсутствует. UNIX должна знать, кто Вы, чтобы выделять Вас и Ваше хозяйство среди десятков, сотен и даже тысяч других пользователей.

Диалог при входе в UNIX примерно такой:

ttc
ttc!login: krol
Password:
Last login: Sat Sep 7 17:16:35
ttc
%

На вопрос login вводите свое пользовательское имя, далее вводите, пароль, данный вам администратором системы. После появления % можно работать.

Пользовательское имя - это имя, с которым связан Ваш вход в систему; администратор системы присваивает его, регистрируя данного пользователя. Пароль позволяет подтвердить, что Вы действительно тот, за кого себя выдаете, и таким образом предотвратить незаконный вход в систему. Вводимый пароль не отображается на экране, чтобы никто его не увидел. Администратор системы, вероятно, назначит Вам какой-нибудь начальный пароль, а затем расскажет, как выбрать и поменять его.

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

В некоторых системах может понадобиться "телефонный пароль" при регистрации по телефонной линии. Если такой пароль Вам нужен, его можно получить у администратора системы.

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

Last login: Sat Sep 7 17:16:35 
ttc
TERM=(vt100)?
%

Строка (vt100)? означает: "Думаю, - Вы используете терминал VT100. Если да, нажмите [Enter] и продолжайте работу. В противном случае сообщите мне о типе терминала". VT100 - удачное предположение, поскольку большинство наиболее распространенных коммуникационных программных пакетов - поддерживают эмуляцию VT100, т.е. заставят Ваш компьютер работать как VT100. Сервер TTC поддерживает также терминал VT100WIN для пользователей работающих через программу telnet из Windows. Этот тип терминала позволит вам отображать русский текст на экране. Поэтому при входе в систему вы можете ответит [vt100win]. Если после этот вы по-прежнему не можете работать с русским текстом, обратитесь к администратору системы.

Если UNIX получит неверную информацию о типе терминала, может возникнуть путаница: например, система будет неправильно реагировать на нажатие клавиши [Enter], символы будут отображаться инверсно и т.д. В случае возникновения подобных проблем обратитесь к администратору системы.

Для завершения сеанса работы в UNIX дайте команду logout или exit.

Команды

Сначала мы покажем, как работают команды операционной системы UNIX, а затем приведем перечень наиболее важных команд.

Формат команды

Большинство команд UNIX имеют следующий формат:

% команда ключи параметры

Сначала идет имя команды, затем - ключи и параметры. Параметрами, как правило, являются имена файлов. Все ключи начинаются с дефиса. Например, приведенная ниже команда означает: "Выполнить команду Is с ключом -l для файла а.out":

% ls -l а.out 

Это 90 процентов того, что Вам нужно знать. Имена команд почти всегда приводятся строчными буквами; ключи обычно состоят из одной буквы (строчной или прописной). В отличие от многих других операционных систем, UNIX учитывает разницу между прописными и строчными буквами.

Если Вы используете два и более однобуквенных ключа, большинство команд позволяют объединять их. Например, две приведенные ниже команды идентичны:

% ls -lg a.out
% 1s -l -g a.out

Некоторые ключи требуют наличия параметра. В этом случае параметр дается после ключа, в этом случае последний нельзя объединять с другим ключом. Такие команды в нашем учебнике не описываются.

Есть несколько команд, которые не соответствуют этим правилам, и одна из них очень важная: это команда tar. (Другие Вам никогда не понадобятся.) В перечне команд я даю три "рецепта" использования tar. Следуйте указаниям, и все будет в порядке.

Основные команды

Ниже приведен обещанный перечень основных команд операционной системы UNIX. Прописными буквами даны DOS-эквиваленты. Некоторые команды более подробно будут описаны ниже.

logout
Завершить сеанс работы с UNIX.
ls
Дать перечень файлов, находящихся в текущем каталоге. Эквивалент команды DIR, имеющейся во многих операционных системах. Команда ls -l дает более подробную информацию, включая размер файлов, их принадлежность и дату создания. У 1s есть очень много ключей, но -l - единственный, который Вы будете использовать довольно часто.
rm файлы
DELETE. Стереть (удалить) один или несколько файлов. Например, команда rm file1 file2 file3 удаляет три файла: filel, file2, file3. Команда rm -i перед удалением каждого файла просит Вас подтвердить свое намерение.
mv cтapoe-имя новое-имя
RENAME. Переименовать (переместить) файл из cтapoe-имя в новое-имя. Многие жалуются, что эту команду трудно запомнить из-за несоответствия сокращенного имени смыслу (mv - rename). Правильное замечание. Пользователи UNIX, однако, предпочитают считать, что файлы "перемещаются" (move), а не переименовываются (rename). Если рассматривать эту операцию как перемещение, то работа в UNIX будет более осмысленной.
cp файл1 файл2
СОРУ. Копировать файл1 в новый файл с именем файл2.
more файл
Вывести текстовый файл на экран в постраничном режиме. Для вывода следующей страницы нужно нажать клавишу пробел. Многие используют для этого команду cat и жалуются, что ее имя вводит в заблуждение. Это, однако, их вина. Команда cat не предназначалась для вывода файлов на экран; она срабатывает чисто случайно (и то не очень хорошо). Команда more - гораздо лучшее средство; не утруждайте себя возней с cat. Кроме того, more не совсем "интуитивна"; полезно запомнить фразу "show me more of this file" ("покажи мне этот файл дальше").
grep образец файл
Показать все строки в файле, отвечающие, образцу. Поиск осуществляется с учетом регистра. Команда grep используется для поиска конкретных текстовых строк в файлах. Например, если phones - перечень номеров телефонов и имен, то команда
% grep "John Johnson" phones
находит в этом списке номер телефона Джона Джонсона. Обратите внимание: мы взяли образец поиска в кавычки. Кавычки никогда не повредят, но когда Вы ищете строку с пробелом или звездочкой, кавычки необходимы.
grep -i образец файл
Аналогична предыдущей команде, но регистр не учитывается: прописные и строчные буквы воспринимаются одинаково.
pwd
Показать текущий каталог.
cd каталог
Изменить текущий каталог.
mkdir каталог
Создать новый каталог без файлов с именем каталог.
rmdir каталог
Стереть (удалить) каталог с именем каталог. Этот каталог должен быть пуст, т.е. в нем не должно быть файлов.
man команда
Вывести на экран справку ОС UNIX по команде команда.
uuencode окончательное-имя <файл>выходной-файл
Создать текстовую версию двоичного файла, годную для пересылки электронной почтой. Окончательное-имя - это имя, которое файл получает после распаковки; файл - имя кодируемого файла; выходной-файл - закодированный файл, который подлежит отправке по электронной почте. Символы > и < обозначают стандартный ввод и стандартный вывод (см, ниже).
uudecode закодированный-файл
Команда, обратная команде uuencode.
compress файл
Сжать файл так, чтобы он занимал меньше места в памяти. В результате получается двоичный файл с тем же именем, что и исходный, и суффиксом .Z. Исходный файл удаляется. Сжатый файл нельзя пересылать по электронной почте, т.к. он двоичный, но его можно преобразовать в текстовый командой uuencode. Подобную операцию в UNIX выполняет gzip.
uncompress файл
Получить исходный файл из сжатого файла. Подобную операцию в UNIX выполняет gunzip.
tar
Эта команда предназначалась для создания архивов магнитных лент (tape archive), но используется и для создания архивов файлов (объединений, включающих несколько файлов). Подобные архивы встречаются в Internet. Структура этой команды довольно необычна. Поэтому вместо ее описания ниже приведены три примера команды tar, которых Вам будет достаточно для работы. В этих примерах файл.tar - архив, созданный командой tar. В первых двух командах мы будем работать с архивом, полученным извне. В последнем случае мы сами создадим архив.
% tar сf file.tar list
% tar tf file.tar
% tar xf file.tar

Стандартный ввод и вывод

Одной из сильных сторон операционной системы UNIX является гибкость ее системы ввода-вывода. Многие команды посылают свою выходную информацию на терминал. Вместо этого Вы можете путем переназначения записать выходную информацию любой команды в файл. Аналогичным образом, многие команды принимают входную информацию с клавиатуры, но Вы можете выполнить переназначение так, чтобы ввод производился из файла. (Секрет состоит в том, что ОС UNIX рассматривает все операции ввода-вывода одинаково - все "выглядит" как файл. Для работы с UNIX понимать, что это значит, не обязательно.)

> файл
Стандартный вывод. Поместить выходную информацию в файл, а не посылать ее на экран. То, что находилось в файле раньше, будет уничтожено. Например, если Вы хотите, чтобы список файлов Вашего каталога не выводился на экран, а был записан в файл, необходимо дать следующую команду:
% 1s -l > filelist
>> файл
Стандартный вывод с добавлением. Дописать выходную информацию в файл следом за его содержимым.
< файл
Стандартный ввод. Взять выходную информацию из файла, а не с клавиатуры. Стандартный ввод и вывод используются упомянутой выше командой uuencode.
| другая-команда
Конвейер. Взять стандартный вывод одной программы и использовать как стандартный ввод другой. Это одна из самых богатых возможностей ОС UNIX; ее можно использовать для создания собственных команд. Предположим, Вам нужен список всех файлов, принадлежащих edk. Эту операцию нельзя выполнить с помощью ключей команды ls, но, используя конвейер, можно объединить команды ls -l и grep:
% ls -ls | grep "edk" 
Команда ls -l выдает список всех файлов, включая информацию о владельцах, а grep извлекает все пункты, содержащие строку edk. Если Вы работаете с UNIX редко, то сможете обойтись и без конвейеров. Но если Вы начнете выполнять нечто существенное с помощью конвейеров, то быстро поймете, насколько они полезны.

Переназначения стандартного ввода-вывода обычно даются в конце команды, после всех ключей и параметров.

Структура каталогов

Как и в MS-DOS и Macintosh, в операционной системе UNIX иерархическая (или "древовидная") файловая система. Это означает, что каждый файл находится в каталоге, а каталоги могут включать другие каталоги. В системе Macintosh каталоги называются "папками". В системах DOS и Windows используется тот же файлово-каталоговый язык, что и в UNIX.

Для разделения имен каталогов в UNIX используется прямая косая черта (/). Например, /home/john/letters/mom.brt означает: "файл mom.txl в каталоге letters в каталоге john в каталоге home". Можно также сказать, что john - это подкаталог каталога home и т.д.

В этом примере следует отметить еще несколько моментов:

Взятое нами в качестве примера имя файла (/home/john/letters/mom.txt) называется полным именем, потому что оно показывает весь "путь" к файлу, начинаяс корневого каталога. Такие имена не обязательно использовать постоянно. Применяется целый ряд сокращений:

Вам следует знать, как UNIX организует файлы. В отличие от персональных компьютеров, где используются относительно небольшие диски, UNIX-системы обычно работают с большими дисками, причем в значительных количествах. Гигабайтные диски здесь не редкость, а многие системы используют несколько дисководов. В большой системе их может быть десяток и более. Чем больше объем дисковой памяти, тем большее значение приобретают каталоги, с помощью которых можно правильно ее организовать.

Допустимые имена файлов

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

Не ставьте в начале имени файла точку; команда ls не найдет такой файл в списке, если Вы не укажете ее с ключом . Использование точки в качестве первого символа имени файла позволяет "прятать" определенные файлы, чтобы они не "загрязняли" списки каталогов. Однако если Вы новичок в UNIX, то эта особенность может ввести Вас в заблуждение.

Символы подстановки (шаблоны) в именах файлов

В операционной системе UNIX в качестве стандартных символов подстановки (шаблонов) для имен файлов приняты *, ? и []. В настоящее время чаще всего используется звездочка. Эти универсальные символы имеют следующее значение:

Вы можете использовать все символы подстановки независимо от того, с какой версией UNIX работаете.

К сожалению, символы подстановки нельзя применять в части "образец" команды grep. Вместо этого команда grep использует более сложное средство - "регулярные выражения", которые в этой книге рассматриваться не будут. Конечно, в элементе файл команды grep символы подстановки использовать можно. Например, команда

% grep "John Johnson" *

осуществляет поиск имени Джона во всех файлах текущего каталога.

Литература

Существует много книг по ОС UNIX. Вот некоторые из них, которые могут Вам пригодиться:

Learning the UNIX Operating System, авторы Grace Todino, John Strang, Jerry Peek (O'Reilly & Associates). Oороший вводный курс. Кратко и по теме, понятно новичкам.

Life with UNIX автор Don Libes (Prentice-Hall, 1989). Еще один вводный курс, который помог многим.

UNIX in а Nutshell (O'Reilly & Associates). Eраткий перечень команд ОС UNIX. Есть разные варианты этой книги для различных версий UNIX.

Learning the Vi Editor, автор Linda Lamb (O'Reilly & Associates); Learning Emacs, авторы Deb Cameron и Bill Rosenblatt (O'Reilly & Associates). Aаша работа с операционной системой не будет продуктивной, если Вы не сможете редактировать файлы. В операционной системе UNIX чаще всего используются редакторы vi и emacs. Они слишком сложны, чтобы описывать их в этой книге, а указанные издания - это отличные образцы популярной литературы.