Знакомство с Linux. Часть 4. Первая встреча с командной строкой

Во времена бурной моей юности хитом №1 среди компьютерных игр был Quake (тот самый, первый, безо всяких номеров и дополнительных слов в названии). И вот парадокс: сообщество его поклонников, едва успев образоваться, дало трещину, рассевшись на две непримиримо враждующие партии: "трактористов" и "мышевиков". Первые предпочитали гонять своего электронного аватара по готическим подземельям исключительно при помощи клавиатуры; вторые, соответственно, допускали использование мыши для поворотов и (или) прицеливания. Ненавидели представители обеих группировок друг друга истово; почему - объяснить толком никто не мог.

Очень странно, но в компьютерном мире борьба идеологий - явление повсеместное. Веб-программистов, предпочитающих JavaScript, высмеивают фанаты PHP. Художники, сидящие за Макинтошами, свысока посматривают на "этих писишников". И уж конечно, линуксоиды и сторонники Windows пребывают в состоянии перманентной лютой дружбы...

...А почему, собственно? Причина, по которой футбольные фэны разных клубов бьются друг с дружкой насмерть, ясна: ветер в голове. Но уж компьютерщики-то, казалось бы, по долгу службы частенько используют по прямому назначению серое вещество черепной коробки! Должны бы понимать, что мирное сосуществование двух систем вполне возможно? Да, кое-кто понимает. Но такие люди как раз, как правило, молча и неприметно делают своё дело. А крики "суксь" и "маздай", издаваемые недалёкой массой с обеих сторон, слышны далеко... (Кстати, в курсе ли вы, что в среде прогрессивной молодёжи принято теперь вместо "маздай" говорить "мус тод", - с немецким приветом?)


Давайте попробуем оставить в стороне предвзятость (если у кого-то из наших читателей она ещё сохранилась) и заглянем в нутро операционной системы Linux невооружённым, объективным и пристальным глазом. Нет, приступать к ручной сборке ядра мы прямо сейчас не будем, но первый шаг в этом направлении сделаем. Совсем не обязательно, что каждому захочется пройти всю дорогу до конца, однако с начальным её отрезком очень полезно познакомиться.

Речь на сей раз пойдёт у нас с вами о командной строке - том самом жупеле, которым пугают на ночь маленьких непослушных "квакеров" и "анрылистов". В среде не слишком продвинутых пользователей Windows сложилось устойчивое мнение, что так называемая командная строка есть жуткое проклятие, доставшееся компьютерному миру от времён машины PDP-11 с телетайпным выводом, и что узколобые юниксоиды держатся за эту строку, как заигравшиеся масоны за свои мастерки и молоточки, - из чистого упрямства и нежелания взглянуть в глаза окружающей действительности. "Какое, милые, у нас тысячелетье на дворе? - спрашивают малопродвинутые пользователи Windows у администраторов UNIX- и Linux-серверов. - Давно пора переходить на графический интерфейс! Сколько можно спать?"

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


Кстати, а вы никогда не задумывались над тем, почему печально известный BSoD - Blue screen of death, "синий экран смерти" - продолжает упорно отображаться в текстовом режиме, а не в виде очередного красивенького окошечка? Да очень просто: когда система сваливается в состояние кататонического ступора, именно текстовый режим (самый элементарный режим отображения, который поддерживает каждая видеокарта хотя бы стандарта CGA) остаётся последним пределом обороны. Зажатая в тиски критического сбоя, с перебитыми межпроцессными связями, система из последних сил тянется к тому каналу вывода, который требует для своего поддержания минимальных ресурсов... И через этот канал доносит до нас информацию о сбое, которую смогла, погибая, зафиксировать. Такой вот цифровой героизм.

А в мире Linux место подвигу есть всегда. Работа в режиме командной строки для администратора этой системы - дело совершенно привычное. Очень важно понимать, что это не бравада, не нарочитый способ выразить своё превосходство над "мышевиками" из оппозиционного лагеря. Хотя порой и не без этого, конечно. Но смысл управления системой из командной строки - именно в минимизации расходов ресурсов на сам интерфейс управления. Потому что ресурсы эти могут пригодиться для совсем других задач, где без них действительно не обойтись. Другой аргумент в пользу командной строки - отсутствие сбоев в интерфейсе администрирования, поскольку интерфейс как таковой и сам отсутствует.

