Тихомиров Владимир Олегович Введение в Linux Тихомиров Владимир Олегович Введение в Linux Учебный курс.

Презентация:



Advertisements
Похожие презентации
Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______ Масштаб 1 : 5000.
Advertisements

Приложение 1 к решению Совета депутатов города Новосибирска от Масштаб 1 : 5000.
Урок 2. Информационные процессы в обществе и природе.
В 2014 году «Колокольчику» исполняется 50 лет!!! 208 чёрно-белых фотографий из детсадовского архива Как молоды мы были …
Е.А. Тулаева МОУ СОШ 18 г.Пензы Текстовый процессор Microsoft Word Технология обработки текстовой информации.
Тема «Клавиатура. Группы клавиш» Клавиатура компьютерное устройство, которое располагается перед экраном дисплея и служит для набора текстов и управления.
Тема «Клавиатура. Группы клавиш» Клавиатура компьютерное устройство, которое располагается перед экраном дисплея и служит для набора текстов и управления.
Печать документов Борисов В.А. Красноармейский филиал ГОУ ВПО «Академия народного хозяйства при Правительстве РФ» Красноармейск 2009 г.
Таблицы Word План 1.Таблица в Word – это … 2.Способы создания таблиц 3.Форматирование текста в таблицах.
Тема «Клавиатура. Группы клавиш» Клавиатура компьютерное устройство, которое располагается перед экраном дисплея и служит для набора текстов и управления.
Microsoft ® Word 2010: обучающий курс Создание первого документа Word, часть II.
1. ЧТО ТАКОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ? НАБОР ПРОГРАММ В ПАМЯТИ КОМПЬЮТЕРА 2. ИЗ КАКИХ ЧАСТЕЙ СОСТОИТ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ? КРОССОВЫЕ ТЕСТОВЫЕ СИСТЕМНЫЕ.
«Первые шаги в MS Excel ». НАЗНАЧЕНИЕ И ОБЛАСТИ ПРИМЕНЕНИЯ ТАБЛИЧНЫХ ПРОЦЕССОРОВ ПРАКТИЧЕСКИ В ЛЮБОЙ ОБЛАСТИ ДЕЯТЕЛЬНОСТИ ЧЕЛОВЕКА, ОСОБЕННО ПРИ РЕШЕНИИ.
Один из видов презентации на компьютере это набор слайдов, которые можно выводить последовательно друг за другом. Часто такое компьютерное произведение.
Тема «Клавиатура. Группы клавиш» Клавиатура компьютерное устройство, которое располагается перед экраном дисплея и служит для набора текстов и управления.
Возможности Microsoft Excel. Автор: Боброва Татьяна Анатольевна, учитель информатики МОУ «Берёзовская средняя общеобразовательная.
Урок juuli a. 22:57:58.
Сетевые службы Для конечного пользователя сеть это не компьютеры, кабели и концентраторы и даже не информационные потоки, для него сеть это, прежде всего,
1 Создание и редактирование таблиц (продолжение) Занятие 8.
Тестовый контроль по теме: Автор: учитель информатики и математики МОУ «Краснослободская средняя общеобразовательная школа 2» Белякова И.Н.
Транксрипт:

Тихомиров Владимир Олегович Введение в Linux Тихомиров Владимир Олегович Введение в Linux Учебный курс

В.Тихомиров "Введение в Linux"2 Введение в Linux Занятие первое u Цели и назначение курса u Применяемые в презентациях условные обозначения u Основные особенности операционной системы Linux u Ядро системы, дистрибутивы Linux u Режимы работы. X-терминал u Синтаксис команд

В.Тихомиров "Введение в Linux"3 Цели и назначение курса u Операционная система Linux в последние годы приобретает все большее распространнение во всем мире. Помимо традиционного для семейства UNIX применения в различных серверных системах, Linux все чаще используется и на обычных персональных компьютерах. Особенно широко Linux применяется в некоторых областях научных исследований, требующих проведения сложных и долгих расчетов. u Данный курс предназначен для начинающих пользователей, которым не требуются специальные знания по установке и настройке Linux, а необходимо быстро научиться пользоваться системой. Основное внимание уделено базовым командам и программам: работе с файлами и каталогами, настройке рабочего окружения пользователя, использованию текстовых редакторов, компиляции программ, работе в сети. u Курс подготовлен в рамках Инновационной образовательной программы в Московском инженерно-физическом институте в 2007 году.

В.Тихомиров "Введение в Linux"4 Условные обозначения uВ данной презентации используются следующие способы выделения шрифтом и условные обозначения: Таким наклонным шрифтом выделены команды, вводимые пользователем с клавиатуры. То, что выводит на экран операционная система, будет выделено таким шрифтом. Так же будут выделяться имена файлов и каталогов, встречающиеся в тексте. Жирным шрифтом выделены имена команд и программ, встречающиеся в тексте. l Красным цветом выделен текст, на который следует обратить особое внимание

В.Тихомиров "Введение в Linux"5 Условные обозначения (2) Ключевые слова, такие как command, option, parameter, filename, dirname означают, что на их место необходимо поставить конкретную команду, опцию, параметр, имя файла, имя каталога соответственно. Троеточие … означает возможное повторение однотипных опций, параметров или имен файлов или каталогов в команде. Нажатие одной клавиши на клавиатуре обозначается так:. А такое обозначение: указывает на необходимость нажать клавишу и, не отпуская ее, одновременно клавишу. Необязательные параметры команд будут заключаться в квадратные скобки [ ].

В.Тихомиров "Введение в Linux"6 Основные особенности Linux Linux - операционная система UNIX семейства. Первая версия написана Линусом Торвальдсом (Linus Torvalds) в 1991 г. Основные преимущества: u Открытый код u Бесплатна u Огромное количество свободно распространяемых программ u Оперативная коррекция ошибок, дырок в системе безопасности u Мощные и гибкие возможности конфигурирования системы u Стабильная работа в многозадачном и многопользовательском режиме

В.Тихомиров "Введение в Linux"7 Основные особенности Linux (2) Основные недостатки (по-сравнению с Windows): u Более труден в освоении, менее развитый пользовательский интерфейс u Большие программные пакеты для Linux, как правило, менее функциональны u Менее развитая поддержка устройств и внешнего оборудования, особенно наиболее нового, современного u Хуже развита интернациональная поддержка (русификация) Linux наиболее широко применяется в различных серверах (mail-, Web-, файл- и др.), при построении сетей (маршрутизаторы, межсетевые экраны), в вычислительных кластерах с большим числом пользователей и задач.

В.Тихомиров "Введение в Linux"8 Ядро, дистрибутивы Kernel - ядро операционной системы Linux, заключает в себе основные ее свойства и функциональность. Дополнительная функциональность, например, поддержка устройств (сетевых карт, дисков и т.д.) может быть осуществлена динамическим подключением к ядру соответствующих программ-модулей. Версию ядра на данном компьютере можно узнать с помощью команды uname -a Дистрибутив - ядро + различные пакеты программ для установки. Работа данного компьютера под ОС Linux будет зависеть от установленного ядра, других программ, глобальной настройки системы и настройки пользователя. u Данный курс основан на дистрибутиве Scientific Linux 3, который, в свою очередь, основан на Red Hat Enterprise Linux 3, версия ядра 2.4.

В.Тихомиров "Введение в Linux"9 Режимы работы u Возможна работа в текстовом или графических режимах. Графический режим Linux основан на X Window System или X11 или просто X. В дальнейшем тексте могут встречаться такие термины, как X- терминал или X-окно, означающие работу в графическом режиме. u В современных версиях Linux cуществуют графические среды (KDE, GNOME), похожие на Windows. Однако наиболее полно использовать возможности Linux удается с помощью команд, вводимых в командной строке терминала. Командный режим позволяет также лучше понять логику и механизм работы операционной системы. u Большая часть курса посвящена командам Linux и работе в режиме командной строки.

В.Тихомиров "Введение в Linux"10 X-терминал - графическое окно для ввода команд/программ и вывода на экран текста - результата работы команд, системных сообщений и т.п. Заголовок X-терминала с функциональными кнопками для сворачивания, закрытия и т.п. Поле выводимого текста Ползунок для просмотра ушедшего содержимого окна Prompt - приглашение системы для ввода команд Строка для ввода команд Наведя курсор мыши на поле X-терминала и нажав и удерживая клавишу и одну из кнопок мыши, можно открыть меню для настройки терминала. В частности, здесь можно изменить размер используемого шрифта. u Держа нажатой левую кнопку мыши, можно выделить текст в окне X- терминала или любого другого X-окна и таким образом запомнить его в буфере обмена. Нажав среднюю кнопку мыши, можно скопировать содержимое этого буфера в то же или любое другое X-окно. X-терминал

В.Тихомиров "Введение в Linux"11 Синтаксис команд u Общий синтаксис команд: command [option…] [parameter…] Опция представляет собой либо ключевое слово, либо отдельный символ латинского алфавита. Опции предшествует знак -, либо два идущих подряд знака -- (как правило, перед опцией-словом). В качестве параметра очень часто выступают имена файлов, каталогов или программ. u Например, команда ls введенная без опций и параметров, выводит на экран список файлов в текущем каталоге. ls -l делает формат вывода более подробным. ls -t отсортирует выводимые имена файлов по времени последнего их изменения (по умолчанию список выводится по алфавиту).

В.Тихомиров "Введение в Linux"12 Синтаксис команд (2) ls -l -t ls –lt действуют одинаково: выводит подробный список файлов в текущем каталоге, отсортированных по времени. ls –lt /home/user1/progs выведет в том же формате список файлов из каталога /home/user1/progs ls --help выдаст краткую справку-помощь по использованию команды ls. В одной командной строке можно указать сразу несколько команд, разделив их знаком ;. Например: date; ls -lt

В.Тихомиров "Введение в Linux"13 Синтаксис команд (3) Длинную команду можно продолжить на новой строке, если в предыдущей в качестве последнего символа указать \ и нажать клавишу : ls --he\ lp Прервать выполнение команды: Приостановить вывод на экран: Продолжить вывод на экран: u Имена всех команд, файлов, опции и параметры являются регистро- зависимыми, т.е. строчные и заглавные буквы различаются. Сокращение команд и опций не допускаются.

В.Тихомиров "Введение в Linux"14 Введение в Linux Занятие второе u Редактирование командной строки u Буфер команд, команда history u Автодополнение команд и имен файлов u Справочная система Linux

В.Тихомиров "Введение в Linux"15 Редактирование командной строки u Linux предоставляет широкие возможности для работы с командной строкой. u Введенные пользователем в данной сессии и в данном окне терминала команды запоминаются в специальном буфере. С помощью клавиш и возможна навигация по списку введенных ранее команд. Командную строку можно редактировать, перемещаясь по ней с помощью клавиш и.

В.Тихомиров "Введение в Linux"16 Редактирование командной строки (2) Другие комбинации клавиш для редактирования командной строки: - удалить символ, предшествующий курсору; - удалить символ непосредственно над курсором; - передвинуть курсор в начало командной строки; - передвинуть курсор в конец командной строки; - удалить часть строки от позиции курсора до конца строки; - удалить полностью всю строку; - восстановить удаленную строку. u Большинство приведенных здесь комбинаций клавиш работает не только при редактировании командной строки в окне терминала, но и в текстовых редакторах, при редактировании строк в полях браузера типа Netscape и т.п.

В.Тихомиров "Введение в Linux"17 Буфер команд, команда history Команда history выводит на экран содержимое буфера, в котором запоминаются команды, введенные пользователем (вообще говоря, только в текущей сессии и в данном окне терминала), например: history 1 13:03 pwd 2 13:03 cd book/posobie 3 13:03 ls –al 4 13:03 iconv –f KOI8R –t CP1251 linux.tex >linux1251. tex Можно быстро повторить выполнение команды из данного списка, набрав !n где n – номер команды в списке.

В.Тихомиров "Введение в Linux"18 Буфер команд, команда history (2) Команда history может быть полезной, если необходимо вспомнить какую-либо сложную и длинную команду, которая вводилась уже достаточно давно, чтобы ее было просто найти помощью клавиш и. Команду history часто используют в комбинации с различными фильтрами, чтобы отобрать из списка только определенные команды: history | grep iconv выведет на экран только команду под номером 4 из приведенного списка. Введенные команды могут сохраняться и в дисковом файле (зависит от настроек и командной оболочки пользователя). Например, в bash оболочке это будет файл.bash_history в домашнем каталоге пользователя.

В.Тихомиров "Введение в Linux"19 Автодополнение команд и имен файлов Клавиша дает возможность автоматического дополнения команд и имен файлов при их вводе с клавиатуры. Так, если ввести в командной строке: chm и нажать на клавиатуре клавишу, то система дополнит введенные символы до полного имени команды: chmod, поскольку в данном случае набранное буквосочетание chm является уникальным среди всех существующих команд. Если ввести буквосочетание, которое не является уникальным, например, ch и нажать, то система выведет на экран подсказку - все возможные варианты продолжения команды: chmod, chown, chgrp и др.

В.Тихомиров "Введение в Linux"20 Автодополнение команд и имен файлов (2) Так же можно дополнять имена файлов и каталогов, встречающиеся в командах. Например, мы хотим с помощью команды more вывести на экран содержимое файла README, размещенного в каталоге /home/user1/progs Тогда, набрав: more /home/user1/progs/R и нажав, получим в командной строке: more /home/user1/progs/README при условии, что в каталоге /home/user1/progs/ существует только один файл с именем, начинающимся на R. В противном случае опять же будет выведена подсказка в виде имен всех таких файлов.

В.Тихомиров "Введение в Linux"21 Справочная система Linux u Для многих команд можно быстро получить краткую справку по их использованию, набрав в командной строке: command --help Это бывает полезно, когда вы знаете, что именно делает данная команда, но забыли, как задается какая-либо ее опция или параметр. Описания большинства команд системы хранятся в виде так называемых manual pages (справочные страницы). Справку по использованию команды command можно получить, набрав: man [n] command где n - необязательный параметр, указывающий на раздел справочных страниц. Справочные страницы делятся на разделы по темам: в первый раздел отнесены обычные команды, во второй – описание системных функций и т.д. Если опция n опущена, будет вызвана справочная страница из раздела с наименьшим номером.

В.Тихомиров "Введение в Linux"22 Справочная система Linux (2) Выполнив команду man (MANual), мы попадаем в режим просмотра справочной страницы соответствующей команды command. Основа навигации по странице такова: нажав клавишу на клавиатуре, мы продвигаемся по справочной странице вперед, нажав клавишу - назад. Если справка велика по объему, могут оказаться полезными функции поиска: /pattern ищет первое появление буквосочетания pattern в тексте страницы по направлению вперед, а ?pattern - по направлению назад. Чтобы выйти из режима просмотра справочной страницы, нажмите клавишу. Команда man используется и для поиска команд по заданному ключевому слову. Например, мы хотим найти команду, способную конвертировать графический файл из pbm (Portable Bitmap) в Postscript формат. Тогда поиск соответствующей команды можно задать, набрав: man -k pbm или: man -k postscript

В.Тихомиров "Введение в Linux"23 Справочная система Linux (3) Первая из приведенных выше команд выведет на экран список всех команд в системе, в описании которых присутствует ключевое слово pbm, а вторая - ключевое слово postscript (здесь мы имеем дело с редким в мире Linux исключением, когда регистр букв в ключевом слове несущественен). Вместе с именем команд будет дано их очень краткое описание. Используя фильтр grep (см. далее), можно задать более сложный алгоритм поиска. Например, командой man -k pbm | grep -i postscript задается поиск всех команд, в которых присутствуют как ключевое слово pbm, так и слово postscript. Если необходимо быстро узнать, содержит ли справочная страница команды command некое слово pattern, наберите man command | grep -i pattern

В.Тихомиров "Введение в Linux"24 Справочная система Linux (4) При этом pattern может и не являться ключевым словом команды. Просто если буквосочетание pattern встречается в тексте справочной страницы, то на экран будут выведены все строки, содержащие этот образец. Обратите внимание на разделы FILES и SEE ALSO, которые расположены в конце справочной страницы команды. Там указаны файлы, имеющие отношение к данной команде (если такие существуют), а также другие команды в системе на схожую тему Многие справочные страницы весьма велики по своему объему. В таком случае бывает удобно получить соответствующий текст в виде файла для того, чтобы потом просматривать его в каком-либо редакторе или распечатать текст на принтере. Следующий пример показывает, как сохранить справочную страницу программы-оболочки bash в виде текстового файла bash.txt : man bash | col -b > bash.txt

В.Тихомиров "Введение в Linux"25 Справочная система Linux (5) Команда xman - графический интерфейс к справочным страницам. Удобна тем, что представляет собой отсортированный по разделам полный список команд, системных функций, файлов и т.д. Другим источником помощи по использованию команд и программ Linux является команда info. Введенная без параметров, она открывает навигацию по доступным info pages (информационным страницам) различных команд и программ. Выделив клавишами, или интересующую нас команду и нажав, мы войдем в справочную систему info для данной команды. Того же эффекта можно добиться, если сразу ввести в командной строке: info command Система организации info-страниц является гипертекстовой. Клавиша переместит нас на следующую страницу документа, клавиша вернет на предыдущую, а - передвинет на один уровень вверх в документации. Выйти из системы info можно, нажав.

В.Тихомиров "Введение в Linux"26 Справочная система Linux (6) Содержимое info-страниц для некоторых команд повторяет содержимое справочных страниц, но иногда информационные страницы дают более подробную и более точную информацию о команде. К тому же система info лучше структурирована. К ней удобнее обращаться, когда вас интересует не отдельная команда Linux, а какой-то более общий круг вопросов, например - набор команд для работы с библиотеками откомпилированных программ. Часть команд относится к так называемым внутренним (internal) командам командной оболочки (shell), в которой они выполняются. Например, к внутренним относится команда cd с помощью которой можно сменить текущий каталог. Информация о внутренних командах содержится в справочной странице соответствующей оболочки. u Для некоторых команд и программ, установленных на компьютере, справочные и/или информационные страницы могут отсутствовать. С другой стороны, справочная информация касается не только команд, но и системных функций (второй раздел справочных страниц) или системных файлов (пятый раздел).

