Необходимость работать в текстовой консоли — тот самый утес, о который чаще всего разбиваются благие намерения пользователей, пожелавших быстро освоить Linux. Причем, как правило, еще до того, как они попытаются хотя бы попробовать установить систему. Миф о недружелюбности командной строки так прочно укоренился в массовом сознании, что разрушить его не просто.
Однако это действительно не более чем миф, который можно придумать про что угодно. Хотя бы про обычную компьютерную клавиатуру. Тот, кто видит ее впервые в жизни, будет немало удивлен тому, что кнопки располагаются не по алфавиту. И наверняка такое решение покажется ему весьма странным, поскольку поначалу каждую букву приходится довольно долго искать.
Тем не менее никому не приходит в голову разместить клавиши каким-то иным способом. Поскольку удобство именно такого на первый взгляд недружественного интерфейса давно доказано и не вызывает сомнений. А уж если освоить набор вслепую, то временные затраты на изучение окупятся многократно.
Как и в случае с клавиатурой, неприятие командной строки чаще всего носит не технический, а психологический характер. Работа в консоли — не вынужденная мера, вызванная отсутствием “нормальных” средств, и не бравада “продвинутых” пользователей, а самый быстрый и удобный интерфейс для решения ряда задач.
В чем же ее достоинства? Прежде всего — в универсальности. Независимо от того, какой дистрибутив вы используете, базовые команды будут одни и те же. Нельзя забывать и о том, что текстовый режим устойчивее графического. Вспомните хотя бы знаменитый BSoD (“синий экран смерти”) в Windows. Надпись почему-то отображается именно в консоли, а не в красиво прорисованном окне.
Поскольку графический интерфейс Linux — это по сути дела обычная прикладная программа, то ее неработоспособность не приводит к общему краху системы. Если пользователь не боится текстового режима, то он быстро внесет необходимые изменения в соответствующий конфигурационный файл и заново запустит систему. В противном случае придется прибегнуть к полной ее переустановке, что значительно дольше.
Наконец, консольные команды удобны при выполнении некоторых рутинных операций. Ведь компьютер и придуман для автоматизации рабочего процесса. Разумеется, для того чтобы работа в консоли была эффективной, пользователю придется потратить немного времени на изучение стандартных команд Linux. Но оно компенсируется довольно быстро.
Перейти в режим командной строки можно двумя способами. Первый — активация текстовой консоли. Для этого следует нажать комбинацию клавиш Ctrl+Alt+F[номер консоли]. Появится строка приглашения на регистрацию в системе, где нужно последовательно набрать логин и пароль. Второй способ — открытие консоли непосредственно в оконном менеджере. При этом пользователь продолжает работать в графическом режиме. Важно понимать, что и в первом, и во втором случаях все запущенные программы будут продолжать нормально функционировать.
Если с запуском терминала в графическом режиме всё понятно, то активация дополнительных консолей может вызвать ряд вопросов. Какую конкретно функциональную клавишу надо нажать? Сколько консолей может функционировать одновременно и можно ли изменить их количество? Как вернуться обратно в графический интерфейс?
Как правило, по умолчанию доступно шесть текстовых консолей. Поскольку поддержание каждой требует примерно 4 Мб памяти, то на слабых машинах их число желательно уменьшить. Для этого следует открыть файл /etc/inittab с правами администратора системы, найти секцию, состоящую из записей вида “2:2345:respawn:/sbin/mingetty tty2”, каждая из которых соответствует одной консоли, и поставить знак комментария (#) напротив лишних. Количество строк в этой секции равно числу текстовых консолей. Причем в большинстве дистрибутивов одна из них служит не для регистрации пользователя, а для системных сообщений. Не правда ли, очень удобно в случае каких-либо неполадок: история болезни всегда доступна.
Первая цифра в строке — это номер консоли и соответственно номер функциональной клавиши, которую надо использовать в комбинации для ее вызова. Для переключения текстовых консолей нужно нажимать не Ctrl+Alt+F[номер консоли], а просто Alt+F[номер консоли] — клавиша Ctrl применяется только в графическом режиме.
Для возврата в графический интерфейс следует активировать соответствующую консоль. Ее номер на единицу больше того, что был последним прописан в /etc/inittab. Например, если используется шесть текстовых консолей, то оконный менеджер запущен на седьмой.
При работе в текстовом режиме визуальный маркер начала строки может быть двух видов: знак диеза (#) и знак доллара ($). Первый указывает на то, что пользователь работает под именем root и ему открыты все файлы системы. В этом случае необходимо проявлять особую осторожность — необдуманные действия чреваты серьезными последствиями.
Обычный пользователь обозначается знаком доллара. Тут тоже есть небольшой нюанс. Концепция ограничения прав доступа приводит к тому, что некоторые команды, выполнение которых подразумевает расширенные полномочия, откажутся запускаться. Причем специфика UNIX такова, что никаких подсказок или пояснений на экране не появится — предполагается, что человек полностью контролирует систему и нисколько не нуждается в помощи программ, от которых требуется только беспрекословное выполнение распоряжений хозяина.
С другой стороны, ищущий дополнительную информацию всегда ее найдет. Одна из самых главных и часто используемых команд — man [имя]. Она выведет на экран справочное руководство, посвященное какому-либо объекту системы, название которого указывается в качестве аргумента. Разумеется, информация берется не из воздуха, а из файла, для чего он должен физически присутствовать на диске. Обратите на это внимание — некоторые разработчики пытаются уменьшить объем дистрибутива, не включая в него страницы помощи. В этом случае их надо установить отдельно.
Поскольку man — точно такой же объект системы, как и все остальные, справку по нему можно получить, набрав команду man man. По всей видимости, пользователю, первый раз загрузившему Linux, следует начать именно с нее.
Каждое руководство состоит из разделов, называемых полями. Поле NAME предназначено для краткой информации об объекте. В поле SYNOPSIS содержатся сведения о способах запуска программы. И наконец, поле DESCRIPTION — это подробное описание.
Но что делать пользователю, если он пока не знает, какая программа может выполнить его задание? Воспользоваться командами apropos или whatis. Они предназначены для поиска информации в руководствах. Различие между ними заключается в том, что первая осуществляет поиск по всей базе, а вторая — только по именам объектов, содержащихся в поле NAME. Очевидно, что одна работает медленнее, но выдает больше сведений, чем другая.
Чаще всего в текстовом режиме выполняются операции по настройке системы. Означает ли это для пользователя, что ему придется активировать новую консоль комбинацией Ctrl+Alt+F[номер консоли]? Вовсе нет: в большинстве случаев графический режим покидать не обязательно.
Для того чтобы запустить какую-либо программу с правами администратора, требуется открыть терминал и набрать команду su без параметров, затем система попросит ввести пароль пользователя root -- и полный доступ к файлам вам обеспечен.
Теперь рассмотрим несколько примеров, которые свидетельствуют о том, что командная строка придумана вовсе не для издевательства над пользователем, а, наоборот, для его удобства. Выполним ряд довольно популярных операций без помощи “меню и кнопочек”.
Допустим, вам требуется разбить файл на несколько частей, чтобы отправить его по электронной почте (исходный размер настолько большой, что сервер его не пропускает). Для этого необходимо использовать команду split. Она копирует файл, разбивая его на отдельные фрагменты заданного размера (по умолчанию — 1 Мб). В качестве аргументов следует использовать два имени: исходного объекта и префикса того, что получается на выходе.
Например, имеется большой видеоролик name.avi. Надо разбить его на части размером в 10 Мб. Команда будет выглядеть следующим образом: split -b1000k name.avi name. Первый аргумент указывает объем получаемого объекта, второй — имя исходного, третий — префикс имени результата. Таким образом, в результате операции будут получены файлы name.aa, name.ab, name.ac и т. д. Собрать кусочки воедино поможет команда cat name.* > name.avi.
Нередко у пользователя возникает необходимость сравнить два файла. Самый простой способ — воспользоваться командой cmp [имя первого файла] [имя второго файла]. Если объекты полностью совпадают, то программа молча завершит работу, ибо сообщить ей нечего. Если же она обнаружит какое-то отличие, то выдаст пользователю номер соответствующей строки.
Если требуется полный список несоответствий, то следует воспользоваться командой diff [имя первого файла] [имя второго файла] При этом программа выдаст на экран полный отчет.
В ряде случаев бывает удобно, чтобы информация о различиях не появлялась на экране, а сразу сохранялась в каком-либо файле. Для этого можно прибегнуть к функции перенаправления вывода, и команда будет выглядеть так: diff [имя первого файла] [имя второго файла] > [имя файла отчета].
Операция перенаправления вывода позволяет обратиться к помощи довольно простых на первый взгляд команд для существенного ускорения текущей работы -- например, по составлению полного списка всех файлов, входящих в каталог.
За просмотр содержимого директории отвечает программа ls. Чтобы результат ее работы сохранялся в файле, необходимо использовать уже известную нам возможность и набрать в консоли ls [имя каталога] > [имя файла, куда будет записана информация].
Наконец, последнее замечание. Пользователи часто сетуют на то, что работа в командной строке связана с повышенной нагрузкой на память. Мол, приходится держать в голове все названия служебных утилит. Это не совсем так — в большинстве случаев достаточно знать лишь несколько первых символов. По нажатии клавиши Tab оболочка сама попытается дописать полное название (или предложить варианты, если таковые имеются). ка
* Продолжение цикла “Linux для начинающих”. Начало см. в PC Week/RE, №№36-39 за 2007 г.