Основы работы с Linux
Общие сведения
Linux - это многопользовательская многозадачная сетевая операционная система (точнее, собственно Linux называется ядро операционной системы). Многозадачная означает, что система обеспечивает одновременное выполнение многих приложений, многопользовательская - обеспечивает одновременную работу нескольких пользователей, управляет корректным разделением ресурсов между пользователями, сетевая - может быть включена в локальную вычислительную сеть и может предоставлять другим компьютерам в сети определенные ресурсы.
Linux является свободным программным обеспечением. Любой пользователь может бесплатно (если не считать плату за передачу информации) получить исходный текст Linux, скомпилировать, изменить и самостоятельно распространять Linux. Именно этим занимаются многие компании, выпускающие дистрибьютивы Linux: Mandriva (Mandrake) Linux, Debian Linux, Ubuntu Linux, Fedora Linux, Red Hat Linux, SuSE Linux и др. Как правило, дистрибьютив содержит средства установки Linux на новую машину, само ядро Linux, командные и графические оболочки, средства разработки программ под Linux и набор прикладных программ для Linux.
Каждый пользователь, работающий с Linux, взаимодействует с ней при помощи терминала. Под терминалом подразумевается не только устройство ввода-вывода данных, подсоединенное локально или удаленно к процессорной системе, исполняющей код Linux, но и различные программы-эмуляторы терминалов, позволяющие подключиться к Linux и использовать устройства ввода-вывода компьютера (клавиатура и экран), на котором запущена эта программа, как удаленный терминал Linux. Устройство ввода-вывода данных, являющееся частью процессорной системы, исполняющей код Linux, называется системной консолью. Различают графические и текстовые терминалы.
Графический терминал
Графический терминал предоставляет пользователю возможность работать с программами с графическим интерфейсом с помощью мыши и различных объектов экрана (кнопки, окна, полосы прокрутки, выпадающие меню и другие атрибуты GUI). Наиболее распространена реализация графического терминала X Window System. (Терминалы, поддерживающие эту спецификацию, называют X-терминалами.) Графический терминал может быть реализован как на системной консоли, так и удаленно.
Где отобразить окно программы, средства изменения окна, средства оформления окна (заголовок, рамка и т. п.) - все эти задачи решаются специальным приложением - диспетчером окон. Существует огромное количество диспетчеров окон для Linux: IceWM, KDE, GNOME и многие другие.
Если Linux настроен на режим графического терминала, при запуске операционной системы стартует графический менеджер входа в систему, который обеспечивает не только ввод логина и пароля пользователя, но и выбор диспетчера окон (эта функция обычно называется "выбор типа сеанса"), а также команды выключения и перезагрузки компьютера. Если графическая оболочка не стартует автоматически, то её можно запустить из командной строки при помощи программы startx.
Рисунок 1 - Вид пользовательского интерфейса в KDE
Пользовательский интерфейс в графической оболочке обычно представляет собой рабочий стол, на котором располагаются значки устройств и часто используемых программ, а также одна или несколько панелей инструментов (рис. 1). На панели инструментов помещаются апплеты - программные модули, графический интерфейс которых связан с панелью. На рис. 1 показана панель инструментов со следующими апплетами: 1 - кнопка запуска меню приложений (аналог кнопки "Пуск" в Windows), 2 - значки запуска часто используемых программ, 3 - панель задач, 5 - апплет переключения рабочих столов (переключаться между рабочими столами можно также при помощи комбинаций CTRL-F1, CTRL-F2, CTRL-F3, ...), а также показаны апплеты: мультимедиа-плеер, фаза Луны, буфер обмена, часы. Удаление и перемещение апплетов по панели выполняется при помощи элементов управления 4. Панель может быть временно убрана с рабочего стола при помощи кнопки 6. Различные настройки рабочего стола (количество рабочих столов, количество панелей, их расположение, управление фоном рабочих столов, экранной заставкой) в KDE доступны при помощи программы "Центр управления KDE" (kcontrol).
Большинство программ доступно для запуска через меню запуска приложений (кнопка "К" - рис. 1, поз. 1). Однако часто бывает, что при установке новой программы её ярлычок не добавляется в это меню или попадает туда с опозданием. Тогда имеет смысл запускать такую программу по имени её исполняемого файла. Приглашение для ввода имени запускаемой программы можно получить в меню "К", "Выполнить программу:", или при помощи комбинации ALT-F2.
Наиболее популярные программы с графическим интерфейсом:
- калькулятор kcalc;
- браузеры firefox, mozilla, konqueror;
- текстовый процессор oowriter, табличный процессор oocalc (пакет OpenOffice.org);
- графический редактор gimp;
- среда разработки программ kdevelop;
- аудио-плеер xmms;
- видео-плеер gmplayer;
- эмуляторы текстового терминала kconsole, xterm, rxvt и др.
Полезные комбинации клавиш графической оболочки:
- CTRL-ALT-ESC - снять неотвечающее приложение (при этом курсор мыши принимает вид "весёлого Роджера", после чего надо щёлкнуть по окну "зависшей" программы).
- CTRL-ALT-Backspace - перезапуск графической оболочки (при этом все запущенные в оболочке программы будут сняты).
- CTRL-ALT-F1/F2/F3: - переключение на первую (вторую, третью, ...) текстовую консоль.
Для переключения раскладки клавиатуры могут использоваться следующие комбинации клавиш: CTRL-SHIFT (только правые или только левые или любые), кнопка ÿ (Windows), правый CTRL, CTRL-CapsLock, CTRL-ALT-k и др. Режим включенной альтернативной раскладки (кириллица) обычно сопровождается горящим индикатором ScrollLock.
Текстовый терминал
Текстовый терминал крайне нетребователен к аппаратным средствам, поэтому и аппаратные реализации текстового терминала, и программы-эмуляторы для других компьютеров очень просты. Реализации текстовых терминалов различаются по своим возможностям: одни терминалы поддерживают цвета, мышь и псевдографические примитивы, на других остается довольствоваться монохромным режимом с маленьким разрешением. Основная особенность Linux состоит в том, что пользователь может использовать ресурсы компьютера под управлением Linux, находясь территориально в любом месте (при наличии канала связи). Более того, один и тот же пользователь может параллельно использовать ресурсы нескольких компьютеров с Linux. И наоборот, ресурсы одного и того же компьютера могут одновременно использовать несколько пользователей.
Так же, как и на графическом терминале, работа пользователя на текстовом терминале начинается с ввода регистрационной информации: "логина" (имени учётной записи) и пароля - в ответ на приглашение системы:
При наборе имени пользователя следует иметь в виду, что Linux различает строчные и прописные буквы. После ввода регистрационного имени (завершающегося нажатием на Enter), система предлагает ввести пароль:
При вводе пароля следует быть особенно внимательным, поскольку он не отображается. Если при регистрации произошла ошибка, система выдаст сообщение
login:
После успешной регистрации система выводит некоторую актуальную информацию, например, кратко сообщает свою версию, имя компьютера и идентификатор назначенного пользователю терминала (TTY), а также выводиться сообщение о наличии новой почты. После этого появляется приглашение командного интерпретатора системы (текстовой оболочки) - система готова принимать команды пользователя:
Вид приглашения определяется настройками пользователя. Обычно приглашение содержит имя пользователя, название системы и текущий каталог. Завершается приглашение знаком $ (или # - для администратора, пользователя root).
Ввод команды exit или logout закончит сеанс работы с системой.
Системная консоль Linux предоставляет возможность разделять клавиатуру и экран между несколькими "виртуальными" терминалами-консолями. Переключение между этими виртуальными терминалами осуществляется при помощи комбинаций ALT-F1, ALT-F2 : и т. д. Обычно доступно 6 виртуальных текстовых консолей. Если в системе настроены графические терминалы, то они занимают виртуальные консоли, начиная с седьмой. Соответственно, можно переключиться из текстового терминала на графический, нажав ALT-F7 (F8, F9, ...) Однако обратное переключение осуществляется с нажатием кнопки CTRL (т. е. CTRL ALT-Fn), т. к. комбинации ALT-Fn используются графическими программами.
Если при работе с терминалом доступна мышь, то выделение мышью фрагмента текста вызывает копирование этого текста в буфер обмена. Текст может быть вставлен в текущей позиции курсора (не курсора мыши!!!) при нажатии на правую кнопку мыши. Некоторые программы используют мышь по-своему.
В командной строке текстовой оболочки пользователь набирает команды. Строчные и заглавные буквы в командной строке РАЗЛИЧАЮТСЯ! Команды, их опции и имена файлов следует указывать в правильном регистре (обычно все строчные). Команды могут быть внешние (исполняемые файлы) или внутренние (встроенные команды оболочки). При выполнении внешних команд надо учитывать, что система должна знать путь к файлу - он должен находиться в одной из директорий, указанной в переменной окружения PATH. Linux не ищет исполняемый файл в текущем каталоге, если только путь './' не присутствует в переменной PATH. Если требуется запустить программу, находящуюся в каталоге, не указанном в PATH, обязательно надо указать путь к исполняемому файлу.
Оболочка хранит историю последних набранных в ней команд. Перемещение по истории команд осуществляется при помощи клавиш ↑ (вверх) и ↓ (вниз). Поиск в истории команд - CTRL-r. Чтобы просмотреть историю команд, можно воспользоваться встроенной командой history.
Оболочка также предоставляет средства автозавершения имен. Если в командной строке набрать часть имени команды или файла и нажать TAB, оболочка закончит имя или выведет все возможные варианты завершения имени. Если вариантов очень много, пользователю будет выдан запрос:
Например, если в командной строке набрать his и нажать TAB, оболочка дополнит это имя до команды history. Если же набрать только hi, то система выведет несколько вариантов завершения имени.
Справочная система
Для получения справки о командах используется справочная команда man. Она содержит информацию о программах установленных в системе, о форматах конфигурационных файлов, о библиотечных функциях языка Си, а также о некоторых понятиях, используемых в Linux. Формат команды man:
man имя
Например:
- man man
- - получение подсказки по опциям команды man
- man bash
- - описание командного интерпретатора bash и его встроенных команд
- man ls
- - получение справки о команде ls
Программа man допускает прокрутку информации вперед и назад при помощи клавиш курсора. Другие клавиши: [<] - начало файла, [>] - конец файла, [/] - поиск вперед по шаблону, [?] - поиск назад по шаблону, [n] - продолжить поиск, [N] - продолжить поиск в обратном направлении, [h] - вывести подсказку, [q] - выход из программы.
Кроме того, большинство команд выводят краткую справку, если в их командной строке указать опцию --help. Например:
man --help
Синтаксис команд
При описании синтаксиса команд используются определённые правила. Например, команда date выдает системную дату и время. Используя различные опции (ключи), можно добиться вывода даты в различных форматах. Администратору эта команда позволяет также изменять системную дату и время. Синтаксис команды date в справочном руководстве описан так:
date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Первый вариант используется для вывода даты в различных форматах, второй - для изменения даты. При описании синтаксиса квадратные скобки [], многоточие, и вертикальная палочка | имеют специальный смысл и не должны воспроизводится в командной строке буквально.
Символы, заключённые в квадратные скобки, обозначают необязательное использование. Если применены вложенные квадратные скобки, то символы внутри вложенных квадратных скобок могут быть указаны только наряду с внешними, окружающие эти вложенные скобки символы. Например, формат задания даты указан в виде [ММДДччмм[[ВВ]ГГ][.сс]] (ММ - месяц, ДД - день, чч - часы, мм - минуты, ВВ - столетие, ГГ - год, сс - секунды). Это означает, что столетие, год и секунды указывать не обязательно. Т. е. дату можно задать в виде: 06181020, что будет означать 18 июня сего года 10 часов 20 минут. Можно дополнительно указать секунды: 061820.34, при этом синтаксис команды требует их отделения от остальной части при помощи точки. Можно указать год: 0618102094 (18 июня 1994 года 10 часов 20 минут). Если указывается столетие (2 цифры), то оно обязательно должно сопровождаться последующими двумя цифрами года: 061810201994. И, наконец, полный вариант: 061810201994.34 - 18 июня 1994 года 10 часов 20 минут 34 секунды. Причём весь код даты заключён в квадратные скобки - это означает, что команда может быть запущена вообще без этого параметра (тогда она просто выведет текущую системную дату на экран).
Вертикальная палочка разделяет эквивалентные или взаимно исключающие последовательности в синтаксисе. Т. е. команда date может быть запущена в одном из трёх вариантов:
date -u 06181020
date --utc 06181020
date --universal 06181020
В данном случае вертикальная палочка разделяет эквивалентные варианты. Опция -u (--utc, --universal) используется для задания времени по UTC (всеобщее скоординированное время, т. е. время на нулевом меридиане).
Многоточие в описании синтаксиса команды date показывает, что в командной строке может быть использовано несколько опций.
Как правило, команды используют опции двух типов: короткие (обозначаются одним символом, начинаются с одиночного минуса) и длинные (обозначаются словами или фразами, начинаются с двух минусов; если использовано несколько слов, слова разделяются одним минусом). Обычно одна и та же функция команды имеет обозначение и в виде короткой опции, и виде длинной. Например, для команды date для короткой опции -u имеется два синонима - длинные опции --utc и --universal. Для опции -R (вывод даты в формате стандарта RFC 2822 для электронных сообщений) имеется синоним --rfc-2822.
Некоторые опции могут требовать дополнительных параметров. В таком случае для короткой опции её параметр отделяется пробелом, для длинной - знаком присваивания. Например, команде date можно указать вывести на экран не текущую дату, а указанную в командной строке (не изменяя при этом системную дату). Дату можно указать при помощи опции -d или --date (в этом случае она задаётся либо по стандарту ISO 8601 ГГГГ-ММ-ДД, либо по общепринятому в США формату ММ/ДД/ГГГГ):
date -d 2007-03-13
date --date==03/13/2007
При необходимости, опции можно комбинировать, при этом порядок следования опций, как правило, роли не играет:
date --rfc-2822 -d 03/13/2007
date --date==2007-03-13 -R
Особенностью коротких опций является то, что их можно объединять за общим знаком минуса (однако, с учётом необходимых им параметров):
date -Rd 2007-03-13
В данном примере последовательность -dR будет недопустимой, поскольку опция -d требует обязательного параметра.
Некоторые символы имеют для интерпретатора специальное значение:
Если эти символы необходимо использовать в каком-либо слове командной строки
и заблокировать их специальное значение, следует применить экранирование
(quoting). Есть три способа экранирования: обратный слэш (\), апостроф (') и
кавычки ("). Неэкранированный обратный слэш блокирует специальное значение
следующего за ним одного символа. Кавычки и апострофы экранируют все символы,
заключённые между ними.
Пробел является разделителем параметров в командной строке. Если указывается
параметр, содержащий пробел, его надо экранировать, как, например, в приведённых
ниже примерах:
date --date=='2008-02-01 13:22' Комбинации клавиш
Очень многие команды работают с данными, поступающими на стандартный ввод
программы (набираются на клавиатуре). Если требуется завершить ввод таких
данных, следует нажать CTRL-d в пустой строке. Например, конец стандартного
ввода для оболочки приводит к завершению ее работы. Если оболочка была начальной,
то это эквивалентно завершению сеанса (exit или logout).
Если какая-то программа выводит много текста на экран, можно приостановить
её вывод, нажав CTRL-s. Возобновление вывода продолжится после нажатия CTRL-q.
Если система не реагирует на нажатые вами клавиши, проверьте, не нажали ли вы
случайно CTRL-s (нажмите CTRL-q).
Пролистать уже выведенную на текстовый терминал информацию можно при помощи
комбинаций SHIFT-PgUp и SHIFT-PgDn.
Прервать программу можно при помощи комбинаций CTRL-c или CTRL-\.
Завершение всех программ и перезагрузка системы - CTRL-ALT-DEL.
Перенаправление ввода-вывода
Каждая запущенная программа имеет три открытых файла с дескрипторами 0, 1 и 2.
Файл с дескриптором 0 соответствует стандартному вводу. Файл с дескриптором 1
соответствует стандартному выводу. Файл с дескриптором 2 соответствует
стандартному выводу ошибок. По умолчанию все три файла связаны с терминалом,
т. е. чтение из файла стандартного ввода приводит к вводу данных с клавиатуры,
а запись в файл стандартного вывода или стандартного вывода ошибок приводит к
отображению текста на экране. Обычно в файл стандартного вывода отправляется
полезный результат выполнения программы, а в файл стандартного вывода ошибок -
диагностические сообщения. Командный интерпретатор позволяет переназначить эти
файлы, т. е. вместо терминала указанные стандартные файловые дескрипторы будут
связаны с определенным файлом.
Перенаправление вывода (n - необязательный аргумент, номер дескриптора,
по умолчанию - 1):
команда [n]> файл
Если файл не существует, он создается. Если файл существует, он усекается до
нулевого размера. Для дозаписи в указанный файл используется следующий синтаксис:
команда [n]>> файл
Перенаправление ввода (n - необязательный аргумент, номер дескриптора, по
умолчанию - 0):
команда [n]< файл
Примеры: Файловая система
Файловая система Linux организована в виде древовидной структуры каталогов,
внутри которых находятся файлы и подкаталоги. Физические или логические
устройства (диски, ленты) в файловой системе Linux не указываются. При загрузке
система определяет, какое запоминающее устройство будет предоставлять корневой
каталог. Остальные устройства внешней памяти монтируются (подключаются) в
процессе работы как каталоги внутри корневой файловой системы.
В Linux можно выделить три класса файлов: Корень или корневой каталог обозначается в отличие от DOS и Windows косой
чертой (/). Обычно корневой каталог содержит следующие подкаталоги: Максимальный размер имени файла - 65535 символов. Строчные и прописные буквы
различаются (my.txt и my.TXT - разные имена). Имя файла может содержать любые
символы, кроме косой черты. Если имя файла содержит специальные символы, при
в таком случае их надо экранировать обратной косой чертой (\) или заключать
имя файла в кавычки. Файл, имя которого начинается с точки, считается скрытым и
не отображается обычными командами просмотра каталогов.
Linux не выделяет специально расширение в имени файла. Вместо термина
"расширение" в Linux используется термин "суффикс". Использование или
неиспользование суффиксов остаётся на усмотрение пользователя. При необходимости
определить тип документа и связанное с ним приложение оболочка и прикладные
программы зачастую делают это не по суффиксу, а по содержимому файла (по
нескольким первым байтам, если это возможно).
Midnight Commander
Удобный интерфейс для навигации по файловой системе и управления файлами и
каталогами предоставляет файловый менеджер mc. Его интерфейс
аналогичен программам типа FAR, Norton Commander и т. п. (рис. 2) Перемещение
по папкам осуществляется стрелочками ↑, ↓ и кнопкой Enter. Выбор
активной панели - TAB. Клавиши F3, F4, F5, F6, F8 используются для просмотра,
редактирования, копирования, переименования и удаления выбранного файла. F7 -
создание подкаталога, F9 - вход в меню (рис. 2, поз. 1), F10 - выход из Midnight Commander.
Файлы разных классов подсвечиваются различным цветом, кроме того, Midnight
Commander добавляет перед именем специального файла определённый символ (который
не является частью имени), характеризующий его класс: каталог - имя белого цвета,
начинается со слэша (/) (рис. 2, поз. 2); исполняемый файл - имя зелёного цвета,
начинается с астериска (*) (рис. 2, поз. 5); символическая связь - начинается с
тильды (~), если ссылается на каталог, или с "эт" (@), если ссылается на обычный
файл (рис. 2, поз. 3); обычный файл - имя серого цвета. Если имя файла слишком
длинное, на панели выводится начало и конец имени файла, соединённые тильдой (~)
(рис. 2, поз. 4), а полное имя может быть отображено в информационном поле (рис. 2, поз. 6).
Midnight Commander поддерживает работу с архивами как с каталогами, т. е.
для просмотра архива надо в него "войти" (Enter). Извлечение файлов из архива
достигается "копированием" (F5). Стандартные для Linux типы архивов: ".tgz"
(".tar.gz"), ".tar.bz2", а также мультиплатформенные ".zip", ".rar", ".arj",
".lhz" и др. при условии, что соответствующие команды установлены в системе.
Клавиша ESC в текстовых терминалах используется для задания управляющих
последовательностей. Например, если вы работаете с терминалом, который не
поддерживает функциональные клавиши F1, F2, ..., то соответствующие команды для
Midnight Commander можно подать при помощи ESC: ESC,1 соответствует F1, ESC,2
соответствует F2, ... ESC,0 соответствует F10. Запись "ESC,1" означает, что
последовательно нажимаются клавиши: сначала - ESC, затем 1. Чтобы выйти из
диалоговых окон mc, приходится нажимать ESC дважды.
Множество функций в Midnight Commander доступно через комбинации клавиш,
начинающихся с клавиши META. На клавиатуре IBM PC-совместимого компьютера её
роль выполняет ALT. Т. е. для вызова функции меню "Файл", "Quick CD" (смена
каталога) в подсказке написано M-c, что соответствует комбинации ALT-c. Для
выполнения команды с отображением её стандартного вывода в окне просмотра
("Файл", "Filtered View") указана комбинация M-!, что соответствует ALT-SHIFT-1.
Команды можно набирать в командной строке - рис. 2, поз. 7. Чтобы вставить в
эту командную строку имя выделенного на панели файла, надо нажать ESC,Enter.
Midnight Commander имеет собственные средства хранения истории команд, которая
вызывается комбинацией ALT-h. Выполнив команду, Midnight Commander может вывести
приглашение нажать любую клавишу, прежде чем вновь отобразить панели, тем самым
закрыв вывод только что завершившейся команды. Однако эта возможность
определяется типом терминала и настройкой заданной через меню "Настройки",
"Конфигурация", пункт "Пауза после выполнения:".
Другой способ скрыть панели и просмотреть вывод команд - при помощи комбинации
CTRL-o. Обратное включение панели - также CTRL-o. В режиме, когда панели скрыты,
пользователю доступна командная строка оболочки, в которой действуют стандартные
для неё комбинации клавиш (история - ↑ ↓, автозавершение - TAB и др.)
Если пользователь начнёт ввод команды в этой командной строке, то запуск команд
из командной строки режима панелей становится недоступен - Midnight Commander в
таком случае выдаст предупреждение - рис. 3. Проблема устраняется, если
переключится на второй командный интерпретатор (скрыть панели при помощи CTRL-o)
и завершить начатую там команду, нажав Enter. Midnight Commander не обновляет
информацию на панелях автоматически, если содержимое текущего каталога было
изменено в процессе выполнения такой команды, Чтобы перечитать каталог, надо
нажать CTRL-r.
Средства разработки программ
Интерпретатор языка Basic - yabasic.
Компилятор языка Fortran 77 - g77.
Компилятор языка C и C++ - gcc.
Программы g77 и gcc удобно использовать с опцией -o,
которой необходим параметр - имя выходного файла. Если эту опцию не указывать,
результат компиляции (исполняемый файл) будет в файле a.out:
Компилятор gcc отличает исходные тексты на C от исходных текстов
на C++ по суффиксу файла. У программ на C суффикс должен быть ".c", а у
программ на C++ - ".cpp".
Компилятор языка Pascal - fpc. Исполняемый файл формируется в
файле с именем, как у исходного текста, но без суффикса. Т. е. результат
компиляции: Для компилятора FreePascal существует текстовая среда разработки,
аналогичная среде TurboPascal. Она запускается командой fp.
В графической оболочке удобно использовать среду kdevelop3,
которая поддерживает большинство современных языков программирования при
условии, что их компиляторы установлены в системе.
| & ; < > ( ) $ ' \ " ` пробел табуляция перевод строки
date -d 2008-02-01\ 13:22
Рисунок 2 - Интерфейс программы Midnight Commander
Desktop tmp my.txt
Для продолжения нажмите любую клавишу...
Рисунок 3 - Попытка запустить команду из режима панелей, если ввод команды
во второй оболочке не завершён