В.Тихомиров "Введение в Linux"27 Справочная система Linux (7) u Программы графических оболочек типа GNOME или KDE имеют собственную справочную систему. Многие пакеты программ, а также различные комплексные вопросы освещены в документации, представленной в текстовом или HTML форматах. Среди подобной документации отметим так называемые HOWTO страницы. Например, Emacs HOWTO описывает работу редактора еmacs, Security HOWTO освещает вопросы, связанные с компьютерной безопасностью и т.д. HOWTO файлы удобнее всего просматривать с помощью браузера типа Netscape. Файлы с документацией в текстовом или HTML форматах обычно находятся в каталогах /usr/doc, /usr/share/doc, /usr/doc/HOWTO или /usr/doc/HTML Огромное количество документации можно найти в Интернете. Отметим: - сайт Linux Documentation Project - обширная документация по Linux на русском языке

В.Тихомиров "Введение в Linux"28 Введение в Linux Занятие третье u Имена файлов и каталогов u Навигация по файловой системе u Список файлов, команда ls

В.Тихомиров "Введение в Linux"29 Имена файлов и каталогов Файловая система в Linux имеет иерархическую структуру: файлы вложены в каталоги (то же, что и папка в Windows), которые могут быть вложены в другие каталоги. Однако имена дисков в явном виде отсутствуют, а существует только один корневой каталог, обозначаемый символом /. В корневом каталоге расположены все остальные каталоги. Например, в каталогах /bin, /usr и /lib содержится большинство программ и библиотек системы. В каталоге /etc расположены файлы и каталоги, связанные с настройками различных программ. Каталог /tmp служит для хранения временных файлов, а в каталоге /home содержатся домашние каталоги пользователей.

В.Тихомиров "Введение в Linux"30 Имена файлов и каталогов (2) Часть полного имени файла, включающая в себя только имена каталогов, называется path (путь к файлу). Имена каталогов в пути также разделяются символом /. Таким образом, полное имя файла выглядит так: /dirname1/dirname2/.../filename где dirname1, dirname имена каталогов, а filename - собственно имя файла. Имена каталогов и файлов могут состоять как из символов латинского алфавита, так и из специальных символов типа.,,, _, # и др. Нельзя использовать в именах символы /, *, ?, простые и двойные кавычки. Точка обычно используется для разделения имени файла и его расширения, указывающего на тип файла. Максимальная длина имен файлов и каталогов зависит от конкретной реализации Linux, но обычно это достаночно большое число. Напомним, что регистр букв в именах является значимым.

В.Тихомиров "Введение в Linux"31 Имена файлов и каталогов (3) Путь, начинающийся с символа /, является абсолютным в файловой системе. Если символ / в начале пути отсутствует, то подразумевается путь относительно текущего каталога. Таким образом, имя /etc/README.txt относится к файлу README.txt, расположенному в каталоге etc, который, в свою очередь, находится в корневом каталоге файловой системы. Имя etc/README.txt относится к файлу README.txt в каталоге etc, расположенном в текущем каталоге, а README.txt - к файлу в текущем каталоге. Имя каталога, состоящее из знака., означает текущий каталог,.. - каталог на один уровень выше текущего, а ~ - корневой каталог пользователя.

