Основные понятия системы Linux


Система Linux является многозадачной многопользовательской операционной системой. Это означает, что много людей могут одновременно запускать по многу различных приложений одновременно на одном и том же компьютере. Этим система Linux отличается от системы MS-DOS, где в одно и то же время на компьютере может работать только один человек. Чтобы система Linux смогла «узнать» пользователя, он должен войти в систему (log in), что требует введения имени пользователя (login name) и пароля (password). По первому из них система различает пользователя, а второй служит персональным «ключом» для входа в систему; этот ключ предусмотрен для того, чтобы никакой другой человек не смог войти в систему под вашим именем.

На традиционных системах UNIX имя и начальный пароль вам даёт системный администратор, который отвечает за работу данной системы. Но если вы — тот пользователь Linux, на которого ложатся обязанности системного администратора, то перед входом в систему вам требуется создать себе имя пользователя. В дальнейшем будет рассматриваться условный пользователь по имени Ларри, на которого в системе заведено имя пользователя larry.

═ Кроме того, каждому компьютеру присвоено имя компьютера (хоста). По этому имени (host name) компьютеры распознаются в сети. Однако даже если компьютер не подключён к сети, он должен иметь имя. Для всех примеров, приводимых ниже, именем компьютера будет mousehouse.

Создание имени пользователя
══ Прежде чем начать работу в только что установленной системе Linux, нужно создать себе имя пользователя для повседневной работы. Будет неправильным для этого использовать имя root, потому что это имя резервируется для выполнения особых команд и для работ по поддержанию работоспособности системы. Эти вопросы обсуждаются ниже.

Для того, чтобы создать себе имя пользователя, следует войти в систему как пользователь root и использовать команду useradd или adduser. Подробнее о этом можно прочитать в разделе руководства.

Вход в систему
Обычно при входе в систему вы видите на экране примерно следующее приглашение:

mousehouse login:
Далее следует ввести ваш пароль. Набираемые при этом символы не будут появляться на экране, так что набирайте аккуратно. Если пароль будет набран неверно, вы увидите на экране следующее сообщение:

mousehouse login: larry
Password:
(неправильно введено имя пользователя), и процедуру входа в систему придётся повторить.

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

Виртуальная консоль
══Консоль системы представляет собой монитор и клавиатуру, непосредственно подключённые к компьютеру. Поскольку система Linux является многопользовательской операционной системой, к компьютеру через последовательные порты могут быть подключены другие терминалы, но они не будут консолями. Система Linux, подобно другим версиям системы UNIX, предоставляет доступ к виртуальным консолям (далее — ВК), с которых можно осуществлять одновременно несколько сеансов работы в системе (login session).

Для демонстрации этого войдите в систему. Дальше нажмите комбинацию клавиш Alt-F2. Вы снова увидите приглашение login:. При этом перед вами вторая виртуальная консоль. Чтобы вернуться к первой виртуальной консоли, нажмите комбинацию клавиш Alt-F1. Очевидно, что вы вернулись в уже начатый сеанс работы.

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

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

Оболочки и команды
Большая часть общения с системой Linux происходит через посредство командных оболочек (shell). Командная оболочка — это программа, которая воспринимает команды, вводимые с клавиатуры, и преобразует их в инструкции операционной системе. Аналогичные функции исполняет программа COMMAND.COM

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

mousehouse login: larry
Password: пароль пользователя larry
Welcome to Mousehouse!
/home/larry#
А теперь попробуем заставить систему сделать кое-что забавное:

/home/larry# make cake
make: *** Нет правила для сборки цели `cake'. Останов.
/home/larry#
Как оказывается, make является именем некоторой системной программы, и оболочка исполнила эту программу, когда ей дали такую команду. К сожалению, в этот раз операционной системе не все в этой команде понравилось.

Итак, что же такое команда? Обратимся к приведённому выше примеру. Командой является первое слово в командной строке — make; это называется именем команды. Все остальное в командной строке воспринимается в качестве аргументов этой команды. В следующем примере:

/home/larry# cp foo bar
имя команды — cp, а аргументы — foo и bar.

Когда вы вводите команду, оболочка производит несколько действий. Во-первых, она проверяет, является ли команда внутренней для оболочки. Внутренней командой называется команда, про которую оболочка сама по себе знает, как её исполнять. Имеется несколько внутренних команд оболочек, и они будут рассмотрены ниже. Также оболочка проверяет, не является ли команда псевдонимом (alias) другой команды. Если результат всех проверок отрицательный, то оболочка ищет программу с этим именем на диске. Если программа находится, оболочка её исполняет, передавая ей аргументы, введённые в командной строке.

В первом из наших примеров оболочка искала программу под названием make, нашла её и запустила с аргументом cake. На самом деле make — это программа, которая часто используется для компилирования крупных программ, и в качестве аргумента у неё используется имя программы, которую нужно компилировать. В данном случае, отдавая команду make cake, мы отдали приказ компилятору make компилировать программу cake. Поскольку компилятор make не нашёл программу с таким именем, он выдал сообщение об ошибке (которое нам может показаться смешным) и вернул нас к приглашению оболочки.

Посмотрим теперь, что будет, если оболочка не сможет найти программу с введённым нами именем. Введём следующую команду:

/home/larry\# eat dirt
eat: command not found
/home/larry\#
Все очевидно: оболочка не смогла найти программу с данным ей именем (здесь — eat) и выдала сообщение об ошибке. Это сообщение будет часто появляться, если вы будете неправильно вводить команду с клавиатуры (например, если бы в самом первом примере вы набрали mkae love вместо make love).

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

/home/larry\# exit
Существуют и другие способы выйти из системы, но этот является самым надёжным.

Изменение пароля
═══ Следует также знать, как изменять пароль. Для этого нужно ввести команду passwd. Сначала эта команда предложит ввести старый пароль, а потом═ — новый пароль. Эта команда попросит вас затем ещё раз ввести новый пароль для подтверждения. С паролем нужно обращаться аккуратно и не забывать его, поскольку, если вы забудете свой пароль, вам придётся просить системного администратора снять пароль с вашего имени. Если вы═ — сами себе системный администратор, то указания по смене пароля вы можете найти в разделе «Управление пользователями» в руководстве по дистрибутиву.═

Файлы и каталоги
═ В большинстве операционных систем (включая систему Linux) используется понятие файла (file). Файл═ — это некоторый «кусок» информации, которому дано имя, называемое именем файла (filename). Примерами файлов могут служить работа по истории, послание, пришедшее по электронной почте, а также исполняемая программа. Нужно знать, что на диске информация сохраняется только в виде отдельных файлов.

═ Файлы различаются по своим именам. Например, свой файл с работой по истории вы можете назвать history-paper. В этих случаях имя файла выбирается таким, чтобы оно каким-то образом характеризовало содержимое данного файла. Для имён файлов нет такого стандартного формата, какой есть в системе MS-DOS и в некоторых других операционных системах. В принципе, имя файла может содержать любые символы (за исключением символа /═ — смысл этого символа будет разъяснён ниже). Длина имени файла ограничена 256 знаками.

═ Понятие файла тесно связано с понятием каталога (directory). Каталог═ — это набор файлов. Иногда каталог называют «папка», по аналогии с папкой, в которой содержится много различных листов. Однако эта аналогия не вполне точна, поскольку каталог содержит не собственно файлы, а ссылки на файлы, а также и на другие каталоги. Более подходящая аналогия — библиотечный каталог или картотека. Каталогам даются имена, по которым их можно распознавать. Кроме этого, каталоги образуют структуру типа дерева; иными словами, существует единственный корневой каталог, который содержит внутри себя все остальные каталоги.

═ Как следствие, к файлу можно обращаться, указывая путь (path) к этому файлу. Путь состоит из имени каталога, за которым пишется имя файла. Пусть, например, у пользователя Ларри есть каталог papers, в котором содержится три файла: history-final, english-lit, masters-thesis. Каждый из этих трёх файлов содержит информацию о трёх работах, которыми в данный момент занимается Ларри. Чтобы обратиться к файлу english-lit, Ларри может указать путь к файлу, например, следующим образом:

papers/english-lit
При указании пути, как можно увидеть, имена каталога и файла разделяются символом /. По этой причине имена файлов не могут содержать этот символ. Пользователям системы MS-DOS будет знакома эта система обозначений, хотя в системе MS-DOS вместо символа / используется так называемый «обратный слэш» (\).

Как указывалось выше, каталоги могут быть вложены друг в друга. Пусть, например, в одном каталоге papers имеется другой каталог с именем notes. Каталог notes содержит файлы math-notes и cheat-sheet. Путь к файлу cheat-sheet представляется следующим образом:

papers/notes/cheat-sheet
Мы видим, что путь к файлу напоминает описание пути в лабиринте. Каталог, который содержит данный подкаталог, обычно называется родительским каталогом (parent directory). В данном примере каталог papers является родительским для каталога notes.

Дерево каталогов
В большинстве систем Linux используется стандартное расположение файлов, так что местоположение основных системных файлов и программ легко найти. Каталоги образуют структуру в виде дерева, которое начинается с каталога /. Этот каталог называется также корневым каталогом (root directory). Непосредственно к каталогу / примыкают важные подкаталоги /bin, /etc, /dev, /usr и другие. В свою очередь эти каталоги содержат другие каталоги, в которых находятся конфигурационные файлы системы, программы и т. д.

═ Каждый пользователь имеет свой домашний каталог (home directory). Этот каталог выделен пользователю для хранения в нем своих файлов. В приведённых выше примерах все файлы, которые создал Ларри (например, файлы cheat-sheet и history-final), содержатся в домашнем каталоге пользователя larry. Обычно собственные каталоги пользователей содержатся в каталоге /home, и названия этих каталогов совпадают с именами пользователей. Таким образом, собственный каталог пользователя larry называется /home/larry.

Текущий каталог
В любой момент времени отдаваемая команда относится к текущему каталогу (current directory). При входе в систему текущим каталогом назначается ваш домашний каталог (в нашем случае /home/larry). Обращаясь к файлу, можно указывать как полный путь к этому файлу, так и только путь от текущего каталога.

Приведём пример. У пользователя larry есть каталог papers, и в нем есть файл history-final. Если Ларри хочет взглянуть, что записано в этом файле, он может использовать команду

/home/larry# more /home/larry/papers/history-final
Команда more просто выводит содержимое файла на экран по одному экрану за один раз. В данном случае, поскольку текущим каталогом является /home/larry, пользователь может обратиться к файлу относительно текущего каталога и отдать следующую команду:

/home/larry# more papers/history-final
Если имя файла (например, papers/final) начинается с символа, отличного от /, то это значит, что к файлу обращаются относительно текущего каталога. Такой способ обращения называется относительным путём (relative path).

Наоборот, если имя файла начинается со знака /, то система интерпретирует это как полный путь (full path), т. е. путь, который ведёт к файлу, начиная с корневого каталога /. Это ещё называют абсолютным путём (absolute path).

Обращение к домашнему каталогу
В командных оболочках tcsh и bash[4] домашний каталог можно обозначать символом ~. Например, команда

/home/larry# more ~/papers/history-final
эквивалентна такой команде:

/home/larry# more /home/larry/papers/history-final
Командная оболочка заменяет символ ~ именем вашего домашнего каталога.

Символом «тильда» (~) можно также обозначать домашние каталоги других пользователей. Так, путь ~karl/letters будет преобразован оболочкой в путь /home/karl/letters, если /home/karl является домашним каталогом пользователя karl. Таким образом, символ ~ — это просто сокращение. Ни один каталог не называется ~.