Учебная деятельность    

Основы работы с 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.

Наиболее популярные программы с графическим интерфейсом:

Полезные комбинации клавиш графической оболочки:

Для переключения раскладки клавиатуры могут использоваться следующие комбинации клавиш: CTRL-SHIFT (только правые или только левые или любые), кнопка ÿ (Windows), правый CTRL, CTRL-CapsLock, CTRL-ALT-k и др. Режим включенной альтернативной раскладки (кириллица) обычно сопровождается горящим индикатором ScrollLock.

Текстовый терминал

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

Так же, как и на графическом терминале, работа пользователя на текстовом терминале начинается с ввода регистрационной информации: "логина" (имени учётной записи) и пароля - в ответ на приглашение системы:

login:

При наборе имени пользователя следует иметь в виду, что Linux различает строчные и прописные буквы. После ввода регистрационного имени (завершающегося нажатием на Enter), система предлагает ввести пароль:

password:

При вводе пароля следует быть особенно внимательным, поскольку он не отображается. Если при регистрации произошла ошибка, система выдаст сообщение

Login incorrect.
login:

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

[pupkin@somehost homedir] $

Вид приглашения определяется настройками пользователя. Обычно приглашение содержит имя пользователя, название системы и текущий каталог. Завершается приглашение знаком $ (или # - для администратора, пользователя 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, оболочка закончит имя или выведет все возможные варианты завершения имени. Если вариантов очень много, пользователю будет выдан запрос:

Display all 2515 possibilities? (y or n)

Например, если в командной строке набрать 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'
date -d 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]< файл

Примеры:

date >1.txt
- вывод даты в файл 1.txt
date -d 9999-99-99 2>2.txt
- вывод ошибок в файл 2.txt

Файловая система

Файловая система 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).


Рисунок 2 - Интерфейс программы Midnight Commander

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 может вывести приглашение нажать любую клавишу, прежде чем вновь отобразить панели, тем самым закрыв вывод только что завершившейся команды. Однако эта возможность определяется типом терминала и настройкой заданной через меню "Настройки", "Конфигурация", пункт "Пауза после выполнения:".

[pupkin@somehost homedir]$ ls
Desktop tmp my.txt
Для продолжения нажмите любую клавишу...

Другой способ скрыть панели и просмотреть вывод команд - при помощи комбинации CTRL-o. Обратное включение панели - также CTRL-o. В режиме, когда панели скрыты, пользователю доступна командная строка оболочки, в которой действуют стандартные для неё комбинации клавиш (история - ↑ ↓, автозавершение - TAB и др.) Если пользователь начнёт ввод команды в этой командной строке, то запуск команд из командной строки режима панелей становится недоступен - Midnight Commander в таком случае выдаст предупреждение - рис. 3. Проблема устраняется, если переключится на второй командный интерпретатор (скрыть панели при помощи CTRL-o) и завершить начатую там команду, нажав Enter. Midnight Commander не обновляет информацию на панелях автоматически, если содержимое текущего каталога было изменено в процессе выполнения такой команды, Чтобы перечитать каталог, надо нажать CTRL-r.


Рисунок 3 - Попытка запустить команду из режима панелей, если ввод команды во второй оболочке не завершён

Средства разработки программ

Интерпретатор языка Basic - yabasic.

Компилятор языка Fortran 77 - g77.

Компилятор языка C и C++ - gcc.

Программы g77 и gcc удобно использовать с опцией -o, которой необходим параметр - имя выходного файла. Если эту опцию не указывать, результат компиляции (исполняемый файл) будет в файле a.out:

gcc integral.c
- скомпилировать файл integral.c и поместить результат в a.out;
gcc -o integral integral.c
- скомпилировать файл integral.c и поместить результат в integral.

Компилятор gcc отличает исходные тексты на C от исходных текстов на C++ по суффиксу файла. У программ на C суффикс должен быть ".c", а у программ на C++ - ".cpp".

Компилятор языка Pascal - fpc. Исполняемый файл формируется в файле с именем, как у исходного текста, но без суффикса. Т. е. результат компиляции:

fpc integral.pp
- будет помещён в файл integral.

Для компилятора FreePascal существует текстовая среда разработки, аналогичная среде TurboPascal. Она запускается командой fp.

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