В.Тихомиров "Введение в Linux"32 Имена файлов и каталогов (4) В именах файлов и каталогов часто используют символ *, означающий все, что угодно. Таким образом, *.f означает: все файлы в текущем каталоге с расширением.f *dat* - все файлы и каталоги, в имени которых встречается сочетание символов dat../* - все файлы и каталоги в каталоге, расположенном на один уровень выше текущего ~/*.f - все файлы с в корневом каталоге пользователя с расширением.f Другой знак - ? - в именах используется в значении ровно один любой символ в этом месте. Например, обозначение *.d?t при обращении к имени файла будет означать: все файлы с расширением.dat или.dot или.d2t, но не.dt или.dart.

В.Тихомиров "Введение в Linux"33 Навигация по файловой системе Имя текущего каталога можно вывести на экран командой pwd (Print Working Directory). Команда cd (Change Directory) используется для того, чтобы сменить текущий каталог: cd [ dirname ] сделает dirname текущим каталогом. Команда cd, выполненная без параметров, сделает текущим корневой каталог пользователя. cd.. передвинет текущий каталог на один уровень вверх, а cd - позволит вернуться в тот каталог, который являлся текущим ранее, до перехода в текущий каталог.

В.Тихомиров "Введение в Linux"34 Навигация по файловой системе (2) Имя текущего каталога (или часть этого имени) удобно включить в текст prompt - приглашения командной строки, которое появляется в окне терминала, когда система готова к вводу команд. Каждый раз, когда пользователь меняет текущий каталог, будет автоматически меняться и вид приглашения. О том, как включить имя каталога в текст приглашения, будет рассказано ниже, в разделе о переменных окружения. Навигация по файловой системе возможна и с помощью различных графических надстроек и оболочек. Например, в оболочках KDE и GNOME существуют собственные программы для навигации по файловой системе.

В.Тихомиров "Введение в Linux"35 Навигация по файловой системе (3) Если на компьютере установлена программа mc (Midnight Commander), то ее удобно использовать для навигации по файловой системе и работы с файлами. Как видно из приведенного рисунка, панель mc очень напоминает широко известный Norton Commander. Создатели mc сохранили также назначение функциональных клавиш: - копирование, - редактирование и т.д. Программа mc обладает сетевыми возможностями: на одну или обе панели может быть выведена файловая система удаленного компьютера. Панель программы Midnight Commander Линейка меню Панели с файлами Командная строка Подсказки к функциональным клавишам Fn

В.Тихомиров "Введение в Linux"36 Список файлов, команда ls Команда ls (LiSt) служит для вывода на экран списка файлов и каталогов: ls [options] [dirname] Введенная без опций и параметров, команда ls выводит краткий список файлов и каталогов, расположенных в текущем каталоге. Наиболее часто употребляемые опции команды ls : -l - делает выводимый список подробным. Наряду с именами файлов, выводятся также их атрибуты: размер, время изменения, правах доступа и т.д. -a - показывает также файлы и каталоги, чьи имена начинаются с символа. (это так называемые скрытые файлы, в которых обычно содержатся параметры настройки различных программ). Обратите внимание, что в списке будут присутствовать два каталога с именами. и.. - они обозначают текущий и родительский каталоги соответственно. -t - сортирует файлы по времени последнего изменения (по умолчанию файлы сортируются по алфавиту) -S - сортирует файлы по занимаемому на диске размеру -r - меняет порядок сортировки на обратный -R - делает список рекурсивным, т.е. будет также выведен список файлов во всех вложенных каталогах, если такие существуют.

В.Тихомиров "Введение в Linux"37 Пример листинга, выданного командой ls -l : -rw-r--r-- 1 tikhomir zp 247 Oct last.kumac -rw-r--r-- 1 tikhomir zp 4860 Oct zsctrec.age -rw-r--r-- 1 tikhomir zp 4785 Oct zsctrec.age~ -rwxr--r-- 1 tikhomir zp Oct mctrdali lrwxr-xr-x 1 tikhomir zp 24 Oct resid ->../trt01/proc/newf/resid lrwxr-xr-x 1 tikhomir zp 12 Oct sdst.020 -> dst/sdst.020 drwxr-xr-x 2 tikhomir zp 2048 Oct dst -rw-r--r-- 1 tikhomir zp Dec gfiles.tar.gz -rw-r--r-- 1 tikhomir zp 590 Nov outres.dat Владелец файла Права доступа Время последней Имя файла Размер файла, байт модификации (каталога, ссылки) Тип файла: - - обычный файл Группа, к которой принадлежит l - ссылка (link) владелец файла d - каталог (directory) (существуют и другие типы) Имя файла (каталога), на который указывает ссылка Список файлов, команда ls (2)

В.Тихомиров "Введение в Linux"38 Список файлов, команда ls (3) В качестве параметра команды ls могут служить имена файлов или каталогов, а также шаблоны, содержащие символы * и ?. Так, ls -l / выведет на экран подробный список каталогов и файлов, расположенных в корневом каталоге файловой системы. ls -lr /bin выдаст в обратном алфавитном порядке список файлов из каталога /bin, расположенного в корневом каталоге файловой системы Linux. ls -R ~ выдаст краткий список всех файлов, расположенных в корневом каталоге данного пользователя и во всех дочерних каталогах. ls -lS *.dat покажет в порядке убывания размера все файлы текущего каталога, имеющие расширение.dat ls -lt../*dat* выведет отсортированный по времени последней модификации список всех файлов, в именах которых встречается буквосочетание dat и расположенных в родительском по отношению к текущему каталоге.

В.Тихомиров "Введение в Linux"39 Список файлов, команда ls (4) Полезным может оказаться использование опции ls --color, которая выдаст на экран листинг, выделяя в нем файлы разных типов разными цветами. Пример использования данной опции приведен в разделе, посвященном настройке профилей пользователя. Отметим, что вообще говоря, с помощью команды ls каждый пользователь безусловно может получить информацию только о файлах, принадлежащих лично ему. Информация о файлах других пользователей и о файлах, принадлежащих системе, может быть и закрыта. Если пользователь попытается обратиться к таким закрытым для него файлам с помощью команды ls, он получит сообщение: Permission denied (доступ запрещен). Подробнее о правах доступа к файлам говорится в следующем разделе. Команду ls приходится применять очень часто, поэтому рекомендуется завести себе короткие псевдонимы (alias, см. соответствующий раздел) для наиболее часто употребляемых вариантов команды. Несколько примеров такого рода приведены в разделе по настройке профилей пользователя.

В.Тихомиров "Введение в Linux"40 Введение в Linux Занятие четвертое u Права доступа к файлам u Создание, копирование, удаление файлов и каталогов

В.Тихомиров "Введение в Linux"41 Рассмотрим первую группу символов в строке, выводимой командой ls -l : -rwxr--r-- 1 tikhomir zp Oct mctrdali user group other Как говорилось выше, первый символ указывает на тип файла. Последующие девять символов относятся к одному из атрибутов файла - правам доступа (permission). Право доступа означает право для определенных пользователей на совершение определенных действий с этим файлом. Права назначаются для трех категорий пользователей: 1) user - владелец файла; 2) group - пользователь, относящийся к той же группе, что и владелец; 3) other - все остальные пользователи. Первая тройка символов в листинге относится к user, вторая - к group, третья - к other. Права доступа к файлам

В.Тихомиров "Введение в Linux"42 Права доступа к файлам (2) Символы r, w и x означают: r - право на чтение (Read) файла: можно посмотреть содержимое файла, скопировать или распечатать его; w - право на запись (Write): можно изменить, переместить или удалить файл; x - право на исполнение (eXecute): можно запустить файл, если это есть программа, команда или командный сценарий (script). Символ - означает отсутствие соответствующего права. Таким образом, в приведенном выше примере их владельцу разрешен доступ на чтение, изменение и исполнение файла, а всем остальным - только на чтение. Для каталогов права read, write и execute имеют несколько другой смысл, чем для файлов. Read означает возможность с помощью команды ls увидеть имена файлов, расположенных внутри каталога; write - возможность добавлять или удалять файлы из каталога; execute - возможность делать данный каталог текущим и копировать файлы из него.

В.Тихомиров "Введение в Linux"43 Права доступа к файлам (2) Обычно при работе с файлами и каталогами - создании, копировании и т.п. - система автоматически присваивает файлам разумные права доступа: владелец может делать со своими файлами все, что угодно, пользователь из одной с владельцем группы - читать и исполнять, а все остальные - либо только читать, либо лишены всех прав доступа. Такой подход защищает как файлы обычных пользователей, так и системные файлы от несанкционированного доступа. Однако иногда пользователю необходимо вносить коррективы в правила, принятые в системе по умолчанию. Например, если вы хотите полностью защитить какие-то свои файлы или каталоги от посторонних глаз, необходимо убрать атрибут read для всех категорий пользователей, кроме владельца. Или, напротив, необходимо создать в системе некий каталог для временного хранения больших файлов, и разрешить доступ к нему всем пользователям. Необходимость изменить права доступа может возникнуть и при переносе файлов через сеть, дискету, устройство flash-памяти или компакт-диск.

В.Тихомиров "Введение в Linux"44 Права доступа к файлам (3) Владелец файла filename (а также системный администратор) могут изменить права доступа к нему с помощью команды chmod : chmod mode filename Поле mode состоит из трех частей. Первая часть представляет собой одну или несколько букв u, g, o, a, которые соответствуют категориям пользователей: User, Group, Other и All. Затем идет один из знаков +, - или =, которые соответственно означают: добавить, убрать и назначить определенные права. Затем указываются символы r, w и x, означающие соответствующие права доступа. Так, chmod u-w filename лишает владельца файла filename права на изменение этого файла (например, для защиты от случайного удаления); chmod go-rwx dirname лишает всех прав доступа к каталогу dirname как group, так и other категории пользователей, т.е. всех пользователей, кроме владельца; chmod a+x filename добавляет файлу атрибут x для всех пользователей;

В.Тихомиров "Введение в Linux"45 Права доступа к файлам (4) chmod u=rwx filename устанавливает для владельца файла filename атрибуты rwx. Используя другую форму команды chmod, можно задать сразу все права доступа к файлу для всех категорий пользователей: chmod LMN filename где L, M и N - цифры в интервале от 0 до 7, представляющие права доступа соответственно для user ( L ), group ( M ) и other ( N ). Три бита этих цифр (от младшего к старшему) соответствуют x, w и r атрибутам доступа, т.е., скажем L=1 соответствует наличию x атрибута для владельца, L=2 - w атрибута, L=3 - xw, L=4 - r и т.д. Таким образом, команда chmod 754 filename установит следующие права доступа к файлу filename : xwr для user, xr для group и r для other. Если пользователь попытается совершить с файлом операцию, на которую он не имеет соответствующих прав, система выдаст сообщение: Permission denied.

В.Тихомиров "Введение в Linux"46 Создание, копирование, удаление файлов и каталогов Простейший способ создать новый файл - это воспользоваться командой touch : touch filename создаст пустой файл с именем filename в текущем каталоге. Разумеется, обычно новые файлы создаются другими способами: с помощью редакторов или различных программ. Команда touch приведена здесь для того, чтобы вы могли уже сейчас создать несколько новых файлов и изучить на них действие приведенных здесь команд. Для удаления файлов служит команда rm (ReMove): rm filename Новый пустой каталог создается командой mkdir (MaKe DIRectory): mkdir dirname

В.Тихомиров "Введение в Linux"47 Создание, копирование, удаление файлов и каталогов (2) Удалить пустой (т.е. не содержащий в себе других файлов или каталогов) каталог можно командой rmdir (ReMove DIRectory): rmdir dirname Чтобы удалить непустой каталог, а также все каталоги, вложенные в него, выполните: rm -r dirname Команда cp (CoPy) копирует существующий файл oldfile в новый файл newfile : cp oldfile newfile Так можно рекурсивно скопировать содержимое существующего каталога olddir в новый newdir : cp -r olddir newdir Для переименования или перемещения в другое место файловой системы существующего файла или каталога служит команда mv (MoVe): mv oldfile newfile

В.Тихомиров "Введение в Linux"48 Создание, копирование, удаление файлов и каталогов (3) При копировании или переименовании файлов особое значение имеет символ., применяемый в качестве имени нового файла или каталога. Этот символ означает, что новый файл имеет то же имя, что и старый. Так, команда cp /home/tikhomir/trd/*.dat /home/tikhomir/trd1/. скопирует все файлы с расширением.dat из каталога /home/tikhomir/trd в каталог /home/tikhomir/trd1, не изменяя имен файлов. Команды cp и mv могут иметь более двух параметров, если последним из них является имя каталога. Например, cp geant.ffr *.dat /home/tikhomir/trd скопирует файл geant.ffr, а также все файлы с расширением.dat из текущего каталога в каталог /home/tikhomir/trd

В.Тихомиров "Введение в Linux"49 Создание, копирование, удаление файлов и каталогов (4) В Linux крайне сложно восстановить даже только что удаленный файл. Поэтому командами rm, mv и cp следует пользоваться с осторожностью. Можно рекомендовать переобозначить эти команды (см. раздел о псевдонимах - alias) так, чтобы случайно не удалить нужный файл. Так, команда rm -i filename будет требовать от пользователя подтверждение на удаление. Так же будут требовать подтверждения команды mv -i и cp -i в том случае, когда создаваемый newfile уже существует. С другой стороны, если вы переобозначили эти команды, а вам необходимо удалить, скажем, все файлы с расширением.dat в текущем каталоге, то давать подтверждение на удаление каждого файла может оказаться довольно утомительной процедурой. В этом случае можно форсировать операцию удаления: команда rm -f *.dat удалит все файлы с расширением.dat, не спрашивая подтверждения. Еще одна команда, которой следует пользоваться с крайней осторожностью: rm -fr dirname удалит, не спрашивая подтверждения, все файлы и каталоги, расположенные в каталоге dirname.

В.Тихомиров "Введение в Linux"50 Введение в Linux Занятие пятое u Ссылки u Просмотр текста в файлах и потоках u Перенаправление ввода-вывода

В.Тихомиров "Введение в Linux"51 Ссылки Одним из видов файла является ссылка (link). Ссылки бывают двух типов: hardlink и symbolic link. Hardlink (жесткая ссылка) по существу является копией файла с другим именем. При изменении самого файла автоматически изменяется и содержимое hardlink. Жесткие ссылки используются довольно редко и далее рассматриваться не будут. Symbolic link (символическая ссылка, или далее - просто ссылка) представляет собой поименованный указатель на существующий файл или каталог. В некотором смысле такая ссылка схожа с ярлыком в Windows. Символическая ссылка создается командой ln (LiNk): ln -s target [linkname] где target - имя существующего файла или каталога, а linkname - имя создаваемой ссылки. Если linkname опустить, то имя ссылки будет совпадать с именем файла или каталога. Таким образом, команда ln -s../scitrd.ffr создаст в текущем каталоге ссылку с именем scitrd.ffr, которая будет указывать на файл с таким же именем, расположенном в родительском каталоге.

В.Тихомиров "Введение в Linux"52 Ссылки (2) А команда ln -s /afs/cern.ch/atlas/user/r/rd6/public/trt02/dsts/ mydsts создаст в текущем каталоге ссылку mydsts, указывающую на каталог /afs/cern.ch/atlas/user/r/rd6/public/trt02/dsts/ Если при попытке создать ссылку с именем linkname в текущем каталоге уже существует файл или ссылка с таким же именем, то будет выдано сообщение об ошибке. Форсировать создание новой ссылки можно с помощью опции -f : ln -sf target [linkname] Cимволическая ссылка отмечается буквой l в первой позиции подробного листинга, выдаваемого командой ls -l. В поле имен листинга после имени ссылки и символов -> следует имя того файла или каталога, на которые она указывает. Заметим, что символическая ссылка практически не занимает место на диске - ее размер составляет несколько байт.

В.Тихомиров "Введение в Linux"53 Ссылки (3) После создания ссылки с ней можно проводить те же операции, что и с обычным файлом или каталогом: выводить содержимое на экран, редактировать, запускать на выполнение, если ссылка указывает на программу и т.д. При этом все действия реально будут совершаться с файлом или с каталогом, на которые указывает ссылка. Однако если удалить саму ссылку: rm linkname то файл или каталог, на которые она указывает, останутся нетронутыми. u Символическая ссылка очень часто применяется в файловой системе Linux. Представим, например, что мы много раз запускаем программу, входные данные для которой хранятся в файле с длинным именем: /afs/cern.ch/atlas/user/r/rd6/public/trt02/dsts/dst ntup Каждый раз набирать на клавиатуре такое имя очень неудобно, к тому же можно легко ошибиться. Если же выполнить команду: ln –s \ /afs/cern.ch/atlas/user/r/rd6/public/trt02/dsts/dst ntup то в текущем каталоге создастся ссылка к данному файлу с коротким именем dst01553.ntup, к которой можно обращаться так же, как и к самому файлу.

В.Тихомиров "Введение в Linux"54 Ссылки (4) Другой пример. Допустим, нам необходимо, чтобы в каталоге /usr/local/lib содержались копии большого числа файлов, расположенных в другом каталоге /usr/lib. Мы не хотели бы просто копировать все файлы из одного каталога в другой: во-первых, скопированные файлы займут место на диске, а во-вторых, при внесении каких-то изменений в каталоге /usr/lib необходимо все время помнить о второй копии. Проблема решается просто: cd /usr/local/lib ln -s /usr/lib/*. Итак, символическая ссылка позволяют практически без затрат дискового пространства совместно разным пользователям и приложениям использовать ресурсы в виде файлов и каталогов.

В.Тихомиров "Введение в Linux"55 Просмотр текста в файлах и потоках Большие текстовые файлы обычно просматривают с помощью программ-редакторов. Для быстрого просмотра зачастую удобнее пользоваться специальными командами. Команда cat (CATalog) выведет на экран терминала содержимое текстового файла filename (или нескольких файлов): cat filename … Если добавить опцию -n, то строки файла будут пронумерованы. Для больших файлов вместо cat удобнее пользоваться командами more или less - они выводят на экран содержимое файла постранично. Для продвижения по тексту файла по направлению вперед в программах more и less используется клавиша, по направлению назад - клавиша. Прервать просмотр можно, нажав. Команда less обладает широкими возможностями поиска в просматриваемом документе. В частности, /pattern ищет первое появление фрагмента pattern в тексте по направлению вперед, а ?pattern - по направлению назад.

В.Тихомиров "Введение в Linux"56 Просмотр текста в файлах и потоках (2) u Команда head [-n] filename выведет на экран первые n (по умолчанию - 10) строк файла filename. А tail [-n] filename -последние n строк файла. u Приведенные выше команды часто используются в составных командах (конвейерах) для просмотра текста, выводимого на экран другими командами и программами. Например, ls -l ~ | more будет выводить на экран подробный список файлов из головного каталога пользователя постранично. А ls -lt | head -5 выведет список 5 самых новых файлов из текущего каталога, т.е. имеющих время создания или модификации, наиболее близкое к данному моменту.

В.Тихомиров "Введение в Linux"57 Перенаправление ввода-вывода Вывод таких команд, как cat или ls происходит на выходное устройство (standard output), которым по умолчанию является экран терминала. Входным устройством (standard input) для выполняемых команд по умолчанию является клавиатура. Изменить эти правила можно перенаправлением ввода и/или вывода с помощью знаков. Так, команда cat filename1 > filename2 вместо того чтобы выводить текст файла filename1 на экран, запишет этот текст во вновь созданный файл filename2. Если файл filename2 уже существует, его старое содержимое будет перезаписано. Команда cat filename1 >> filename2 присоединит содержимое файла filename1 к концу файла filename2, не удаляя его старого содержания. Поскольку в команде cat можно перечислять несколько файлов, то самый простой способ объединить несколько текстовых файлов в один - это набрать команду: cat filename1 filename2 … >> filename

В.Тихомиров "Введение в Linux"58 Перенаправление ввода-вывода (2) А, например, команда ls -alR ~ > ls.list запишет в файл ls.list полный листинг каталогов и файлов пользователя. Иногда возникает необходимость направить выходной поток в какой- либо дисковый файл, но при этом одновременно и видеть его на экране. Для этого можно использовать команду tee : ls -alR | tee ls.list Такая конструкция выведет на экран подробный рекурсивный листинг текущего каталога и одновременно запишет его в файл ls.list

В.Тихомиров "Введение в Linux"59 Перенаправление ввода-вывода (3) Предположим, что пользователь запускает некую свою программу scitrd, которая ожидает ввода данных с клавиатуры. Количество данных может быть достаточно большим и при их вводе легко ошибиться. К тому же введенные с клавиатуры данные нигде не сохраняются и спустя какое-то время пользователь может и не вспомнить - какие именно данные использовала программа. Удобным решение в этом случае будет предварительная запись данных в какой- либо файл, скажем scitrd.inp. Если теперь выполнить команду scitrd < scitrd.inp то запущенная программа scitrd вместо того, чтобы ожидать ввода необходимых данных с клавиатуры, будет построчно читать их из файла scitrd.inp. Таким образом, знак < служит для перенаправления стандартного потока ввода.

В.Тихомиров "Введение в Linux"60 Перенаправление ввода-вывода (4) Кроме потоков ввода и вывода, существует поток ошибок (standard error), в который направляются сообщения системы об ошибках, если таковые возникают при выполнении программы или команды. По умолчанию поток ошибок также направляется на экран терминала. Если необходимо перенаправить его, то это можно сделать, объединив поток ошибок с выходным потоком. Знаком объединения двух потоков служит комбинация символов >&. Так команда scitrd & scitrd.out запустит программу scitrd, которая будет читать входные данные из файла scitrd.inp и направит свой вывод, а также поток ошибок в файл scitrd.out Иногда может возникнуть необходимость избавиться от вывода на экран потоков стандартного вывода и/или ошибок. Например, вы запускаете некую программу thcal, которая в процессе своей работы выдает на экран массу ненужных вам отладочных сообщений. Можно перенаправить их в специальный системный файл /dev/null, который является своего рода черной дырой в том смысле, что все, что направлено в этот файл, безвозвратно пропадает: thcal >& /dev/null Программа thcal отработает молча, не выдавая на экран никаких сообщений. u Разумеется, если программа читает или записывает что-то в дисковый файл, то это перенаправлением ввода-вывода никак не затрагивается.

В.Тихомиров "Введение в Linux"61 Введение в Linux Занятие шестое u Конвейер u Архивирование файлов и каталогов u Поиск файлов

В.Тихомиров "Введение в Linux"62 Конвейер Конвейер (pipe) является еще одним инструментом, позволяющим управлять потоками ввода-вывода. Конвейер направляет выходной поток одной команды на вход другой. Знаком конвейера служит символ |. Так, команда ls -alR ~ | grep dat сначала создаст рекурсивный листинг каталогов пользователя, но не выведет этот листинг на экран, а подаст на вход другой команды, стоящей за знаком |, в данном случае - команды grep. Команда grep отберет из этого потока только те строки, в которых содержатся символы dat и выведет их на экран. Таким образом пользователь может найти у себя все файлы и каталоги, в имени которых содержатся символы dat. Если такой листинг окажется слишком длинным, можно применить более сложную конструкцию: ls -alR ~ | grep dat | more u Следующий пример показывает, как можно использовать конвейер для вывода на экран листинга десяти самых больших по размеру занимаемого дискового пространства файлов из текущего каталога: ls -alS | head

В.Тихомиров "Введение в Linux"63 Конвейер (2) Еще один пример. Предположим, мы хотим вспомнить, как именно вызывалась (уже достаточно давно для того, чтобы просто найти ее в буфере команд, пролистывая их список клавишей ) программа root4star. Список выполненных ранее команд, как мы знаем, можно получить с помощью команды history. Фильтр grep отберет в выводимом списке только те строки, в которых содержится интересующее нас слово root4start. Тогда, набрав history | grep root4star мы увидим на экране: :32 /afs/rhic/star/packages/SL00m/.i386_redhat61/bin/root4star Здесь это порядковый номер выполненной команды, за которым идут время, когда она была выполнена и сама команда. Теперь мы можем либо просто повторить эту команду, набрав !136 либо скопировать ее мышкой через буфер обмена в командную строку и редактировать - ввести, например, дополнительные входные параметры для программы root4star.

В.Тихомиров "Введение в Linux"64 Архивирование файлов и каталогов Команда gzip применяется для компрессии файла, если необходимо, чтобы он занимал меньше места на диске: gzip filename сожмет файл filename и запишет результат компрессии в новый файл filename.gz. Оригинальный файл filename при этом не сохраняется. С помощью одной команды gzip можно сжать сразу несколько файлов, если в имени файла использовать шаблон *. Например, команда gzip *.f сожмет все файлы с расширением.f в текущем каталоге. А команда gzip -r dirname сожмет все файлы в каталоге dirname и во всех вложенных в него каталогах. u Обратная операция декомпрессии файла осуществляется командой gunzip filename[.gz]

В.Тихомиров "Введение в Linux"65 Архивирование файлов и каталогов (2) Команда tar является мощным средством архивации файловой системы Linux. Команда упаковывает файлы и каталоги в один выходной файл. При этом в созданном архивном файле сохраняется вся информации о структуре каталогов, атрибутах файлов и т.п. Итак, команда tar -c dirname -f filename.tar создаст новый файл filename.tar, в котором будут упакованы все каталоги и файлы, расположенные внутри каталога dirname. По умолчанию команда tar не проводит компрессию упакованных файлов. Чтобы уменьшить размер создаваемого архивного файла, можно воспользоваться опцией -z : tar -cz dirname -f filename.tgz Расширения файлов.tar и.tgz являются рекомендованными для файлов, созданных командой tar без компрессии и с компрессией соответственно. Вместо.tgz иногда используется расширение.tar.gz

В.Тихомиров "Введение в Linux"66 Архивирование файлов и каталогов (3) Если в архивируемом каталоге присутствуют символические ссылки, команда tar по умолчанию сохраняет лишь имена указателей, но не собственно файлы, на которые указывают эти ссылки. Чтобы заархивировать именно файлы, а не указывающие на них ссылки, воспользуйтесь опцией -h : tar -czh dirname -f filename.tgz Распаковать созданный командой tar файл можно так: tar -xf filename.tar или tar -xzf filename.tgz Добавив опцию -v, можно будет наблюдать на экране имена файлов в процессе распаковки. Эту опцию можно использовать и при архивации.

В.Тихомиров "Введение в Linux"67 Архивирование файлов и каталогов (4) Посмотреть содержимое архивного файла без его распаковки (и проверить целостность его структуры) можно с помощью опции -t : tar -tf filename.tar или, если архив при создании подвергся компрессии: tar -tzf filename.tgz При просмотре обратите внимание на то, как в архивном файле была сохранена структура каталогов: с абсолютным путем к файлам (если при упаковке использовалась опция -P ) или с относительным. Во втором случае при распаковке вся структура каталогов будет развернута внутри текущего каталога, в котором выполняется команда tar -x. Команда tar имеет множество опций, позволяющих, например, заменять или удалять отдельные файлы в уже созданном архиве или исключать какие-то файлы из процесса архивации или распаковывать не весь архив, а только его часть и т.п. Поэтому команда tar и создаваемые ею файлы очень широко используются для резервного копирования системы и для переноса множества файлов и/или каталогов с одного диска на другой через сеть, дискету или CD диск. Многие дистрибутивы программ для Linux, хранящиеся в Интернет, записаны в tar формате. Отметим также, что форматы gz, tar и tgz распознаются современными программами-архиваторами для Windows типа WinZip.

В.Тихомиров "Введение в Linux"68 Поиск файлов Для поиска файлов в файловой системе используется команда find. Формат команды find несколько отличается от других команд в Linux: find dirname [expression] где expression - специальным образом сконструированное выражение, задающее критерий отбора при поиске. find обладает очень широкими возможностями: вы можете искать файлы по именам, времени создания или последнего обращения к файлу, размеру, правам доступа к файлам и т.п. Просмотрите справочные и info страницы команды find - там можно найти множество примеров использования команды. Приведем лишь некоторые. Команда find dirname | grep pattern сработает так же, как и ls -R dirname | grep pattern а именно: обе команды просмотрят список файлов в каталоге dirname и во вложенных в него каталогах и выведут на экран те файлы, в имени которых встречается последовательность символов pattern.

В.Тихомиров "Введение в Linux"69 Поиск файлов (2) Того же эффекта можно добиться и одной командой: find dirname -name *pattern* Например, find ~ -name *.ntup найдет все файлы пользователя, имеющих расширение.ntup. Команда find ~ -mtime -2 выдаст список всех файлов пользователя, модифицированных в течение последних двух дней (48 часов), а find dirname -daystart -type f -mtime 0 выдаст список тех файлов (исключая каталоги и ссылки), в каталоге dirname, которые были модифицированы сегодня. Выполнив find. -size k мы получим список тех файлов в текущем каталоге, чей размер превышает Кбайт.

В.Тихомиров "Введение в Linux"70 Поиск файлов (3) Команду find в комбинации с другими командами часто используют для резервного копирования важных системных файлов и файлов пользователей. Если в системе была создана соответствующая база данных, то еще одной командой для поиска файлов может служить команда locate : locate.ntup быстро найдет все файлы во всей файловой системе (не только в текущем каталоге), имеющие расширение.ntup Все сказанное выше относится к поиску файлов любых типов. Однако для исполняемых файлов и программ поиск имеет несколько иной смысл, чем для остальных файлов. То, что с помощью команд find или locate была найдена, скажем, программа root4star, полный путь к которой есть /afs/rhic/star/packages/SL00m/.i386_redhat61/bin/root4star еще не означает, что пользователь может напрямую запустить эту

В.Тихомиров "Введение в Linux"71 Поиск файлов (4) программу, просто набрав в командной строке ее имя root4star. По одному имени, без указания полного пути, можно обращаться только к тем программам и командам, которые расположены в каталогах, перечисленных в списке переменной окружения $PATH (см. раздел о переменных окружения). В противном случае путь к данной команде должен указываться полностью. Понять, входит ли какая-либо программа или команда в число тех, которые доступны для прямого вызова, а также увидеть полный путь к такой программе, можно с помощью команды which. Так, which root4star найдет и покажет приведенный выше путь к программе, но только в том случае, если этот путь перечислен в списке переменной $PATH. В противном случае система выдаст сообщение: Command not found. Это однако не означает, что такого файла действительно не существует. Если путь к команде известен (или найден с помощью команд find или locate ), всегда можно запустить эту программу, указав полный путь к ней.

В.Тихомиров "Введение в Linux"72 Поиск файлов (5) u Итак, комада find используется для поиска файлов любого типа в заданном каталоге, часто с применением неких дополнительных критериев отбора: времени создания или модификации файла, его размера и т.п. команда locate используется для быстрого поиска файлов любого типа во всей файловой системе, но только, если эти файлы занесены в специальную базу данных команда which используется для поиска во всей файловой системе тех исполняемых файлов (команд и программ), которые можно запускать напрямую, без указания полного пути к этим файлам.

В.Тихомиров "Введение в Linux"73 Введение в Linux Занятие седьмое u Работа с внешними носителями u Разные команды для работы с файлами

В.Тихомиров "Введение в Linux"74 Работа с внешними носителями Файловая система Linux устроена таким образом, что гибкий диск, компакт-диск или флэш-память с интерфейсом USB, вставленные в соответствующий дисковод или разъем, не становятся автоматически доступны пользователю - их необходимо смонтировать. Это можно сделать либо через соответствующие иконки в графических оболочках KDE или GNOME, либо командой mount. Эта команда используется также для монтирования разделов жесткого диска и других устройств. Но если разделы жесткого диска обычно монтируются автоматически при загрузке компьютера, то для сменных носителей монтирование необходимо задать явно. В команде mount необходимо указать условленное имя монтируемого устройства и точку монтирования – имя существующего пустого каталога, к которому это устройство необходимо подсоединить. Так, mount /dev/fd0 /mnt/floppy сделает доступным содержимое дискеты в каталоге /mnt/floppy. Аналогичная команда для монтирования CD диска выглядит следующим образом: mount /dev/cdrom /mnt/cdrom

В.Тихомиров "Введение в Linux"75 Работа с внешними носителями (2) – содержимое CD диска будет доступно в каталоге /mnt/cdrom. Флэш-память или другие устройства с USB интерфейсом обычно монтируются командой mount /dev/sda1 dirname где dirname – имя каталога, в котором будет видно содержимое носителя. В отличие от каталогов /mnt/cdrom и /mnt/cdrom, для USB устройств в Linux пока не существует общепринятого имени для точки монтирования. Возможно, на вашем компьютере это будет нечто вроде /mnt/usb или /mnt/flash. Обычно команда mount автоматически распознает тип файловой системы на сменном носителе. Если это не так, то его необходимо указать явно через опцию –t, например: mount –t msdos /dev/fd0 /mnt/floppy или mount –t iso9660 /dev/cdrom /mnt/cdrom Тип поддерживаемых файловых систем можно узнать из справочной страницы команды mount.

В.Тихомиров "Введение в Linux"76 Работа с внешними носителями (3) u После того, как устройство смонтировано, можно работать с файлами на сменном носителе так же, как и с любыми другими: копировать, удалять (не на CD, конечно) и т.п. Например, команда cp /mnt/cdrom/photo/104_0463.jpg. скопирует в текущий каталог файл 104_0463. jpg из каталога photo на CD диске. А команда cp myfile.tgz /mnt/floppy/ запишет файл myfile.tgz из текущего каталога на дискету. После того, как вы поработали со сменным носителем, устройство необходимо размонтировать. Это делается командой umount : umount /mnt/floppy для флоппи диска или, соответственно, для компакт-диска: umount /mnt/cdrom Если вынуть сменный носитель, не произведя размонтирования, то вы можете не обнаружить на нем записанных файлов и даже рискуете испортить всю файловую систему на носителе.

В.Тихомиров "Введение в Linux"77 Работа с внешними носителями (4) По умолчанию, монтировать любые устройства в Linux с помощью команды mount может только так называемый супер-пользователь (root). Если это правило в вашей системе не изменено, то обычному пользователю не удастся командой mount смонтировать гибкий диск или CD. Проверить это можно, посмотрев содержимое файла /etc/fstab. Если вы увидите ключи user или users в строках типа /dev/cdrom /mnt/cdrom iso9660 noauto,user,owner,ro 0 0 /dev/fd0 /mnt/floppy msdos noauto,user,owner 0 0 /dev/sda1 /mnt/floppy auto noauto,user 0 0 то обычному пользователю разрешено монтировать соответсвующие устройства. Заметим также, что если устройства для сменных носителей указаны в файле /etc/fstab, то команды монтирования можно упростить: mount /mnt/usb для USB устройства, или: mount /mnt/cdrom для CD-дисковода.

В.Тихомиров "Введение в Linux"78 Работа с внешними носителями (5) Для работы с дискетами можно воспользоваться программами из пакета утилит mtools, если этот пакет установлен на вашем компьютере. Программы, входящие в состав mtools, не требуют наличия у пользователя особых привилегий. Для более подробного ознакомления с этими программами смотрите соответствующую info страницу: info mtools. u Напомним также, что графические оболочки GNOME и KDE имеют собственные средства для работы с дискетами и компакт-дисками.

В.Тихомиров "Введение в Linux"79 Разные команды для работы с файлами Часто возникает необходимость сравнить содержимое двух файлов. Это можно сделать с помощью команды diff : diff filename1 filename2 На экран будут выведены пронумерованные строки, которые отличаются в файлах filename1 и filename2. Сравнивать можно не только текстовые, но и двоичные файлы, но в этом случае команда просто сообщает - идентичны файлы или нет. Удобным инструментом для сравнения текстовых файлов послужит также программа tkdiff, если она установлена на вашем компьютере. Возможностью сравнения тектсовых файлов обладает также редактор emacs. Команда file: file filename попытается определить тип файла filename : есть ли это текст, программа, графический файл, архив и т.п. Причем тип файла определяется не по имени или расширению, а по структуре файла.

В.Тихомиров "Введение в Linux"80 Разные команды для работы с файлами (2) Определить размер, занимаемый файлами на диске, можно с помощью команды du. Команда имеет много опций, но самый простой вариант использования: du -s dirname Такая команда выдаст размер (в килобайтах), занимаемый всеми файлами в каталоге dirname, включая вложенные каталоги. Без опции -s команда du распечатает также размеры каждого из вложенных каталогов. Если вы смонтировали флоппи-диск, то команда du -s /mnt/floppy поможет быстро оценить - достаточно ли свободного места на дискете. Команда df выдаст информацию о локальных и сетевых устройствах, смонтированных на вашем компьютере: разделах жесткого диска, сетевых дисках, о флоппи- и CD-дисководах. Будут также представлены данные о размерах занятого и свободного пространства на этих устройствах.

В.Тихомиров "Введение в Linux"81 Разные команды для работы с файлами (3) Команда quota покажет размер дискового пространства, которое отведено данному пользователю. Команда wc (Words Counting) подсчитает количество строк, слов и символов в текстовом файле: wc filename или выходном потоке команд: ls -Al | wc Последний пример показывает, как можно быстро подсчитать число файлов, ссылок и каталогов, содержащихся в текущем каталоге. Команда sort используется для сортировки строк файла или выходного потока в конвейере. Например, du -S | sort -n выведет на экран список каталогов, находящихся внутри текущего, в порядке возрастания размера занимаемого ими дискового пространства.

В.Тихомиров "Введение в Linux"82 Разные команды для работы с файлами (4) А команда ls -lR | sort +4n рассортирует все файлы в текущем каталоге и во всех вложенных в него каталогах по их размеру. Команда touch filename заменит атрибут modify time (время изменения) файла filename на текущее время. Если файл filename не существует, команда touch создаст пустой файл с таким именем. Программы od и hexdump служат для вывода на экран содержимого файлов (не обязательно текстовых) в восьмеричном, шестнадцатиричном и других недесятиричных форматах.

В.Тихомиров "Введение в Linux"83 Введение в Linux Занятие восьмое u Редактор vi u Редактор pico u Редактор emacs

В.Тихомиров "Введение в Linux"84 Редактор vi На компьютере под управлением Linux может быть установлено несколько различных программ для редактирования текстовых файлов. Рассмотрим работу трех из них - vi, pico и emacs. Редактором vi не очень удобно пользоваться. Однако этот редактор входит в состав любых UNIX систем - в какой бы операционной системе семейства UNIX вы не оказались, можете быть уверены, что редактор vi там установлен. Кроме того, он довольно компактен и по этой причине часто включается в набор так называемых rescue дискет, предназначенных для аварийного восстановления системы. В редакторе vi существует несколько режимов работы. Наиболее часто используются два из них – командный режим и режим ввода текста. В командном режиме нажатие каждой клавиши клавиатуры означает определенное действие, но не ввод текста. В этот режим пользователь попадает при запуске редактора: vi filename где filename - имя редактируемого файла.

В.Тихомиров "Введение в Linux"85 Редактор vi (2) В командном режиме vi можно перемещаться по тексту с помощью клавиш,, и, а также пользоваться функциями поиска: /pattern ищет первое появление образца pattern в тексте по направлению вперед, а ?pattern - по направлению назад. Можно удалять текст: нажатие клавиши удаляет символ, предшествующий курсору, а клавиши - символ над курсором. Стереть текст от позиции курсора до конца строки можно, нажав клавиши, а стереть всю строку:. Чтобы перейти в режим ввода текста, нажмите клавишу. В этом режиме все, что набирается на клавиатуре, является вводимым текстом. Вернуться обратно в командый режим vi, закончив набирать текст можно, нажав клавишу. Еще одним режимом редактора vi является так называемый режим последей строки. Все команды, вводимые в этом режиме, начинаются с символа :. Вввод двоеточия перемещает курсор в нижнюю часть экрана, где следует ввести оставшуюся часть команды.

В.Тихомиров "Введение в Linux"86 Редактор vi (3) Режим последней строки используется главным образом для выполнения команд общего характера, в частности: wq - записать произведенные изменения в файл и выйти из редактора; w - записать изменения в файл без выхода из редактора; w filename - записать текущий редактируемый буфер в новый файл с именем filename ; q - выйти из редактора; q! - выйти из редактора, не сохраняя произведенные изменения; !sh - войти в командную оболочку (shell) системы. Здесь вы можете выполнять любые команды оболочки. Чтобы вернуться обратно в редактор, наберите exit ; !command - выполнить команду оболочки (командного интерпретатора операционной системы) command ;

В.Тихомиров "Введение в Linux"87 Редактор pico Редактором pico можно пользоваться при редактировании небольших фрагментов текста. Он не требует открытия нового графического X-окна, что удобно при редактировании файлов на удаленном компьютере в сучае, когда связь не очень быстрая. Кроме того, на основе pico построено редактирование текста в pine - программе работы с электронной почтой. Рекомендуется запускать pico с опцией -w, что упростит редактирование длинных строк. u Команда pico -w filename загрузит pico для редактирования файла filename. Перемещаться по тексту редактируемого файла можно как с помощью клавиш,, и, так и постранично клавишами и на дополнительной клавиатуре. Набор нового текста в редакторе pico осуществляется непосредственно с клавиатуры, без перехода в какой- либо специальный режим. Также обычным образом работают клавиши и, удаляющие символы, предшествующий курсору и непосредственно над ним.

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

В.Тихомиров "Введение в Linux"89 Редактор emacs Редактор emacs является очень мощной программой и может быть рекомендован как основной инструмент редактирования текстовых файлов в Linux. Кроме собственно редактирования, emacs может использоваться, например, для компиляции программ, трансляции TeX файлов, работы с электронной почтой и для ряда других приложений. Запустить редактор emacs в новом окне можно командой emacs &. Знак & в конце любой команды переводит ее выполнение в фоновый режим. В данном случае это означает, что для emacs откроется новое X окно, а тот терминал, из которого была выполнена эта команда, останется свободным, доступным для ввода других команд. Можно сразу указать и имя редактируемого файла: emacs filename &

В.Тихомиров "Введение в Linux"90 Редактор emacs (2) На рисунке показано окно редактора emacs. Кроме собственно поля с редактируемым текстом, занимающего большую часть окна, в редакторе есть верхняя строка с заголовками выпадающих меню, строка с иконками для наиболее часто употребляемых команд и две строки внизу. Вторая строка снизу является информационной: в ней показано имя файла - linux.tex ; режим редактирования ( mode ), который зависит от типа файла, в данном случае - LaTeX ; номер строки, в которой стоит курсор ( 1769 ); процент от полного размера файла, считая от его начала до текущей позиции. Обратим внимание на два символа ** в левой части информационной строки: они означают, что редактируемый файл был изменен, но эти изменения еще не были записаны на диск. Нижняя строка служит для ввода некоторых команд, имен файлов и т.п.

В.Тихомиров "Введение в Linux"91 Редактор emacs (3) Строка меню Иконки меню Поле редактируемого текста Указание на изменение файла Имя редактируемого файла Тип файла Номер текущей строки Командная строка

В.Тихомиров "Введение в Linux"92 Редактор emacs (4) В редактор можно подгружать по мере необходимости несколько редактируемых файлов, каждый из которых будет сохраняться в собственном буфере (меню Buffers ). Сделав необходимую редакцию, можно записать отредактированный буфер в файл на диск и загрузить новый файл или вернуться к другому редактируемому буферу и т.д. Заметим, что при записи на диск новой, отредактированной версии файла filename старая версия также сохраняется под именем filename~. В зависимости от типа редактируемого файла, который определяется по расширению в имени файла, редактор будет находиться в одном из режимов: Text mode для текстовых файлов, Fortran или C mode для программ на языках FORTRAN и C соответственно, LaTeX mode для TeX файлов и т.д. Если emacs не знаком с типом редактируемого файла, соответствующий режим будет называться Fundamental mode. В зависимости от режима меняетсяповедение редактора: набор меню, заголовки которых видны в верхней строке; выделение цветом разных фрагментов текста; отступ в тексте при нажатии клавиши и др.

В.Тихомиров "Введение в Linux"93 Редактор emacs (5) u Меню (верхняя строка редактора) можно открыть, наведя на его заголовок курсор мыши и нажав на ее левую кнопку. Многие команды из меню можно вводить и с клавиатуры, что зачастую бывает быстрее. Приведем список наиболее часто используемых команд: - загрузить в буфер редактора новый файл с диска для редактирования. Имя файла будет предложено ввести в нижней строке окна редактора. Отметим, что при вводе имени можно пользоваться клавишей для автоматического дополнения вводимого имени, как при редактировании командной строки; - считать с диска файл и ввести его текст в то место буфера, где расположен текстовый курсор; - искать текст по направлению вперед; - искать текст по направлению назад.

В.Тихомиров "Введение в Linux"94 Редактор emacs (6) При выполнении команд поиска искомый текст будет предложено ввести в нижней строке окна редактора. Поиск будет регистро- независимым, если образец искомого текста введен в одном регистре. Т.е., если пользователь введет для поиска строку dimension (или DIMENSION ) то найдены будут и dimension и DIMENSION и Dimension. Если же введенное для поиска слово будет набрано в смешанном регистре, например, Dimension, то и поиск будет проведен с учетом регистра; - поиск и замена одного фрагмента текста на другой; - разделить окно редактора на две части (например, для редактирования или сравнения двух файлов); - вернуться к режиму с одним окном редактора; - встать в начало редактируемого буфера;

В.Тихомиров "Введение в Linux"95 Редактор emacs (7) > - встать в конец редактируемого буфера; - передвинуть текст так, чтобы строка, в которой стоит текстовый курсор, оказалась в центре окна редактирования; - поставить невидимый маркер в месте расположения текстового курсор; - удалить выделенную область текста. Эта область выделяется либо с помощью мыши, как рассказано ниже, либо определяется как область между маркером и текущим положением текстового курсора; - восстановить удаленный текст; - проверка орфографии слова, на котором или сразу за которым стоит текстовый курсор;

В.Тихомиров "Введение в Linux"96 Редактор emacs (8) - undo, т.е. отменить последнее сделанное изменение (знак _ здесь есть underscore - знак подчеркивания); - записать редактируемый буфер на диск в файл с тем же именем, что и редактируемый; - записать редактируемый буфер на диск, дав записываемому файлу новое имя; - выйти из редактора; Кроме того, работают комбинации клавиш, о которых уже говорилось ранее в разделе о редактировании командной строки: удаляет символ над курсором, передвигает текстовый курсор в начало командной строки, а - в конец строки. Нажав, можно удалить часть строки от позиции курсора до конца строки.

В.Тихомиров "Введение в Linux"97 Редактор emacs (9) Очень удобно пользоваться буфером обмена, как уже рассказывалось выше. Наведите курсор мыши на начало выделяемого текста и щелкните левой кнопкой мыши. Затем, не отпуская левую кнопку, подведите курсор мыши к концу выделяемого текста. Если теперь отпустить левую кнопку, то содержимое выделенного текста будет скопировано в буфер обмена. Можно и по-другому выделить текст: щелкните левой кнопкой мыши в начале выделяемого текста, отпустите кнопку и, переведя курсор мыши в конец текста, щелкните правой кнопкой. Теперь содержимое буфера обмена можно скопировать в любой другое место в редактируемом тексте: подведите курсор мыши к нужному месту и нажмите среднюю кнопку мыши (или одновременно левую и правую, если у вашей мыши нет средней кнопки). Отметим также, что выделять таким образом текст и копировать его в буфер обмена можно не только в окне редактора, но и в любом другом X окне.

В.Тихомиров "Введение в Linux"98 Редактор emacs (10) emacs, как уже отмечалось, обладает очень широкими возможностями. При знакомстве с этим редактором можно порекомендовать для начала просмотреть Emacs Tutorial и Manuals из меню Help. Настройки emacs содержатся в установочном файле.emacs в корневом каталоге пользователя. В частности, если вы хотите, чтобы разные фрагменты текста в окне редактора выделялись разным цветом в зависимости от контекста, запишите в файл.emacs такое заклинание: (global-font-lock-mode t) (setq font-lock-maximum-decoration t)

В.Тихомиров "Введение в Linux"99 Введение в Linux Занятие девятое u Командные оболочки u Переменные окружения u Псевдонимы

В.Тихомиров "Введение в Linux"100 Командные оболочки Командная оболочка - это интерпретатор команд, интерфейс между пользователем и операционной системой. В Linux, как и в других ОС семейства UNIX, существуют два семейства оболочек. Первое семейство основано на Bourne Shell (оригинальная оболочка называлась просто sh ) и включает в себя также ksh, bash и zsh. В другое семейство, основанное на C Shell ( csh ), входит также tcsh. В какой именно оболочке работает пользователь, зависит от того, какой login shell был установлен для него системным администратором. Вы можете определить, в какой оболочке работаете, набрав команду: echo $SHELL Для разных оболочек формат некоторых команд Linux отличается, что будет всегда далее оговариваться. Различен также синтаксис файлов-сценариев (scripts). Кроме того, отличаются имена и порядок выполнения так называемых сценариев автозагрузки (startup files) - командных файлов, которые автоматически выполняются при входе в систему. Если вы решили изменить свой login shell, воспользуйтесь командой chsh. Список всех командных оболочек, которые доступны в вашей системе, можно посмотреть в файле /etc/shells.

В.Тихомиров "Введение в Linux"101 Переменные окружения Environment variables, или переменные окружения - это системные переменные, которые используются операционной системой, программами или командными файлами-сценариями. Вы можете увидеть, какие переменные окружения установлены у вас и каковы их значения в данный момент с помощью команды env. Установить новое значение какой-либо переменной, например MYENV, можно так: setenv MYENV value (семейство C shells), или так: export MYENV=value (семейство Bourne shells). При обращении (но не при установке!) к переменной окружения, к ее имени необходимо добавить символ $. Например, (предполагая Bourne shell): export MYFILE=.bashrc cat $MYFILE

В.Тихомиров "Введение в Linux"102 Переменные окружения (2) u Рассмотрим подробнее смысл некоторых переменных окружения. Переменная HOME указывает на корневой (домашний) каталог пользователя. Предположим для примера, что вы пишите сценарий, который должен создать в домашнем каталоге любого пользователя, выполняющего этот сценарий, новый каталог с именем newdir, чтобы установить в нем какой-то пакет программ. Начальные строки файла- сценария могут выглядеть так: cd $HOME mkdir newdir Тогда любой пользователь, запустивший такой сценарий из любого каталога, получит желаемый результат. Переменная PATH содержит в себе список каталогов, в которых система ищет команды или программы для исполнения. Другими словами, если пользователь хочет выполнить какую-либо команду (или запустить программу), то он либо должен указать полный путь к команде, либо этот путь должен содержаться в списке переменной PATH.

В.Тихомиров "Введение в Linux"103 Переменные окружения (3) Рассмотрим следующий пример: echo $PATH На экран будет выведено что-то в таком роде:.:/home/tikhomir/bin:/usr/bin:/bin:/usr/X11R6/bin Как можно видеть, каталоги в списке переменной PATH разделены знаком :. В частности, каталог /bin содержит многие из рассмотренных ранее команд системы: cp, gzip, mkdir и другие. Поэтому мы и можем вызывать такие команды напрямую, без указания пути к ним. Поиск команд или программ ведется по списку каталогов в переменной PATH слева направо - об этом необходимо помнить, поскольку в системе и у пользователя могут оказаться команды или программы с одинаковыми именами. В этом случае будет выполнена команда из того каталога, который расположен в списке раньше.

В.Тихомиров "Введение в Linux"104 Переменные окружения (4) Отметим, что текущий каталог, представленный знаком. в первой позиции списка в данном примере, по умолчанию может и не включаться системными сценариями автозагрузки в состав переменной PATH. Если это так, то вы не сможете запустить, скажем программу myprog, расположенную в текущем каталоге, просто набрав в командной строке myprog, а должны вызвать ее так:./myprog (здесь между точкой и знаком / нет пробела). Другая возможность - включить текущий каталог в список переменной PATH. Чтобы добавить какой-либо каталог, скажем /opt/bin, в список переменной PATH, необходимо выполнить команду: setenv PATH $PATH:/opt/bin (семейство C shells), или так: export PATH=$PATH:/opt/bin (семейство Bourne shells).

В.Тихомиров "Введение в Linux"105 Переменные окружения (5) Переменная PWD указывает на текущий каталог. Переменная USER указывает на имя пользователя. Переменная EDITOR указывает на редактор, который будет использоваться по умолчанию некоторыми программами и утилитами. Значение переменной PRINTER указывает на имя принтера, используемого по умолчанию. Вид приглашения (prompt), которое выводится системой в начале командной строки терминала, получается заданием специальных последовательностей символов для переменной PS1 (Bourne shells) или в команде set prompt (C shells). Например, команда set %~ % задает приглашение в следующем виде: внутри квадратных скобок жирным шрифтом (часть, ограниченная знаками %B и %b ) печатается

В.Тихомиров "Введение в Linux"106 Переменные окружения (6) имя пользователя ( %n ), потом и имя компьютера ( %m ). Затем, после одного пробела, печатается имя текущего каталога, начиная от корневого каталога пользователя ( %~ ), еще один пробел, знак % и снова пробел. В Bourne shells аналогичного эффекта можно добиться командой export \W \$ Отметим, что принято завершать строку приглашения знаком % при работе в оболочках семейства С, и знаком $ - при работе в оболочках Bourne. Это позволяет сразу, взглянув на строку приглашения, понять - в каком семействе оболочек работает пользователь. Переменная TERM указывает на тип используемого терминала. Обычно эта переменная имеет значение xterm при работе в графическом режиме или linux или vt100 в текстовом режиме работы.

В.Тихомиров "Введение в Linux"107 Переменные окружения (7) Переменная DISPLAY указывает на адрес графического дисплея. Она важна, когда необходимо открыть новое X окно. При работе на локальном компьютере никаких проблем с использованием переменных TERM и DISPLAY обычно не возникает. Однако они могут появиться при работе на удаленном компьютере. О том, как правильно установить переменную DISPLAY, рассказано в разделе о настройках Х- окружения. Значения большинства переменных окружения обычно устанавливают в системных сценариях автозагрузки или сценариях автозагрузки пользователя (см. соответствующий раздел). Более подробно о назначении различных переменных окружения (как и о многом другом) можно прочесть в справочных страницах, посвященных соответствующим командным оболочкам: man bash, man tcsh или man zsh.

В.Тихомиров "Введение в Linux"108 Псевдонимы Для упрощения ввода часто используемых команд можно использовать сокращенные псевдонимы (alias) - по существу, новые команды, создаваемые пользователем. Формат команды alias : alias newcommand oldcommand (семейство C shells), или: alias newcommand=oldcommand (семейство Bourne shells). Например, вот так в bash можно задать сокращение для команды ls -Alt --color | more : alias cl=/bin/ls -Alt --color | more Теперь, если пользователь в командной строке выполнит команду cl, то система выдаст на экран в цвете одну страницу подробного листинга файлов, отсортированных по времени. А alias rm='/bin/rm -i переименует существующую команду rm так, что у пользователя будет требоваться подтверждение каждый раз, когда он захочет удалить файл.

В.Тихомиров "Введение в Linux"109 Псевдонимы (2) Увидеть все действующие для данного пользователя псевдонимы можно, выполнив команду alias без параметров. Команда unalias позволит отменить существующий псевдоним, если это необходимо. u Отметим, что определенный в командной строке псевдоним будет дейтсвовать только до окончания текущей сессии. Чтобы псевдонимы создавались всякий раз, когда вы входите в систему, необходимо включить их определение в специальный файл автозагрузки, который автоматически выполняется при входе пользователя в систему. Как это сделать, будет показано в следующей лекции, посвященной сценариям автозагрузки.

В.Тихомиров "Введение в Linux"110 Введение в Linux Занятие десятое u Настройка X окружения u Сценарии автозагрузки

В.Тихомиров "Введение в Linux"111 Настройка Х-окружения Рассмотрим некоторые вопросы настройки графической среды пользователя или, другими словами - X окружения. Такие команды, как xterm или emacs, открывающие новые X окна, имеют ряд схожих опций, которые можно указывать при вызове. Например, xterm -geometry 80x & задает геометрию открываемого окна терминала xterm : размер рабочего поля терминала составит 80 символов по горизонтали и 40 символов по вертикали, а левый верхний угол окна будет расположен на расстоянии 490 пикселей по горизонтали и 0 пикселей по вертикали от левого верхнего угла экрана. Аналогично можно задать размеры и положение окна редактора emacs. u Другой пример: emacs -bg lightyellow -fg black & Таким образом можно задать цвет фона (опция -bg ) и цвет шрифта

В.Тихомиров "Введение в Linux"112 Настройка Х-окружения (2) (опция -fg ) открываемого окна. Цвета задаются либо с помощью буквенно-цифрового кода (см. man X или man XFree86 ), либо по имени, как в приведенном примере. Имена цветов, которые можно применять, смотрите в файле rgb.txt, который обычно расположен в каталоге /usr/X11R6/lib/X11. Если на вашем компьютере установлена графическая оболочка GNOME, то увидеть палитру поименованных цветов вместе с соответствующими RGB кодами можно с помощью команды gcolorsel. Еще одна важная опция -fn позволяет задать шрифт, который будет использоваться в Х окне. Имя шрифта может быть указано либо явным образом, например xterm -fn \ -misc-fixed-medium-r-normal c-70-iso & либо через заданную заранее переменную окружения: export myfont= \ -misc-fixed-medium-r-normal c-70-iso emacs -fn $myfont &

В.Тихомиров "Введение в Linux"113 Настройка Х-окружения (3) Список всех доступных в системе X шрифтов можно вывести на экран, выполнив команду xlsfonts. Программа xfontsel позволит рассмотреть, как выглядит тот или иной шрифт. Выбрав подходящий шрифт, нажмите мышкой клавишу select программы xfontsel. Тогда имя шрифта окажется в буфере обмена и его можно будет перенести в командную строку терминала или в окно редактора. Имена некоторых наиболее распространенных шрифтов имеют сокращенные псевдонимы (aliases), например 6x10, 9x15, 7x13bold и т.п. Имена таких псевдонимов хранятся в файлах /usr/X11R6/lib/X11/fonts/ /fonts.alias, где - имя каталога со шрифтами определенного семейства. Опция -T задает текст заголовка X терминала, что может быть полезно, например, когда вы со своего компьютера входите на удаленный: в качестве заголовка можно указать имя удаленного компьютера. Так, команда xterm -T Mycomp -e ssh mycomp.gdeto.ru & открывает окно X терминала для входа через SSH протокол на удаленный компьютер mycomp.gdeto.ru и делает слово Mycomp заголовком этого окна.

В.Тихомиров "Введение в Linux"114 Настройка Х-окружения (4) Многие настройки уже открытого X терминала можно изменить, если навести курсор мыши на поле терминала и нажать одновременно клавишу и одну из кнопок мыши. Обратим внимание на две возможности. Иногда бывает, что терминал переключается в режим абракадабры, когда портится выводимый на экран текст. Такое может произойти иногда, если в выводимом на экран потоке встречаются специальные управляющие символы (например, пользователь по ошибке выводит на экран командой типа more какой- нибудь двоичный файл). Чтобы восстановить режим работы Х терминала, необходимо нажать и среднюю клавишу мыши и выбрать в появившемся меню Do Soft Reset. Другая полезная функция - сменить размер шрифта в уже открытом терминале - появится при нажатии и правой клавиши мыши. Многие параметры различных X приложений можно указать в файле.Xdefaults, расположенном в корневом каталоге пользователя. В этом случае такие параметры будут установлены статически.

В.Тихомиров "Введение в Linux"115 Настройка Х-окружения (5) Ниже приведен фрагмент файла.Xdefaults (знак ! здесь означает строку - комментарий): ! emacs emacs*Background: lightyellow emacs*Foreground: black emacs*pointerColor: red3 emacs*cursorColor: Orchid emacs*font: fixed emacs.geometry: 80x32 ! xterm XTerm*highlightSelection: true ! Uncomment this to use color for the bold attribute XTerm*VT100*colorBDMode: on XTerm*VT100*colorBD: blue ! Uncomment this to display the scrollbar XTerm*scrollBar: true ! Number of lines of scrollback to save XTerm*saveLines: XTerm*background: lightyellow

В.Тихомиров "Введение в Linux"116 Настройка Х-окружения (6) XTerm*foreground: black XTerm*cursorColor: red3 XTerm*pointerColor: red ! Activate PgUp & PgDn keys xterm*VT100.Translations: #override\n\ Prior : scroll-back(1,page)\n\ Next : scroll-forw(1,page) Большинство строк в приведенном примере не нуждаются в комментариях: они задают цвета, размеры окна и семейство шрифтов, которые будут использоваться командами xterm и emacs по умолчанию, а также определяют возможность использования клавиш и для прокрутки текста в окнах. Строка XTerm*saveLines: задает количество строк в окне X терминала, которые запоминаются в специальном буфере и могут быть просмотрены, если двигать ползунок на линейке прокрутки нажатой средней кнопкой мыши или с помощью клавиш и на клавиатуре.

В.Тихомиров "Введение в Linux"117 Настройка Х-окружения (7) Подобного рода параметры (они называются X ресурсы) можно указывать в файле.Xdefaults и для ряда других программ, таких, например, как xman или gv. Имена и значения используемых X ресурсов указаны в соответствующих справочных страницах программ. Значения X ресурсов, принятые различными программами по умолчанию, содержатся в файлах каталога /usr/X11R6/lib/X11/app-defaults. В следующих лекциях будут приведены еще примеры использования файла.Xdefaults для задания X ресурсов различных программ.

В.Тихомиров "Введение в Linux"118 Сценарии автозагрузки Сценарии автозагрузки (startup files или profiles) - это файлы, которые автоматически выполняются каждый раз, когда пользователь входит в систему, запускает новую командную оболочку, открывает новый терминал или выполняет команду su. Существуют системные сценарии, которые выполняются для всех пользователей и личные сценарии автозагрузки каждого из пользователей. Личные сценарии автозагрузки должны быть расположены в домашних каталогах пользователей. Имена файлов автозагрузки различны для разных командных оболочек. Кроме того, разные сценарии автозагрузки исполняются в разных ситуациях: одни - когда пользователь входит в систему, другие - когда выходит, третьи - когда запускает новый процесс и т.д. Более детальную информацию можно получить из справочных или HOWTO страниц соответствующих командных оболочек. Здесь мы отметим лишь несколько пользовательских файлов автозагрузки для наиболее распространенных оболочек: bash, tcsh и zsh. bash :.bash_profile (или.profile ) и.bashrc файлы; tcsh :.login,.tcshrc (или.cshrc ) файлы; zsh :.zprofile,.zlogin и.zshrc файлы;

В.Тихомиров "Введение в Linux"119 Сценарии автозагрузки (2) В файлы.bash_profile,.profile,.login,.zprofile и.zlogin обычно включают команды, которые необходимо выполнить лишь один раз в момент начала сессии: задают значения переменных окружения, параметры используемого терминала и т.п. В остальных файлах задают переменные, которые должны передаваться в каждый вновь создаваемый процесс, в частности, псевдонимы (alias). Рассмотрим в качестве примера файл сценария.bashrc. Здесь строки, начинающиеся со знака #, представляют собой комментарий, а команды, заканчивающаяся знаком \, продолжаются на следующей строке. # Default editor export EDITOR=emacs # Command prompt export \W \$ # Pager for man command export PAGER=less

В.Тихомиров "Введение в Linux"120 Сценарии автозагрузки (3) # My favorite fonts export myfont=\ -misc-fixed-medium-r-normal c-70-iso # Set KOI-8 fonts export koi8=\ -misc-fixed-medium-r-normal c-70-koi8-r # Define emacs windows alias em=emacs -fn $myfont -geometry 80x & alias emkoi=emacs -fn $koi8 -geometry 80x & # Define different xtrem windows alias xt=xterm -fn $myfont -geom 80x & alias xtkoi=xterm -fn $koi8 & # Prevent accidental file removing alias mv=/bin/mv -i alias cp=/bin/cp -i alias rm=/bin/rm -i

В.Тихомиров "Введение в Linux"121 Сценарии автозагрузки (4) # Goto other computers alias mycomp=ssh mycomp.gdeto.ru alias xmycomp=xterm -T Mycomp -e ssh mycomp.gdeto.ru & # Colors for ls --color command export LS_COLORS=di=34;1;4:ex=31;1;4:ln=32;4 # Aliases for some ls commands alias ll=/bin/ls -Al alias lt=/bin/ls -Alt alias lh=/bin/ls -Alt | head alias l=/bin/ls -Alt | more alias cll=/bin/ls -Al --color alias clt=/bin/ls -Alt --color alias cl=/bin/ls -Alt --color | more # Add /cern/pro/bin to PATH export PATH=.:$PATH:/cern/pro/bin # End of file.bashrc

В.Тихомиров "Введение в Linux"122 Сценарии автозагрузки (5) Здесь команда export EDITOR=emacs задает редактор ( emacs ), используемый по умолчанию. Команда export \W \$ устанавливает вид приглашения в командной строке. export PAGER=less назначает программу less для просмотра справочных страниц с помощью команды man. Строки export myfont… и export koi8… назначают переменным окружения myfont и koi8 определенные шрифты. Затем alias em=emacs -fn $myfont -geometry 80x & alias emkoi=emacs -fn $koi8 -geometry 80x & создаются псевдонимы em и emkoi, запускающие редактор emacs в определенном месте экрана и с определенным размером окна (опция -geometry ) и использующие только что заданные латинский ( $myfont )

В.Тихомиров "Введение в Linux"123 Сценарии автозагрузки (6) и русский KOI-8 ( $koi8 ) шрифты соответственно. Аналогичным образом вводятся псевдонимы xt и xtkoi, открывающие окно X терминала. Строка alias mv=/bin/mv -i и две другие, следующие за ней, переобозначают команды mv, cp и rm таким образом, чтобы перед тем, как удалить любой файл, у пользователя запрашивалось подтверждение. u Команды alias mycomp=ssh mycomp.gdeto.ru alias xmycomp=xterm -T Mycomp -e ssh mycomp.gdeto.ru & создают псевдонимы для входа через SSH протокол на удаленный компьютер mycomp.gdeto.ru. Первая из команд - mycomp - устанавливает связь в том же окне терминала, где она выполняется, а другая - xmycomp - открывает новое X окно и делает слово Mycomp заголовком этого окна.

В.Тихомиров "Введение в Linux"124 Сценарии автозагрузки (7) u Строка export LS_COLORS=di=34;1;4:ex=31;1;4:ln=32;4 устанавливает значение системной переменной окружения LSCOLORS, которая используется командой ls --color для выделения в листинге различным цветом разных типов файлов. В данном случае будут выделяться: синим цветом - каталоги, красным - исполняемые файлы, зеленым - ссылки. Далее даны примеры назначения псевдонимов для некоторых наиболее часто употребляемых вариантов команды ls. u Наконец, строка export PATH=.:$PATH:/cern/pro/bin добавляет в список переменной окружения PATH путь к исполняемым файлам, расположенных в текущем каталоге (символ. ) и в каталоге /cern/pro/bin. u Таким образом, в файлах автозагрузки устанавливаются значения переменных окружения, псевдонимов и различные установки, которые желательно иметь каждый раз, когда пользователь входит в систему или запускает новый процесс.

В.Тихомиров "Введение в Linux"125 Введение в Linux Занятие одиннадцатое u Процессы u Задания u Пользователи u Информация о системе

В.Тихомиров "Введение в Linux"126 Процессы u Каждое задание, выполняемое на компьютере под управлением операционной системы Linux, называется процессом. Часть процессов запускается при загрузке системы. Они управляют работой некоторых устройств компьютера, обслуживают различные запросы в системе. Выполняются эти процессы в фоновом режиме и обычный пользователь может и не подозревать об их существовании. Другие процессы запускаются пользователями - сначала при входе в систему, затем при запуске некоторых команд или программ. Например, открывая новый X терминал, пользователь запускает новый процесс. Если из этого терминала вызывается, скажем, программа emacs, то создается новый процесс, дочерний по отношению к тому, в котором он был создан, и т.д. Список процессов можно вывести на экран командой ps. Введенная без параметров, эта команда выдаст в коротком формате список процессов, которые были запущены из данного терминала. Чтобы вывести на экран в подробном формате список всех процессов, созданных пользователем, например, tikhomir, наберите: ps a -u tikhomir

В.Тихомиров "Введение в Linux"127 Процессы (2) Вы увидите что-то в таком роде: PID TTY STAT TIME COMMAND 6675 ? S 0:00 -/bin/tcsh -c /usr/share/apps/switchdes 6826 ? R 0:17 xterm -bg lightyellow -geom 80x pts/1 S 0:00 -csh 6845 pts/1 S 0:01 /usr/X11R6/bin/xterm -bg LightYellow -f 6847 pts/2 S 0:00 ssh lxplus.cern.ch 7043 pts/1 S 0:25 /usr/bin/emacs -bg LightYellow -cr Orch 7084 pts/1 S 0:00 gv posobie.ps 7174 ? S 0:01 xterm -bg lightyellow 7176 pts/3 S 0:00 -csh 7230 pts/1 S 0:05 gs -dNOPLATFONTS -sDEVICE=x11alpha -dNO 7271 ? S 0:01 /usr/lib/mozilla-seamonkey-1.0.9/mozilla 7305 ? S 0:00 (dns helper) 7307 pts/1 R 0:00 ps a -u tikhomir

В.Тихомиров "Введение в Linux"128 Процессы (3) В первой колонке указан PID (process identifier) - уникальный номер процесса в системе. Этот номер необходимо указывать при обращении к процессу, например, чтобы прервать его, если он повис и завершить его обычным образом не удается. Так, чтобы прервать программу mozilla, которая в предыдущем примере имеет номер 7271, наберите команду: kill 7271 Более сильная команда, которую следует применять, если мягкий вариант kill не дает желаемого эффекта: kill Такая команда безусловно прервет процесс, хотя и не гарантирует, что прерывание пройдет корректно и не оставит за собой других незавершенных процессов, незакрытых файлов и т.п. Команда pstree выведет на экран имена всех процессов в системе, расположив их в виде дерева, что позволяет увидеть - какие процессы являются родительскими или дочерними по отношению к другим.

В.Тихомиров "Введение в Linux"129 Процессы (4) Команда top выдает периодически обновляющийся список процессов, занимающих наибольшее процессорное время на данном компьютере. На рисунке представлен пример работы команды top. Здесь для каждого процесса можно видеть: PID; имя пользователя, запустившего процесс; приоритет задачи (чем меньше число, тем выше приоритет); размер памяти, отведенный под данный процесс; процент загрузки CPU (в приведенном рисунке суммарная загрузка превышает 100%, поскольку примером послужил двухпроцессорный компьютер) и памяти; общее время, набранное задачей к настоящему моменту. Состояние процесса указано в столбце STAT: R означает активный процесс (running), S (sleeping) - процесс, находящийся в ждущем состоянии и готовый заработать при наступлении какого-то события в системе (например, если на печать направлено задание). Кроме того, в верхней части экрана показано: сколько времени работает данный компьютер без перезагрузки, сколько пользователей на нем работает, как загружен CPU и память и др.

В.Тихомиров "Введение в Linux"130 Процессы (5) Время непрерывной работы Загрузка системы Число пользователей Количество процессов Загрузка процессоров Оперативная память Процессы Программа top

В.Тихомиров "Введение в Linux"131 Задания Информация, предоставляемая программой top, может быть полезна, например, если вы работаете на кластере из нескольких компьютеров и хотите выбрать наименее загруженный из них. Кроме того, если вы запустили программу, например, на языке C, можно контролировать - не создает ли она утечку памяти (memory leakage), т.е. не растет ли со временем размер памяти, занимаемый программой и указанный в столбце SIZE. Каждый процесс может выполняться либо в прямом (foreground), либо в фоновом (background) режиме. Как уже говорилось, вы можете запустить программу в фоновом режиме (если это имеет смысл), добавив в конце командной строки знак &. Например, команда emacs & запускает редактор emacs в отдельном окне, оставив терминал ( xterm ), из которого команда была выполнена, свободным для ввода других команд. Тогда процесс emacs будет называться по отношению к процессу xterm заданием (job).

В.Тихомиров "Введение в Linux"132 Задания (2) Увидеть все задания, запущенные из данного терминала и не завершенные к данному моменту, можно с помощью команды jobs. Например, эта команда выдаст на экран: [5] + Running emacs [6] - Running gv linux.ps Здесь в квадратных скобках указан номер задания. Знак + указывает на так называемое текущее задание, к которому можно применять команду fg (см. ниже) без параметра. u Если необходимо прервать задание, работающее в фоновом режиме, наберите kill %n где n - номер задания, показанный командой jobs.

В.Тихомиров "Введение в Linux"133 Задания (3) В принципе, можно переводить те или иные процессы из прямого в фоновый режим и обратно: подвесит запущенный в прямом режиме процесс, команда bg переведет этот подвешенный (suspended) процесс в фоновый режим, а fg %n вернет задание с номером n обратно в прямой режим исполнения. Однако такие возможности применяются редко, и пользоваться ими нужно с осторожностью.

В.Тихомиров "Введение в Linux"134 Пользователи С помощью команд who и users можно увидеть, кто из пользователей подключен в данный момент к системе. Команда w сделает то же в более подробном формате. Команда finger username позволит получить некоторую информацию о пользователе username, даже если тот не подключен в данный момент к компьютеру. Введенная без параметров, команда finger выдаст информацию о всех пользователях, зарегистрированных в системе. Свой пароль пользователь может сменить командой passwd. Для смены пароля могут применяться и другие команды, если способ авторизации на вашем компьютере основан на системе NIS или Kerberos. Команда whoami покажет - какой пользователь является хозяином терминала, с которого выполнена эта команда. Несмотря на кажущуюся абсурдность, ситуаций, когда эта команда может быть полезной, не так уж мало в условиях, когда одним компьютером пользуется несколько пользователей или, наоборот, один пользователь работает под разными username - например, системный администратор.

В.Тихомиров "Введение в Linux"135 Пользователи (2) Иногда возникает необходимость одному пользователю войти в систему под именем другого пользователя. Например, пользователь, вошедший в систему под своим username, хочет что-то сделать (имея на это право) в качестве системного администратора - пользователя, имеющего специальное имя root. Или, например, один пользователь просит другого на короткое время предоставить ему терминал, чтобы отправить , а перезагружать компьютер нет смысла. Простейший способ сделать это - команда su username Разумеется, система попросит ввести пароль пользователя username. Если необходимо, чтобы при login процессе выполнились сценарии автозагрузки второго пользователя, необходимо добавить опцию -l : su -l username Команда su, введенная без параметров, предполагает, что выполнивший ее хочет войти в систему как root - пользователь с привилегиями системного администратора.

В.Тихомиров "Введение в Linux"136 Информация о системе u Команда uname -a выведет краткую информацию о данном компьютере, в частности - о версии ядра (kernel) установленной операционной системы. Другие команды, выдающие различную информацию о компьютере и используемых ресурсах - procinfo и uptime. Файлы /proc/cpuinfo и /proc/meminfo содержат более подробную информацию об процессоре и памяти данного компьютера. Команда date покажет текущее время на компьютере. Команда df выдаст информацию об используемых разделах жестокого диска, сетевых дисках и смонтированных устройствах типа флоппи-диска и CDROM.

В.Тихомиров "Введение в Linux"137 Введение в Linux Занятие двенадцатое u Компиляция программ u Статические библиотеки u Загружаемые библиотеки u Команда make

В.Тихомиров "Введение в Linux"138 Компиляция программ u Существует множество компиляторов с различных алгоритмических языков программирования для Linux. Рассмотрим здесь вопросы трансляции и компиляции программ, написанных на языках C и Fortran. Команды для трансляции и компиляции программ на языке C и С++ называются gcc и g++ соответственно. Впрочем, g++ можно (и даже рекомендуется) использовать и для компиляции программ на языке C. Предполагается, что файлы с текстами программ на языке С имеют расширение.c, а файлы с текстами программ на языке С++ -.C,.cc или.cxx. Простейшая команда для трансляции и компиляции, например, программы hello.c : g++ hello.c По умолчанию после успешной компиляции создается файл с именем a.out, который можно запустить (выполнить), набрав в командной строке его имя:./a.out

В.Тихомиров "Введение в Linux"139 Компиляция программ (2) или просто a.out если текущий каталог входит в список переменной окружения PATH. Если вы хотите дать исполняемому файлу другое имя, например, hello (в Linux принято называть программы именами файлов без расширения), используйте опцию -o : g++ hello.c -o hello Если результатом трансляции должен стать двоичный файл, а не исполняемый (т.е. необходимо опустить стадию компиляции), применяется опция -c : g++ -c hello.c В этом случае создастся двоичный файл hello.o. Собрать несколько файлов, как с кодами программ, так и оттранслированные двоичные, в один исполняемый можно, перечислив их в команде: g++ main.c hello.o -o main

В.Тихомиров "Введение в Linux"140 Компиляция программ (3) Компилятор с языка Fortran называется g77. Файлы с текстами программ по умолчанию имеют расширения.f или.f77. Все те опции, которые были приведены выше для команды gcc, справедливы и для g77. Обе эти команды имеют огромное число опций. Отметим здесь только некоторые из них. Опция -O задает уровень оптимизации кода при трансляции. По умолчанию оптимизация не проводится, вместо этого минимизируется время трансляции. Опция -O эквивалентна -O1 и означает минимальный уровень оптимизации. Более высокие уровни задаются опциями -O2 и -O3 и должны, в принципе, приводить к более быстрому выполнению программы. С другой стороны, более высокий уровень оптимизации увеличивает время трансляции программы и несет в себе ряд ограничений и потенциальных опасностей. Поэтому обычно при разработке больших и сложных программ применяется следующий подход. В стадии разработки и отладки программа компилируется без оптимизации или с минимальным уровнем оптимизации. И лишь при компиляции окончательного варианта

В.Тихомиров "Введение в Linux"141 Компиляция программ (4) программы включатся желаемый уровень оптимизации. При этом проверяется, что: а) результат работы оптимизированной программы совпадает с результатом той версии программы, которая получена в режиме без оптимизации и б) оптимизированная программа действительно работает существенно быстрее. Опция -W задает уровень предупредительности компилятора, т.е. насколько подробно он будет выводить на экран warnings - предупреждения, не являющиеся фатальными ошибками. В частности, опция -w подавляет предупреждения, -W задает средний уровень предупредительности, а -Wall - высокий (но все еще не максимальный) уровень. Опция -I, за которой следует имя каталога, указывает на каталоги, в которых содержатся include файлы.

В.Тихомиров "Введение в Linux"142 Компиляция программ (5) Опция -L, за которой следует имя каталога, указывает на каталоги, в которых содержатся библиотечные файлы, необходимые при компиляции главной программы. Сами библиотеки затем указываются через опцию -l. Опция -l предполагает следующий стандарт имен библиотечных файлов: имя начинается с приставки lib, а расширение файла -.a. Рассмотрим пример: g77 mygraf.f -W -O -o mygraf -L/cern/pro/lib -lgraflib \ -L/usr/X11R6/lib -lX11 -lXt Здесь транслируется программа из файла mygraf.f и к ней подключаются библиотека libgraflib.a из каталога /cern/pro/lib, а также библиотеки libX11. a и libXt.a из каталога /usr/X11R6/lib. Если имена библиотечных файлов не удовлетворяют приведенному выше стандарту, то такие библиотеки можно включить в командную строку явным образом: g77 mygraf.f /home/tikhomir/lib/graflib.a -W -O -o mygraf Такая команда подсоединит к транслируемой программе из файла mygraf.f библиотеку с нестандартным именем graflib.a из каталога /home/tikhomir/lib/.

В.Тихомиров "Введение в Linux"143 Компиляция программ (6) Пути к каталогам /lib и /usr/lib включены в команды компиляции по умолчанию. Таким образом, ко всем библиотекам, например, в каталоге /usr/lib можно обращаться без указания полного пути и без опции -L : g77 mygraf.f -W -O -o mygraf -lcrypt -ldl Поскольку путь здесь явным образом не указан, то библиотеки с именами libcrypt.a и libdl.a будут искаться и загружаться из каталога /usr/lib. Отметим, что порядок перечисления библиотек в командах компиляции является существенным. Заметим также, что до сих пор мы рассматривали только статические библиотеки (static libraries). В последующем будет рассмотрен еще один вид библиотек - загружаемые, или динамические (shared libraries).

В.Тихомиров "Введение в Linux"144 Компиляция программ (7) Еще одной важной опцией компиляторов является опция -g, которая делает код пригодным для использования с интерактивным отладчиком - программой gdb. Код, сгенерированный с использованием опции -g, занимает несколько больше места, чем без нее. Еще важнее то, что эта опция находится в конфликте с опцией оптимизации кода -O. Поэтому опцией -g рекомендуется пользоваться только в процессе написания и отладки программ. После того, как программа отлажена, эту опцию убирают, а вместо нее ставят опцию оптимизации. В последующих разделах будет рассказано, как пользоваться отладчиком gdb. А в разделе о сценариях приведен пример простого сценария для компиляции программ пользователя.

В.Тихомиров "Введение в Linux"145 Статические библиотеки Команда ar позволяет создавать из оттранслированных двоичных файлов статические библиотеки (архивы) и проводить с ними различные операции. Формат команды: ar option... libname [objfile...] Здесь option... - опции команды ar, libname - имя библиотеки, а objfile... - имена двоичных файлов - модулей, составляющих библиотеку. Заметим, что опции команды ar могут указываться без предшествующего им знака -. Опция r позволяет создать библиотеку или добавить новые модули к уже существующей библиотеке: ar r libmy.a fun1. o fun2. o fun3. o Данная команда создаст библиотечный файл libmy.a, если такой еще не создан, и занесет в него двоичные модули из файлов fun1.o, fun2. o и fun3.o. А команда ar t libmy.a выдаст список двоичных модулей, содержащихся в библиотеке libmy.a.

В.Тихомиров "Введение в Linux"146 Статические библиотеки (2) Опция x позволит извлечь подпрограмму из библиотеки и сохранить ее в виде отдельного файла: ar x /cern/pro/lib/libkernlib.a umcom.o сохранит подпрограмму umcom из библиотеки /cern/pro/lib/libkernlib.a в виде двоичного файла с именем umcom.o в текущем каталоге. Как уже отмечалось, может иметь значение порядок перечисления библиотек в команде компиляции. Общее правило здесь такое: библиотека, в которой содержится вызываемая подпрограмма, должна стоять в команде компиляции после библиотек, содержащих модули, которые эту подпрограмму вызывают. Пусть например, в вашей программе myprog.f вызывается подпрограмма subr1, которая содержится в библиотеке lib1.a. Подпрограмма subr1 вызывает другую подпрограмму subr2, которая заключена в библиотеке lib2.a. Тогда такая команда компиляции g77 myprog.f lib1. a lib2.a... сработает правильно, а вот

В.Тихомиров "Введение в Linux"147 Загружаемые библиотеки g77 myprog.f lib2. a lib1.a... выдаст сообщение об ошибке: undefined reference to subr2. Помимо статических библиотек, рассмотренных выше, часто используются shared libraries - загружаемые или динамические библиотеки. При использовании статических библиотек подпрограммы, входящие в ее состав, подгружаются к создаваемой исполняемой программе на стадии компиляции. Подпрограммы из загружаемых библиотек не подключаются к исполняемому файлу при компиляции, но могут быть подгружены либо при запуске программы, либо уже во время ее исполнения. Это позволяет собрать относительно компактный исполняемый модуль и подключать к нему после его запуска модули из загружаемых библиотек по мере необходимости. Например, мы пишем программу, которая моделирует отклик какой-либо экспериментальной установки на различные физические события. В принципе, нам может понадобится целый ряд программ - генераторов различных классов таких событий. Но нет смысла подключать все эти программы к исполняемому модулю - размер последнего может оказаться очень большим. Вместо

В.Тихомиров "Введение в Linux"148 Загружаемые библиотеки (2) этого можно создать для каждой программы-генератора свою загружаемую библиотеку и подгружать ее только в том случае, если именно этот генератор нам необходим для конкретного расчета. Имена файлов загружаемых библиотек имеют расширения.sl и.so. Чтобы вместо обычного двоичного файла в результате трансляции создалась загружаемая библиотека, указывается опция -shared : g77 pp2g.f -W -O -shared -o pp2g.so Некоторые программы откомпилированы таким образом, что уже на стадии их запуска требуется подключение определенных загружаемых библиотек. Имена тех загружаемых библиотек, которые необходимы при запуске данной программы, можно получить с помощью команды ldd : ldd /home/tikhomir/bin/atlsim libm.so.6 => /lib/i686/libm.so.6 (0x4002c000) libXm.so.1 => /usr/X11R6/lib/libXm.so.1 (0x4004f000)

В.Тихомиров "Введение в Linux"149 Загружаемые библиотеки (3) libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0x ) libXp.so.6 => /usr/X11R6/lib/libXp.so.6 (0x4019d000) libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x401a4000) libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x401b1000) libnsl.so.1 => /lib/libnsl.so.1 (0x ) libcrypt.so.1 => /lib/libcrypt.so.1 (0x4029c000) libdl.so.2 => /lib/libdl.so.2 (0x402c9000) libc.so.6 => /lib/i686/libc.so.6 (0x ) libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x402cc000) libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x402d4000) В этом примере команда ldd показывает: какие загружаемые библиотеки необходимы для работы программы atlsim (в левой стороне строки), а затем, после знаков => - найдены ли в файловой системе необходимые библиотеки и где именно. Если хотя бы одна из библиотек не найдена, мы не сможем использовать программу atlsim, о чем будет сообщено при ее запуске.

В.Тихомиров "Введение в Linux"150 Загружаемые библиотеки (4) Если загружаемая библиотека не найдена, это не означает, что ее вообще нет в системе (хотя, возможно, это и так). Ситуация с поиском загружаемых библиотек в некотором смысле аналогична ситуации с поиском команд или программ при их вызове по имени файла: система должна знать, где искать эти команды или библиотеки. Если в случае команд и программ поиск ведется в тех каталогах, которые перечислены в списке переменной окружения PATH, то и поиск загружаемых библиотек будет вестись только в определенных каталогах. Во-первых, это каталоги /lib и /usr/lib. Во-вторых, это каталоги, которые перечислены в системном файле /etc/ld.so.conf. Наконец, пользователь может включить пути к разделяемым библиотекам в специальную переменную окружения LD_LIBRARY_PATH. Поэтому, если для какой-либо программы необходимо обращение, допустим, к загружаемым библиотекам, расположенным в каталоге /home/tikhomir/lib, это можно сделать так: setenv LD_LIBRARY_PATH /home/tikhomir/lib (для семейства C shells) или: export LD_LIBRARY_PATH=/home/tikhomir/lib

В.Тихомиров "Введение в Linux"151 Команда make ( для семейства Bourne shells). Если необходимо перечислить несколько каталогов, то они разделяются в списке символом :, как и в переменной PATH. Просмотреть соответствующий список каталогов можно командой echo $LD_LIBRARY_PATH При компиляции больших программных пакетов часто используется команды make или gmake и соответствующий Makefile. В таком Makefile по специальным правилам задается: в каких каталогах лежат тексты программ, в каких - include файлы, в каких - уже готовые библиотеки; в каком порядке и с какими опциями программы должны компилироваться; что должно получиться в результате - статические или загружаемые библиотеки, исполняемые файлы и в какие каталоги они должны быть записаны и т.д. Чтобы правильно собрать такой пакет, внимательно прочитайте содержимое файлов с именами типа README и INSTALL, в которых должна быть инструкция по установке. Команда make достаточно интеллектуальна: если, допустим, пользователь изменил одну из множества программ, входящих в пакет, то заново компилироваться будет только она.

В.Тихомиров "Введение в Linux"152 Введение в Linux Занятие тринадцатое u Исполнение программ u Сценарии

В.Тихомиров "Введение в Linux"153 Исполнение программ u После успешной компиляции программа запускается на исполнение просто указанием имени исполняемого файла в командной строке. Здесь мы отметим ряд моментов, связанных с выполнением программ. Напомним, что приостановить исполнение программы и выводимый ею на экран текст можно, нажав клавиши. Чтобы продолжить работу программы и вывод на экран, нажмите. Прервать работу программы можно, нажав. Достаточно часто возникает ситуация, когда в системе существует несколько версий программы (исполняемого файла) с одним и тем же именем, но расположенных в разных каталогах. Если программа вызывается только по имени, без указания пути к файлу, то убедиться в том, что мы используем именно ту версию программы, которую необходимо, поможет команда which : which program покажет полный путь к программе program.

В.Тихомиров "Введение в Linux"154 Исполнение программ (2) Если программа была скомпилирована с использованием опции -g, то при необходимости для ее отладки можно воспользоваться программой gdb. Запустите отладчик, набрав gdb Вы попадаете в оболочку программы gdb. Теперь нужно загрузить саму исполняемую программу: file program где program - имя исполняемого файла. Командой run программа будет запущена на выполнение. Если при выполнении программы происходит какая-либо фатальная ошибка, то диагностика поможет определить ее характер и местоположение в тексте программе. Вы можете выполнять программу пошагово или задавать breakpoints - точки остановки в исполняемой программе, до которых ее выполнение происходит в автоматическом режиме, а при достижении этих точек будет приостановлено и управление передано программе gdb. В этот момент можно проверить - чему равны значения каких-либо

В.Тихомиров "Введение в Linux"155 Исполнение программ (3) переменных в исполняемой программе, изменить значения этих переменных, назначить новые breakpoints или отменить существующие и т.п. Все это позволяет более точно идентифицировать характер и место возникновения ошибок в исполняемой программе. Выйти из программы gdb можно, набрав команду quit. Существует графическая оболочка для gdb - программа xxgdb. В случае, если запускаемая программа должна проработать несколько часов или даже суток, очень полезной будет команда at. Эта команда позволяет запустить программу в любое заданное время в специальном пакетном (batch) режиме. При этом пользователь может и вовсе выйти из системы - программа будет запущена и выполнена без его участия. Для запуска задания с помощью команды at необходимо подготовить простой сценарий. Рассмотрим такой пример файла- сценария (пусть он называется, допустим, pp2g.bat ):

В.Тихомиров "Введение в Linux"156 Исполнение программ (4) ln -sf pp2g.inp.1 pp2g.inp pp2g >> pp2g.out mv pp2g.hbook pp2g.hbook.1 ln -sf pp2g.inp.2 pp2g.inp pp2g >> pp2g.out mv pp2g.hbook pp2g.hbook.2 ln -sf pp2g.inp.3 pp2g.inp pp2g >> pp2g.out mv pp2g.hbook pp2g.hbook.3 В этом сценарии трижды запускается программа pp2g. Программа должна считывать входные данные, необходимый для ее работы, из дискового файла с именем pp2g.inp. Для того, чтобы выполнить программу с тремя разными наборами входных параметров, заключенных в файлах pp2g.inp.1, pp2g.inp.2 и pp2g.inp.3 соответственно, каждый раз перед запуском программы создается ссылка pp2g.inp на файл с входными параметрами. Затем запускается программа pp2g и то, что она в интерактивном режиме должна была бы выводить на экран, записывается в файл pp2g.out.

В.Тихомиров "Введение в Linux"157 Исполнение программ (5) По окончании работы программа pp2g сохраняет результаты в дисковом файле pp2g.hbook. Для того, чтобы следующий запуск программы pp2g не перезаписал этот выходной файл, он переименовывается последовательно в файлы pp2g.hbook.1, pp2g.hbook.2 и pp2g.hbook.3. Запустить такой сценарий в batch- режиме командой at можно следующим образом: at -f pp2g.bat time где time - желаемое время запуска. Простейшие примеры формата времени time таковы: ключевое слово now означает, что необходимо запустить сценарий немедленно, а, например, 19:40 - сегодня в 19 часов 40 минут. Формат задания времени time можно посмотреть в справочной странице команды at. Файл-сценарий pp2g.bat должен иметь атрибут доступа x. Напомним также, что текущее время в системе выдается командой date. С помощью команды atq можно узнать о состоянии своих заданий, направленных на исполнение командой at. При необходимости можно удалить задание командой atrm.

В.Тихомиров "Введение в Linux"158 Исполнение программ (6) u Если вы проводите свои расчеты на кластере из нескольких компьютеров, то там, возможно, установлена какая-либо другая batch- система, например LSF или PBS. Такие системы позволяют автоматически направлять задание на наименее загруженный компьютер в кластере. Иногда при фатальной ошибке в исполняемой программе в текущем каталоге образуется файл с именем core или core.N, где N - целое число - номер процесса. Этот файл представляет собой образ памяти компьютера, связанный с исполняемой программой в момент возникновения ошибки. Если вы не эксперт и не собираетесь анализировать данный файл, просто удалите его.

В.Тихомиров "Введение в Linux"159 Сценарии Сценарий (script) - это текстовый файл, который выполняется из командной строки или из другого сценария. Сценарии могут быть достаточно сложными, представляя собой по существу целые программы. Внутри сценариев могут существовать циклы, арифметические, логические или текстовые операторы, вызов системных функций и т.д. Синтаксис операторов в сценариях отличается для разных оболочек. Просмотрите справочные страницы соответствующих оболочек или найдите в системе какие-нибудь готовые сценарии (например, в каталоге /etc ), чтобы разобраться в правилах, по которым эти файлы составляются. Выполнить сценарий можно двумя способами. Если сценарий не содержит обращения к каким-либо переменным окружения или псевдонимам, а представляет собой просто набор команд, как в приведенном выше примере сценария pp2g.bat, то тогда файлу нужно присвоить атрибут x и выполнить его, просто введя имя в командной строке и нажав : chmod a+x pp2g.bat pp2g.bat

В.Тихомиров "Введение в Linux"160 Сценарии (2) Если же в сценарии задаются переменные окружения или псевдонимы, которые должны быть переданы в родительский процесс, то такой сценарий должен быть исполнен особым образом, как это было отмечено в разделе о переменных окружения: source myscript (семейство C shells), или:. myscript (семейство Bourne shells). В этом случае файл сценария myscript может и не иметь атрибута x. В сценарий можно передавать параметры. Рассмотрим такой пример файла-сценария с именем flc : g77 $1. f -W -O -o $1 -L/cern/pro/lib -lpacklib -lmathlib -lkernlib Этот сценарий предназначен для компиляции программ на языке Fortran с подключением к программе ряда библиотек. Параметром, передаваемым в сценарий, является имя файла с текстом программы (без расширения.f ).

В.Тихомиров "Введение в Linux"161 Сценарии (3) Внутри сценария этот (первый и единственный) параметр обозначается как $1. В сценарии этот параметр встречается дважды как аргумент команды g77 : как имя файла с компилируемой программой (к параметру $1 здесь присоединяется расширение файла.f ) и как имя создаваемой исполняемой программы после опции -o. Теперь мы можем скомпилировать любую программу, выполнив в командной строке сценарий с параметром: flc myprog если myprog.f - имя файла с текстом программы. Приведенный пример можно немного усложнить, изменив текст сценария flc следующим образом: g77 $1. f $2 $3 $4 -o $1 -L/cern/pro/lib -lpacklib \ -lmathlib -lkernlib Теперь через параметры $2, $3 и $4 можно передавать опции для команды g77, например: flc myprog -O2

В.Тихомиров "Введение в Linux"162 Сценарии (4) Другой пример. Рассмотрим ситуацию, когда необходимо найти некий двоичный модуль, расположенный в одной из библиотек, но неизвестно - в какой именно. Следующий файл-сценарий (пусть его имя будет, скажем, slib ) поможет быстро найти библиотеку, в которой содержится искомый модуль. cd $2 for i in * do echo $i ar t $i | grep -i $1 2>/dev/null done Такой сценарий вызывается с двумя параметрами, первый из которых является именем искомого модуля, а второй - именем каталога, в котором расположены библиотеки, предположительно содержащие этот модуль. Например, slib lenocc /cern/pro/lib проведет поиск модуля lenocc во всех библиотеках, расположенных в каталоге /cern/pro/lib.

В.Тихомиров "Введение в Linux"163 Сценарии (5) Как уже отмечалось, синтаксис команд сценария для разных командных оболочек различен. По умолчанию предполагается, что сценарий выполняется в соответствии с синтаксисом той оболочки, из которой он был запущен. Это не всегда удобно. Например, вы написали сценарий в соответствии с синтаксисом оболочки csh, но хотите, чтобы он мог быть запущен и из любой другой оболочки. В этом случае необходимо специальным образом оформить первую строку сценария, которая в данном случае должна выглядеть так: #!/bin/csh Это означает, что данный сценарий всегда будет выполняться с использованием синтаксиса оболочки csh, вне зависимости от того, из какой оболочки он запущен. Напомним, что в любой другой строке сценария, кроме первой, символ # в первой позиции строки означает комментарий.

В.Тихомиров "Введение в Linux"164 Введение в Linux Занятие четырнадцатое u Работа на удаленном компьютере u Обмен файлами между компьютерами

В.Тихомиров "Введение в Linux"165 Работа на удаленном компьютере Для доступа к удаленным компьютерам в Linux может использоваться команда telnet : telnet hostname где hostname - сетевое имя удаленного компьютера, например, mycomp.gdeto.ru. В случае удачного соединения у пользователя будут запрошены его имя и пароль на удаленном компьютере. В приведенном выше примере пользователь после соединения будет вводить команды в том же окне терминала, в котором он набрал команду telnet. Более сложный пример: xterm -T Mycomp -e telnet mycomp.gdeto.ru & Здесь открывается новое окно X терминала с заголовком Mycomp и в этом окне выполняется команда telnet. После соединения все команды на удаленном компьютере будут вводится в этом новом окне.

В.Тихомиров "Введение в Linux"166 Работа на удаленном компьютере (2) При соединении с помощью команды telnet пользователя ожидают проблемы в том случае, если он на удаленном компьютере захочет выполнить команду, которая должна открыть новое X окно, например, команду emacs. Вероятно, что он получит сообщение типаCan't open display…. Это означает, что неверно установлена переменная окружения DISPLAY. Наберите команду echo $DISPLAY на локальном и на удаленном компьютерах - вы увидите, что значения этих переменных различны, например, на локальном компьютере значение переменной DISPLAY есть localcomp.tut.ru:0.0, а на удаленном - mycomp.gdeto.ru:0.0. Чтобы иметь возможность запускать любые X программы на удаленном компьютере, мы должны сообщить тому - где именно он должен открыть X окно. Именно этот смысл имеет переменная окружения DISPLAY - она указывает, где удаленная система должна открывать новые X окна. Таким образом, значение переменной DISPLAY должно указывать на локальный компьютер, т.е. на тот, на котором и должны открываться X окна. В нашем примере необходимо на удаленном компьютере выполнить команду setenv DISPLAY localcomp.tut.ru:0.0 (

В.Тихомиров "Введение в Linux"167 Работа на удаленном компьютере (3) для семейства C shells) или: export DISPLAY=localcomp.tut.ru:0.0 (для семейства Bourne shells). Но этого может оказаться недостаточным - при попытке открыть новое окно на удаленном компьютере вы по- прежнему будете получать сообщения, смысл которых сводится к тому, что ваш локальный компьютер не разрешает удаленному отрывать здесь X окна. Чтобы разрешить удаленному компьютеру сделать это, выполните на локальном команду: xhost mycomp.gdeto.ru Эта команда разрешает удаленному компьютеру mycomp.gdeto.ru открывать на вашем локальном компьютере новые X окна. Можно сразу при соединении сообщить удаленному компьютеру имя своей переменной DISPLAY, указав ее в команде xterm : xterm -display $DISPLAY -T Mycomp -e telnet \ mycomp.gdeto.ru &

В.Тихомиров "Введение в Linux"168 Работа на удаленном компьютере (4) Основной недостаток соединения командой telnet заключается в том, что это соединение абсолютно не защищено от перехвата. Весь ввод-вывод с удаленным компьютером, в том числе и передача имени пользователя и пароля осуществляется открыто, без какого-либо шифрования. Если некий злоумышленник перехватит этот обмен между компьютерами, то он может получить доступ к системе от вашего имени со всеми вытекающими отсюда последствиями. Поэтому для соединения с удаленными компьютерами крайне желательно использовать протокол, который шифрует обмен данными между компьютерами, например, SSH (Secure SHell). Соединение с удаленным компьютером по протоколу SSH устанавливается так: ssh или ssh [-l username] hostname где hostname - сетевое имя удаленного компьютера, а username – имя пользователя на удаленном компьютере, которое можно опустить, если оно совпадает с именем пользователя на локальном компьютере.

В.Тихомиров "Введение в Linux"169 Работа на удаленном компьютере (5) При соответствующей настройке SSH автоматически передаст информацию о переменной DISPLAY и разрешит удаленному компьютеру открывать на локальном новые X окна. Если на вашем компьютере такие настройки не действуют по умолчанию, то добавьте при вызове опцию -X : ssh hostname –X Выходят из удаленного компьютера командой exit. u Рекомендуется использовать SSH протокол для соединения с удаленными компьютерами всегда, когда это только возможно. Единственная проблема может заключаться в том, что SSH просто не установлен на локальном или на удаленном компьютере, но таких компьютеров со временем становится все меньше. Программы для соединения по SSH протоколу существуют не только для Linux и других клонов UNIX, но и для Windows.

В.Тихомиров "Введение в Linux"170 Обмен файлами между компьютерами Для обмена файлами между компьютерами существует программа ftp : ftp hostname соединит локальный компьютер с удаленным компьютером с именем hostname. Далее мы пользуемся собственными команды программы ftp, полный список которых можно увидеть, набрав help. Командой get filename можно получить с удаленного компьютера файл filename, а командой put filename - отправить файл filename с локального компьютера на удаленный. Перед пересылкой файлов можно выполнить команды binary или ascii для указания типа передаваемого файла - двоичный или текстовый соответственно. По умолчанию в большинстве случаев в Linux установлен двоичный обмен, в отличии от версии ftp для Windows, где по умолчанию предполагается текстовый обмен.

В.Тихомиров "Введение в Linux"171 Обмен файлами между компьютерами (2) При указании имен фалов в командах get и put программы ftp можно указывать полный путь с именами каталогов. Если указано только имя файла, то предполагается, что файл расположен в текущем каталоге, как на локальном, так и на удаленном компьютерах. Текущим каталогом сразу после соединения являются: на локальном компьютере – каталог, из которого была выполнена команда ftp, а на удаленном – обычно домашний каталог пользователя. Команды cd и lcd служат для смены текущего каталога на удаленном и локальном компьютерах соответственно. Команда pwd покажет текущий каталог на удаленном компьютере. Командой quit выходят из программы ftp. Существенно повысить безопасность работы в сети при переносе файлов можно, если вместо ftp пользоваться программой sftp (Secure FTP), работающей по протоколу SSH. Работа с программой sftp напоминает работу с ftp - большинство команд у этих программ совпадают.

В.Тихомиров "Введение в Linux"172 Обмен файлами между компьютерами (3) Если необходимо передать только один файл, или несколько файлов, подпадающих под один шаблон, то вместо sftp будет удобнее воспользоваться командой scp (Secure CoPy), также работающей по протоколу SSH. Формат команды scp при передаче файла с локального компьютера на удаленный таков: scp filename При обратной операции - передаче файла с удаленного компьютера на локальный: scp filename В приведенных примерах username - имя пользователя на удаленном компьютере, hostname - имя удаленного компьютера, filename - имя файла на локальном компьютере, filename1 - имя файла на удаленном. filename и filename1 могут включать в себя, кроме собственно имен, и пути к файлам. Если filename и filename1 должны совпадать, вместо соответствующего имени файла можно поставить символ., аналогично команде cp. Например, команда

В.Тихомиров "Введение в Linux"173 Обмен файлами между компьютерами (4) scp pp2g.f передаст файл pp2g.f из текущего каталога локального компьютера в каталог star/soft/pomeron/ пользователя tikhomir на удаленном компьютере mycomp.gdeto.ru, сохранив имя файла без изменения. А команда scp передаст все файлы с расширением.so из каталога lib пользователя tikhomir с удаленного компьютера mycomp.gdeto.ru в текущий каталог пользователя на локальном компьютере. На компьютере могут быть установлены и другие программы, предназначенные для переноса файлов с компьютера на компьютер. Некоторые из них имеют удобный графический интерфейс и поддерживают возможность докачки файлов, если во время сеанса обмена была прервана связь. Отметим такие программы, как ncftp, wget, gftp (Gnome FTP). Знакомый нам mc (Midnight Commander) также может использоваться для переноса файлов между

В.Тихомиров "Введение в Linux"174 Обмен файлами между компьютерами (5) компьютерами: наберите в командной строке mc команду cd где username - имя пользователя на удаленном компьютере, hostname - сетевое имя удаленного компьютера, а dirname - имя каталога на удаленном компьютере. Тогда, после удачного соединения, на одной из панелей Midnight Commander будет отображено содержимое каталога dirname на удаленном компьютере. Возможна навигация по файловой системе удаленного компьютера. Пересылка файлов осуществляется просто как копирование из одной панели mc в другую. В любом случае перед передачей очень больших файлов рекомендуется сначала уменьшить размер передаваемого файла с помощью команды gzip.

В.Тихомиров "Введение в Linux"175 Введение в Linux Занятие пятнадцатое u Просмотр Web страниц u Работа с электронной почтой u Печать в Linux

В.Тихомиров "Введение в Linux"176 Просмотр Web страниц Существует версии netscape, mozilla, opera, а также некоторых других Web-браузеров для Linux. Графические оболочки KDE и GNOME имеют собственные встроенные программы для просмотра Web страниц. В условиях, когда связь с удаленным компьютером медленная (например, при модемном соединении), может оказаться удобным использовать другую программу для просмотра Web страниц: lynx. Программа запускается из командной строки и работает в текстовом режиме. Из-за отсутствия поддержки какой-либо графики, lynx значительно быстрее, чем netscape и другие подобные программы, загружает Web страницы. Запустить lynx со стартовой страницы, например, можно так: lynx

В.Тихомиров "Введение в Linux"177 Просмотр Web страниц (2) Навигация по Web странице в lynx осуществляется клавишами,,, и. В нижней части окна выводятся подсказки к некоторым командам, полный список которых можно просмотреть, нажав клавишу. Отметим только, что загрузить файл или ссылку, который в данный момент выделен в окне lynx, можно, нажав клавишу. Многочисленные настройки программы устанавливаются через Options Menu, в которое можно войти, нажав.

В.Тихомиров "Введение в Linux"178 Работа с электронной почтой Для работы с электронной почтой в Linux существует множество различных программ. Это может быть и Web-браузер типа mozilla со встроенным клиентом, и специальные программы, например kmail в KDE. Одной из наиболее распространенных программ для работы с электронной почтой в Linux является pine. Ее преимущество заключается в том, что она поставляется практически со всеми дистрибутивами Linux и то, что она может работать в текстовом режиме терминала. Опишем здесь работу с программой pine более подробно. Главное меню программы pine

В.Тихомиров "Введение в Linux"179 Работа с электронной почтой (2) Главное меню программы pine показано на рисунке. Вы можете выбрать один из пунктов главного меню, либо нажав на клавиатуре один из символов ( ?, C и т.д.), показанных с левой стороны экрана, либо выделив клавишами и нужную строку и нажав. В двух нижних строках в окне pine даны подсказки, которые являются контекстно-зависимыми: их содержание меняется в зависимости от того, в каком из режимов вы работаете. В pine пользователь имеет набор папок (folders), в каждой из которых содержится определенный класс писем. Список всех папок можно увидеть, выбрав FOLDER LIST в главном меню pine. В папке INBOX хранятся входящие письма. Папка sent-mail содержит письма, отправленные пользователем в текущем календарном месяце. В конце каждого месяца папка sent-mail переименовывается в папку с именем, например, sent-mail-nov-2007.

В.Тихомиров "Введение в Linux"180 Работа с электронной почтой (3) Существуют папки, предназначенные для хранения писем, отправление которых было на какое-то время отложено (папка postponed-msgs ), или для хранения особо важных полученных писем (папка saved-messages ). Пользователь может создать и свои собственные папки. По умолчанию та папка, которую пользователь смотрел последний раз (обычно это папка INBOX ), становится текущей и открывается при выборе пункта меню MESSAGE INDEX. Для составления письма следует выбрать в главном меню пункт COMPOSE MESSAGE. Мы попадаем в режим составления письма. Здесь в поле To: указываем электронный адрес получателя письма, в поле Cc: - адрес другого получателя, которому мы, возможно, хотели бы послать копию письма. При необходимости можно указать несколько адресов, разделяя их запятой. В поле Subject: указываем заголовок (тему) письма. Затем в основном поле этого окна составляем текст письма.

В.Тихомиров "Введение в Linux"181 Работа с электронной почтой (4) По умолчанию в pine встроен редактор pico, который нами рассматривался ранее. После того, как письмо составлено, его можно отправить, нажав. Копия отправленного письма будет сохранена в папке sent-mail. Если вы решили отложить на какое-то время отправку письма, нажмите - письмо будет сохранено в папке postponed-msgs. Если пользователь передумал отправлять письмо, он может нажать - письмо не будет отправлено и не будет сохраняться в какой-либо папке (но оно будет сохранено в файле dead.letter в домашнем каталоге пользователя). Если к отправляемому письму необходимо присоединить один или несколько документов - например, файл в Postscript формате или документ MS Word, переведите курсор в строку Attchmnt: (attachment - приложение к письму) и нажмите. Вам будет предложено ввести имя файла для подсоединения к письму.

В.Тихомиров "Введение в Linux"182 Работа с электронной почтой (5) Открыв папку INBOX, мы получим список входящей корреспонденции. По умолчанию список пришедших писем отсортирован по времени получения. Те письма, которые вы еще не прочли, отмечены символом N с левой стороны строки. Если вы собираетесь удалить какое-либо из сообщений, то подведите к нужной строке курсор и нажмите клавишу - в левой части строки появится символ D - это означает, что письмо подготовлено к удалению. Таким же образом можно удалить сообщения и из любых других папок - sent-mail или postponed-msgs. Выделив какое-либо из полученных писем в списке папки INBOX и нажав, мы попадаем в режим просмотра письма. При желании на полученное письмо можно ответить, нажав клавишу (reply) или переправить третьему лицу, нажав (forward). Еще две важных операции, которые вы можете провести с полученными письмами: сохранить особо важные из них в специальной папке saved messages, или записать копию письма в виде файла на диске. Для первой операции, выделив письмо, нажмите клавишу, а для второй -.

В.Тихомиров "Введение в Linux"183 Работа с электронной почтой (6) Если вы хотите сразу из программы pine распечатать полученное письмо, то нажмите клавишу. Но заметьте - это работает только тогда, когда у вас определена переменная окружения PRINTER. В противном случае придется сначала записывать письмо в виде файла на диск, а потом, уже выйдя из программы pine, этот файл распечатывать. Заметим, что подсказки для команд save, export и print, которым соответствуют клавиши, и, изначально не видны в двух нижних строках окна программы pine - чтобы увидеть подсказки к этим и другим командам, нажмите клавишу ( OTHER CMDS ). Выбрав пункт ADDRESS BOOK в главном меню программы pine, вы сможете назначить короткие nicknames (псевдонимы) для электронных адресов тех корреспондентов, с которыми вы ведете активную переписку. Тогда при составлении письма в поле To: можно будет вместо полного адреса указывать nickname - программа сама переведет этот псевдоним в полный адрес.

В.Тихомиров "Введение в Linux"184 Работа с электронной почтой (7) Когда несколько человек работают над одним проектом, часто бывает необходимым направить письмо сразу всем участникам проекта. Для этого в ADDRESS BOOK можно составить список рассылки: в качестве nickname указать некое слово, например, project, а в поле для реальных адресов перечислить через запятую адреса всех участников проекта. Тогда при составлении письма в поле To: достаточно будет указать: project - и pine включит в число получателей всех, кто в ADDRESS BOOK перечислен под псевдонимом project. Наконец, в пункте SETUP главного меню можно изменить настройки программы pine. Эти настройки сохраняются в файле.pinerc в домашнем каталоге пользователя. Файл.pinerc - текстовый и для изменения настроек можно просто редактировать этот файл. Но любую из этих возможностей - меню SETUP и редактирование файла.pinerc - следует использовать с крайней осторожностью. В любом случае перед тем, как изменять настройки программы pine, сохраните текущую версию файла.pinerc.

В.Тихомиров "Введение в Linux"185 Работа с электронной почтой (8) Часто пользователь имеет учетные записи и работает на нескольких компьютерах. Делать login на каждый из этих компьютеров для того чтобы проверять - не пришло ли туда какое-либо письмо, бывает достаточно неудобно. Для решения этой проблемы создайте в вашем домашнем каталоге на тех машинах, которыми вы редко пользуетесь, файл с именем.forward. В этот файл вы можете записать свой электронный адрес, который вы чаще всего проверяете. В результате все письма, приходящие на компьютеры, где в вашем домашнем каталоге существует файл.forward, будут перенаправляться по адресу, указанному в этом файле - так вы сможете собрать всю свою корреспонденцию в одном месте. Чтобы при этом письма сохранялись и в почтовом ящике на данном компьютере, нужно вставить в файл.forward имя пользователя. Например, пользователь с именем user1 на данном компьютере хочет перенаправлять свои письма на адрес Тогда файл.forward может выглядеть так: user1

В.Тихомиров "Введение в Linux"186 Печать в Linux Печать из командной строки Linux осуществляется командой lpr : lpr [-P printername] filename где filename - имя выводимого на печать файла, а printername - имя принтера. Вы можете узнать имя вашего принтера (или нескольких) у системного администратора или подсмотреть в файле /etc/printcap. Принтер может быть как локальным, подключенным непосредственно к вашему компьютеру, так и сетевым. Печать из Linux возможна и на принтер, подключенный к другому компьютеру под управлением Windows, если на Linux установлен пакет программ Samba. Если на вашей системе установлен только один принтер (или вы пользуетесь в основном одним), то чтобы не набирать каждый раз имя принтера, можно задать его через переменную окружения PRINTER: setenv PRINTER printername (для семейства C shells) или export PRINTER=printername (для семейства Bourne shells).

В.Тихомиров "Введение в Linux"187 Печать в Linux (2) Для печати текстовых файлов, листингов программ часто бывает удобно пользоваться программой a2ps, которая переводит текст в Postscript формат, форматируя его по две страницы на лист и печатая красивую рамку, в которой указано время печати и имя файла. Вы можете либо сначала создать Postscript файл: a2ps filename > filename.ps который потом можно просмотреть и распечатать, либо сразу направить на печать, без создания промежуточного файла: a2ps filename | lpr Похожими функциями обладает программа mpage. Она также умеет форматировать входной файл в несколько страниц на лист, причем входным файлом может служить не только текстовый, но и Postscript файл. Рекомендуемые опции для программы mpage : mpage -2 -bA4 -S -I1 -H -f

В.Тихомиров "Введение в Linux"188 Печать в Linux (3) u Команда lpq [-P printername] покажет состояние очереди на печать на принтер printername. Команда lprm [-P printername] n удаляет из очереди задание с номером n, который показан командой lpq. В графических оболочках KDE или GNOME печать осуществляется просто нажатием мышкой на соответствующую иконку или через меню File Print в окне запущенного приложения.

В.Тихомиров "Введение в Linux"189 Введение в Linux Занятие шестнадцатое u Русификация в Linux u Программы для работы с графикой u Офисные программы

В.Тихомиров "Введение в Linux"190 Русификация в Linux Здесь мы коснемся некоторых вопросов, связанных с использованием русского языка в Linux. К сожалению, вопрос поддержки иностранных (по отношению к английскому) языков в Linux решается достаточно сложно - практически каждая программа требует отдельной настройки. Отметим вначале, что в Linux, как и в других операционных системах семейства UNIX, основной кодировкой русских шрифтов является KOI8- R, хотя при желании можно использовать и Windows кодировку CP-1251 или MS-DOS кодировку CP-866. Вы можете конвертировать текстовый файл из одной кодировки в другую с помощью команды iconv. Например, iconv -f CP1251 -t KOI8R -o newfile oldfile преобразует текстовый файл oldfile в кодировке CP-1251 в newfile в кодировке KOI8-R.

В.Тихомиров "Введение в Linux"191 Русификация в Linux (2) Далее необходимо убедиться, что на вашей машине установлены русские шрифты. Напомним, что нас интересует, в первую очередь, работа в графическом режиме, т.е. речь идет о шрифтах для X Window. Список всех доступных X шрифтов выдается командой xlsfonts. Чтобы увидеть, есть ли в системе шрифты в кодировке KOI, наберите xlsfonts | grep -i koi Соответственно, если вас интересуют Windows шрифты, попробуйте xlsfonts | grep 1251 или xlsfonts | grep -i win Если эти команды не выдадут на экран ничего - то у вас нет доступных русских шрифтов. В этом случае необходимо обратиться к вашему системному администратору. u Если русские X шрифты в вашей системе установлены, можно открыть окно X терминала, в котором будут видны символы кириллицы: xterm -fn fontname &

В.Тихомиров "Введение в Linux"192 Русификация в Linux (3) где fontname - это одно из имен шрифтов, которое выдала команда xlsfonts. Для использования в окнах терминала или редактора emacs следует выбирать шрифты с фиксированной шириной символов - это шрифты семейств courier или fixed. Итак, теперь мы можем видеть русские символы в окне X терминала. Этого достаточно, например, для того, чтобы читать письма на русском языке в программе pine или чтобы просмотреть русский текст из файла, выведенный на экран командой more. Чтобы видеть русские шрифты в окне редактора emacs, отредактируйте файл.emacs, вставив в него следующие строки: (standard-display-european t) (set-input-mode (car (current-input-mode)) (nth 1 (current-input-mode)) 0) Первая инструкция необходима для русификации emacs в текстовом (консольном) режиме, вторая - для работы в графической X моде.

В.Тихомиров "Введение в Linux"193 Русификация в Linux (4) Теперь вы можете запустить редактор emacs, который понимает русские буквы. Удобно ввести короткий псевдоним (alias) для команды запуска редактора: alias emkoi=emacs -fn $koi8 & где переменная окружения koi8 должна быть определена ранее и указывать на выбранный шрифт. Для того чтобы иметь возможность вводить с клавиатуры символы на русском языке, необходима соответствующая программа. Если у вас установлена оболочка KDE с поддержкой национальных клавиатур, то можно назначить режимы дополнительной клавиатуры через KDE Control Center. В противном случае вам, возможно, придется устанавливать и настраивать программу переключения клавиатуры самостоятельно. Такие программы можно найти в Интернете.

В.Тихомиров "Введение в Linux"194 Русификация в Linux (5) Чтобы иметь возможность писать письма на русском языке в программе pine, отредактируйте файл.pinerc в вашем корневом каталоге. В нем необходимо установить character-set=koi8-r Чтобы видеть русские символы в Midnight Commander mc, установите в нем опцию Full 8 bit output через меню Options Display bits. А установленная опция Full 8 bit input позволит также вводить русские символы с клавиатуры во встроенном редакторе mc. Если на вашем компьютере установлены русские Postscript шрифты, а программа a2ps поддерживает русские кодировки, то для печати текстового файла, содержащего кириллицу, можно конвертировать его в Postscript формат и затем распечатать: a2ps -X koi8 filename -o filename.ps Список кодировок, известных программе a2ps, можно увидеть, набрав a2ps --list=features

В.Тихомиров "Введение в Linux"195 Русификация в Linux (6) u Если вы пользуетесь издательской системой TeX, то для корректной обработки русского языка соответствующий TeX файл должен содержать преамбулу: \documentclass [12pt,a4paper]{article} \usepackage[koi8-r]{inputenc} \usepackage[english,russian]{babel} Полная русификация операционной системы включает в себя также представление в соответствующих форматах даты и времени, национальной валюты, представления действительных чисел, сообщений операционной системы и т.п. Форматом вывода такого рода управляют переменные окружения, описанные в справочной странице locale : man 7 locale Если вам действительно все это необходимо, то попробуйте установить значение переменной окружения LC_ALL как ru_RU.KOI8-R.

В.Тихомиров "Введение в Linux"196 Русификация в Linux (7) Если на вашем компьютере есть соответствующие переводы, то возможен просмотр справочных страниц различных команд на русском языке. Для этого необходимо задать переменную LANG : setenv LANG ru_RU.KOI8-R (для семейства C shells) или: export LANG=ru_RU.KOI8-R (для семейства Bourne shells).

В.Тихомиров "Введение в Linux"197 Программы для работы с графикой Postscript формат является одним их самых распространенных форматов для хранения и качественной печати документов со смешанным текстовым и графическим содержанием. В Postscript формате хранятся очень многие документы в сети - научные статьи, книги, различная документация и т.д. С помощью программы gv можно просматривать Postscript файлы (а также файлы в PDF формате). Для просмотра файлов в PDF формате существует также программы xpdf и acroread. Очень удобная программа векторной графики xfig может быть использована для рисования несложных рисунков, диаграмм, блок- схем. xfig умеет экспортировать свой вывод в различные графические форматы: Postscript, gif, jpeg, tiff и другие.

В.Тихомиров "Введение в Linux"198 Программы для работы с графикой (2) Очень мощный графический пакет для растровой графики gimp позволяет работать с несколькими слоями изображения, создавать различные спецэффекты, в том числе и анимационные. Он может работать с очень большим числом различных графических форматов. С помощью команды convert можно конвертировать графический файл из одного формата в другой. Если вас интересуют программы для работы с каким-то конкретным форматом графики, попробуйте набрать man -k format где format - интересующий вас графический формат, например, jpeg или gif.

В.Тихомиров "Введение в Linux"199 Офисные программы Вместе с графической оболочкой KDE в Linux поставляется пакет Koffice c достаточно развитыми возможностями по работе с форматированным текстом, таблицами, с редактором формул, средствами для создания презентаций и др. u Мощным пакетом офисных программ является OpenOffice. По своим функциональным возможностям OpenOffice аналогичен Microsoft Office для Windows. Программы OpenOffice понимают форматы файлов от Microsoft Office. u В научной среде наиболее распространенным пакетом для написания статей является TeX. TeX обеспечивает полиграфическое качество представления материалов. Статьи в формате TeX принимаются практически всеми редакциями научных журналов. Основные команды при работе с TeX файлами в Linux таковы: latex filename где filename - имя TeX файла (если файл имеет расширение.tex или.latex, то его можно не указывать).

В.Тихомиров "Введение в Linux"200 Офисные программы (2) После трансляции TeX файла командой latex создается файл с именем filename.dvi, который можно просмотреть с помощью программы xdvi или перевести в Postscript формат командой dvips filename[.dvi] и затем распечатать. Программа aspell предназначена для проверки орфографии текста в файле. Эта программа встроена также в редактор emacs. Формат вызова программы aspell для проверки текстового файла: aspell -c filename Для проверки текста на русском языке, наберите aspell -d ru -c filename Разумеется, для проверки русской орфографии в системе должны быть установлены соответствующие словари. Пользователь может также создавать и свои собственные словари и подключать их дополнительно к основному.

В.Тихомиров "Введение в Linux"201 Офисные программы (3) Программа ical представляет собой простой графический календарь-органайзер. Команда cal распечатает в окне терминала календарь (по умолчанию - текущего месяца). xcalc представляет собой калькулятор для несложных вычислений. Множество полезных программ и утилит содержится в оболочках KDE и GNOME: мультимедийные программы, калькуляторы, органайзеры, различные редакторы, программы для отправки факсов и многое, многое другое. Однако обзор этих программ выходит за рамки данного курса.