Так повелось ещё со времён не слишком быстрых машин, на которых выполнялись параллельно по несколько вычислительных задач: так было в семидесятые и восьмидесятые годы в мире UNIX, и эта идеология органично перекочевала в Linux. Администрирование здесь по-прежнему может осуществляться минимальными средствами. Пыльный поцарапанный системный блок с 386-м процессором, винчестером на 40 Мбайт и 16 Мбайт оперативки, стоящий где-нибудь под столом в серверной комнате крупной конторы, вполне может оказаться брандмауэром этой самой конторы - компьютером, на который возложен контроль за безопасностью соединений с внешним миром. И со своей задачей он будет прекрасно справляться. При этом не понадобятся даже клавиатура, мышь и монитор: системщик будет при необходимости менять конфигурацию брандмауэра, запуская сеанс связи с ним со своей личной рабочей станции.

Однако довольно лирических отступлений; перейдём к делу. А именно - к первому знакомству с той самой командной строкой, о которой каждый наверняка хотя бы наслышан. Теперь нам ясно, что способность управлять системой при помощи текстовых инструкций важна в силу своей надёжности и доступности. Давайте же обретём эту способность!

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

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

Говоря о чёрных ходах, я не имею в виду проложенные "троянцами" туннели: речь идёт именно о способах текстового входа в систему, которые остаются доступными всегда - даже если вследствие какого-то крупного сбоя видеокарта вообще откажется работать с графикой, хотя бы и в режиме 640х480х16. Чаще всего проблемы с видеокартами (самыми свежими, как правило) возникают в Linux сразу после установки, если тот видеорежим, который пользователь указал при инсталляции как предпочтительный (какой-нибудь 1600х1200х16М) карточка поддерживать отказывается наотрез. Вот тут запустить текстовую консоль, проникнуть в систему, почитать лог-файлы и продиагностировать сбой - именно то, что необходимо сделать. Представляете, насколько легче дышалось бы в Windows, если бы после появления очередного BSoD можно было бы запустить сеанс MS-DOS без перезагрузки? Мечты, мечты... В Windows такое, к сожалению, невозможно в принципе; почему именно, мы с вами как-нибудь разберёмся.

Итак, текстовая консоль. Отыщите на клавиатуре две первые клавиши из знаменитой комбинации Ctrl+Alt+Del и нажмите их, а третьей - вместо Del - пусть будет калвиша F2. Нажали? Что-нибудь изменилось на экране?

Если вместо красочной многоцветной картинки перед вами появился чёрный экран с парой строк текста в левом верхнем углу - добро пожаловать на порог Linux. Если такой же экран вы наблюдали с самого начала, удостоверьтесь в том, что этот от него отличается: наберите, например, после приглашения localhost login: имя пользователя - да хоть что-нибудь - и попереключайте режимы: Ctrl+Alt+F2, Ctrl+Alt+F1, Ctrl+Alt+F3... Всё это - различные виртуальные консоли для входа в одну и ту же, истинно многопользовательскую систему. Ну так войдём же!

localhost login: root
password: (набираем здесь указанный при установке пароль...)

И вот в итоге - если пароль верно набран - перед нами отрывается, наконец, легендарная Командная Строка:


Посмотрим, что тут можно сделать...

Прежде всего, сориентируемся на местности. Мигающий курсор - это понятно: здесь можно вводить какие-нибудь команды. Пока не знаем, какие именно, но сейчас разберёмся. Решётка (знак диеза) - это просто удобный визуальный маркер начала строки, точно так же как квадратные скобки сами по себе ничего особенного не означают, а присутствуют просто для наглядности. Хотя, строго говоря, и у этих скромных текстовых украшательств есть своя функция - привлечение внимания пользователя к тому, что он работает в системе на данный момент именно как root. Потому что если бы мы вошли сейчас не супер-, а обычным пользователем, строка приглашения ко вводу команд была бы оформлена несколько иначе, а именно так:


