══════ Система 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. Таким образом, символ ~ — это просто сокращение. Ни один каталог не называется ~.
[4] Здесь говорится о командных оболочках tcsh и bash. В системе Linux командные оболочки — это программы, которые читают команды, отдаваемые им пользователем, и выполняют их. Большинство вариантов системы Linux для новых пользователей запускают одну из этих двух командных оболочек: bash или tcsh.