То, что поле, перед которым мигает курсор, помечено решёткой, означает по умолчанию: "Внимание! Вы работаете в режиме root, будьте осторожны!" Ведь суперпользователь обладает здесь абсолютными привилегиями, и любое его неловкое действие может иметь самые тяжкие последствия. А если вместо решётки стоит знак доллара - всё в порядке, резвитесь; много напортачить не удастся. Внешний вид приглашения командной строки можно менять и настраивать под себя, но этим мы займёмся не скоро. Пока - о насущном.

Первое "слово" в приглашении - то, что стоит перед собачкой - это логин пользователя, работающего с данной командной строкой. За собачкой стоит сетевое имя компьютера. Поскольку мы поставили систему на домашней машине, никакой сети нет, используется значение по умолчанию - localhost. Далее через пробел указано наименование той директории, в которой мы прямо сейчас находимся; точнее, её относительное название. Давайте посмотрим, что тут есть?

Команда dir - если кто-то помнит ещё о такой со времён MS-DOS - тут сработает. Но правильнее (да и короче) использовать всё-таки команду ls, сокращённую от "list", "список". Она нам, строго говоря, тоже ничего не даст: в домашней директории root пока что пусто. Хотя... Давайте выполним эту команду с параметром -a, чтобы отобразить и скрытые файлы (те, имена которых начинаются с точки).


Ого! Оказывается, даже у только-только появившегося на виртуальный свет пользователя домашняя директория уже полна служебными конфигурационными файлами для различных стандартных программ Linux. Нам пока нет резона углубляться в предназначение этих файлов, но зато мы можем узнать абсолютный путь к тому месту, в котором находимся, исполнив команду pwd:


Вот и первое открытие: домашний каталог суперпользователя располагается на втором уровне вложенности (первый уровень - это /, называемый корневым; не надо путать его и каталог суперпользователя /root!). Путешествовать по дереву каталогов можно способом, опять-таки известным со времён MS-DOS:


Корневой каталог содержит ссылки на все важнейшие папки системы. Так, в /bin и /sbin хранятся программы - в основном, системные утилиты, в /usr - прочие программы, в /var - системные логи и почтовые ящики, в /home - директории непривилегированных пользователей, в /tmp - временные файлы... Что такое /dos-c и /dos-d? Это ссылки на разделы FAT32, которые я при инсталляции Linux создал на этапе разметки диска. Ссылки указывают, соответственно, на диски C и D ОС Windows. И они доступны из Linux, что любопытно, а вот файлы Linux из-под Windows не видны! Посмотрим, что у нас на C...


Группа вопросительных знаков символизирует, очевидно, кириллическое наименование директории "Мой компьютер". М-да... Похоже, с поддержкой русского в именах файлов, да ещё и на чуждым образом отформатированных разделах, в Linux не всё гладко... Примем это к сведению и двинемся дальше.

(Кстати, если вы точно помните, что при установке системы отводили раздел под FAT32 и как-то его именовали, а сейчас он не виден в корневой директории, не отчаивайтесь. Мы его увидим. Для этого потребуется освоить систему чуть глубже, но у нас всё обязательно получится).

Вернёмся в домашнюю директорию. Можно сделать это командой cd /root, благо мы знаем, как она называется, а можно набрать и просто cd - без аргументов. В этом случае по умолчанию будет совершен переход именно домой.

И давайте теперь научимся корректно покидать систему. Для завершения работы от имени пользователя root исполните команду, гм, "заткнись немедленно!":


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

И пока остановимся на этом. А в следующий раз займёмся изучением системы более углублённо: проверим, как работает звук, научимся обращаться к дискетам и CD/DVD, изучим лог-файлы загрузки и некоторые системные сообщения... Будем осваиваться, одним словом. Увидим, насколько мощной и многофункциональной может оказаться обыкновенная командная строка.