Предлагаемая книга призвана ответить на вопросы пользователя: «Какие преимущества даст мне операционная система Linux? Зачем она мне? Что я смогу с ее помощью делать?» Книга посвящена всему, что связано с обработкой текстовой информации. Сюда входит набор, редактирование текстов, оформление, структурирование их, поиск, автоматическое преобразование, верстка, создание хранилищ текстовой информации и баз данных, создание, отправка и прием электронной корреспонденции, описание офисных приложений, словом, все то, что входит в круг обязанностей любого работни
ка современного офиса: от менеджера до секретаря.
СОДЕРЖАНИЕ
Об этой книге
1. Linux и источники информации о системе
Основные факты о Linux
Кому принадлежат права на Linux
Различные варианты Linux
Замечание о WWW
Несколько популярных сайтов, посвященных Linux
Описания компонентов Linux и родственная информация на русском языке
FTP-серверы с информацией о Linux
Прикладные программные пакеты для Linux
Для каких аппаратных платформ доступна Linux
Kниги по Linux
Kниги по Linux на русском языке
Информационные команды системы
Команда uname
Как прошла загрузка системы
Программа procinfo
Команда man
Команда info
Команда apropos
Команда helptool
Команда locate
Команда rpm
Примеры получения информации из базы rpm
На каком языке говорит Linux
2. Базовые компоненты Linux
Оболочки
Команды
Сценарии
Оболочка sh
Сравнительные характеристики оболочек
Оболочка bash
zsh
Прочие оболочки
Дополнительные примеры
Вход в систему
Выход из системы
Файловая система Linux
Введение
Типы файлов
Манипуляции с файлами
Иерархия системных файлов
Важные конфигурационные файлы Linux
Конфигурационные файлы в каталоге /etc
Языки программирования в Linux
FORTRAN
C
C++
Прочие языки
3. Редакторы текста
vi и vim
Технические особенности редакторования текста в vim
Элементы текста, с которыми работает vim
Команды редактирования с использованием элементов текста
Режимы работы редактора
Вызов редактора
Получение описания команд
Алфавитный список основных команд редактора
Работа с окнами в редакторе vim
Метки в тексте
Регистры
Программы построения таблицы тегов
Использование таблицы тегов
Получение информации о положении курсора
Строчные команды редактора
Сценарии использования редактора vim
emacs, xemacs
Введение
Технические особенности редактирования в emacs
Примеры общеупотребительных команд emacs
Вспомогательные команды редактора
Основные структурные элементы emacs
Запуск и инициализация emacs
Потоковый редактор текста sed
Введение
Вызов sed
Команды редактирования sed
Прочие команды sed
Другие редакторы текста
pico
xedit
joe
nedit
4. Программы анализа, преобразования и печати текста
Текст
Поиск по шаблону и регулярные выражения
Метасимволы
Список метасимволов
Примеры поиска
Примеры поиска и замены
Программы работы с текстом
Программа cat
Программа tac
Программа nl
Программа od
Семейство программ grep
Программа fmt
Пpоrрамма pr
Программа fold
Подсистема печати текста a2ps
Введение
Параметры командной строки программы a2ps
Простые примеры использования a2ps
Стили печати
PreScript
Инициализационные файлы a2ps
Кодировка входного потока
Параметры a2ps
Глобальные параметры a2ps
Общий стиль выводимых страниц
Определение плана страницы документа
Примеры использования a2ps
Программа head
Программа tail
Программа split
Программа csplit
Программа sort
Программа uniq
Программа comm
Программа cut
Программы expand и unexpand
Программа tr
Программа paste
Программа join
Подсистема сканирования, анализа и обработки текстов awk
Введение
Простые примеры использования awk
Запуск awk
Переменные, записи, поля
Встроенные переменные awk
Массивы
Встроенные функции языка awk
Виды шаблонов, используемые в awk
Действия в awk
Дополнительные примеры
Заключительные замечания по поводу awk
5. Система поддержки версий текстов CVS
Модель работы CVS
Простые примеры использования CVS
Получение исходных текстов из хранилища
Удаление рабочего каталога
Хранилище CVS
Создание хранилища CVS
Форма представления данных в хранилище CVS
Какие файлы содержатся в хранилище
Удаленные хранилища
Метод доступа rsh
Несколько хранилищ
Версии файлов и программных продуктов
Номера версий
Присваивание версий
Теги
Липкий тег
Ветвление и объединение
Для чего удобны ветви?
Создание ветви
Доступ к ветвям
Ветви и номера версий
Магические номера ветвей
Слияние ветвей
Повторное слияние
Объединение различий между двумя любыми версиями
Форма хранения данных в рабочем каталоге
Конфигурационный файл modules
Простейший вид объекта: алиасный модуль
Регулярные модули
Амперсантные модули
Исключение каталогов
Модульные параметры
Файл установки фильтров
Конфигурационные файлы для поддержки команды commit
Файл commitinfo
Поддержка свежей рабочей копии
Протоколирование операций CVS
Кто редактирует файл
Включение/выключение режима слежения
Способы уведомления о действиях CVS
Как редактировать наблюдаемый файл
Кто наблюдает и редактирует
Создание файлов проекта в хранилище
Существующие файлы
Исходные тексты из разных компаний
Первоначальный импорт
Изменение модуля командой import
Возврат к исходному варианту
Как управлять подстановкой ключевых слов во время импорта
Несколько вендорных ветвей
Как ваша система построения программ взаимодействует с CVS
Специальные файлы
Игнорирование файлов посредством cvsignore
Простой пример разрешения конфликта при объединении версий
Список команд CVS
Описание команд CVS
Коды завершения CVS
Инициализационный файл CVS: .cvsrc}
Глобальные параметры CVS
Общие параметры команд CVS
admin - административный интерфейс для rcs
Параметры команды admin
checkout - получение исходных текстов из хранилища для редактирования
Параметры команды checkout
diff - показать отличия между версиями
Параметры команды diff
Примеры использования команды diff
export - экспорт исходных текстов из хранилища
Параметры команды export
history - показать историю изменения состояния хранилища
Параметры команды history
import - импортирование текстов в CVS
Параметры команды import
Вывод команды import
log - выдать протокольную информацию для файлов
Параметры команды log
rdiff - различия между версиями в формате patch
Параметры rdiff
Примеры использования rdiff
commit - команда записи изменений в хранилище
Параметры commit
Примеры использования commit
update - синхронизировать рабочий каталог и хранилище
Параметры команды update
Описание диагностики команды update
Примеры использования команды update
rtag - добавить символический тег
Параметры команды rtag
tag - добавить тег в рабочем каталоге
Параметры команды tag
release - освободить рабочий каталог
Параметры команды release
Вывод release
Примеры
Подстановка ключевых слов
Список ключевых слов
Использование ключевых слов
Обход подстановок
Режимы подстановки
Переменные окружения, которые использует система CVS
Алфавитный указатель
ОТРЫВОК
1. Linux и источники информации о системе
Основные факты о Linux
Кому принадлежат права на Linux
Различные варианты Linux
Замечание о WWW
Несколько популярных сайтов, посвященных Linux
Описания компонентов Linux и родственная информация на русском языке
FTP-серверы с информацией о Linux
Прикладные программные пакеты для Linux
Для каких аппаратных платформ доступна Linux
Kниги по Linux
Kниги по Linux на русском языке
Информационные команды системы
Команда uname
Как прошла загрузка системы
Программа procinfo
Команда man
Команда info
Команда apropos
Команда helptool
Команда locate
Команда rpm
Примеры получения информации из базы rpm
На каком языке говорит Linux
Основные факты о Linux
История появления Linux изложена во множестве книг, а также в Интернете; здесь мы ограничимся лишь перечислением основных событий.
Linux - это один из вариантов или диалектов популярной операционной системы UNIX, которая была разработана в начале 70-х. Популярность UNIX легко объяснить с точки зрения портируемости UNIX, то есть возможности установки UNIX на машинах различной архитектуры. Модульность и структурированность системы позволяла, переделав относительно небольшое количество составляющих программных компонентов, запустить систему на совершенно новой машине за относительно небольшое время. Это свойство оказалось решающим в 80-е при выборе операционных платформ для процессоров ти
па RISC: почти на всех процессорах общего назначения были установлены различные варианты UNIX. Так, компания IBM разработала свой вариант UNIX, названный AIX; диалекты UNIX, разработанные компаниями SGI, CRAY, Hewlett Packard, Sun Microsystems, SCO называются соответственно IRIX, UNICOS, HPUX, Solaris, SCO Unix. Сушествуют и многие другие варианты UNIX.
Кстати, о названии UNIX (произносится "юникс"): слово "UNIX" до появления операционной системы ничего не означало. Это название появилось в противовес названию проекта грандиозной операционной системы конца 60-х годов MULTICS. Как правило, UNIX пишется латинскими буквами и воспринимать это слово следует как своеобразную идиому.
Ядро операционной системы Linux для процессора Intel 80386 было разработано финским студентом по имени Linus Torvalds (Линус Торвальдс), который продолжает развивать ядро с помощью многих десятков добровольных помощников со всего мира. Основная часть остальной системы - утилиты, языки программирования, сервисные подсистемы - была взяты из проекта GNU. Все это вместе составило новую свободно распространяемую операционную систему.
Нетрудно видеть, что название Linux (читается "линукс"1) образовано по аналогии с UNIX. Это тоже идиома.
Кому принадлежат права на Linux
Таким образом, права на ядро системы принадлежит Линусу Торвальдсу, который объявил, что оно может распространяться на условиях GNU General Public License (GNU GPL - основная общественная лицензия GNU). В соответствии с этой лицензией ядро может свободно копироваться, использоваться в любых целях (модификация, продажа, прочее), но вы не имеете права накладывать ограничения на распространение продуктов, которые вы создали на основе ядра, раз вы получили его в соответствии с GNU GPL. Иными словами, если кто-то купил у вас модифицированное ядро, он также имеет право продавать
этот продукт, не спрашивая вашего разрешения. Итак, любой человек может свободно копировать любой доступный вариант Linux и поступать с ним так, как считает нужным.
Полностью детали политики копирования можно прочесть в файле COPYING, который входит в исходные тексты ядра Linux.
Различные варианты Linux
В действительности имя Linux используется для большого семейства операционных систем с практически одинаковым ядром (kernel), но с различным составом прикладного программного обеспечения. Мы перечислим несколько наиболее популярных компаний, которые поставляют Linux.
RedHat (http://www.redhat.com/) - компания, которая поставляет один из распространенных вариантов Linux. ОС на основе варианта RedHat используется в ряде крупнейших в мире ядерно-физических исследовательских центров, например, в CERN (Conseil Europeen pour la Recherche Nucleaire, Швейцария) и в FNAL (Fermi National Accelerator Laboratory, США). В составе RedHat можно получить библиотеку Motif, клиентскую часть CDE, другие программные пакеты. RedHat Linux поддерживает различные аппаратные платформы: Intel, Alpha, Sparc. RedHat внедрила пакет RPM для распространения перекомпилированного программного обеспечения. RPM стал стандатом де-факто д
ля многих вариантов Linux.
Caldera (http://www.caldera.com/) поставляет систему OpenLinux,wabi в которую входят такие программы, как Wabi (позволяет запускать в Linux приложения для MS Windows 3.x), StarOffice (офисный пакет), ряд утилит для интеграции Linux с NetWare.
S.u.S.e. (http://www.suse.de/e/linux.html) - немецкая компания, которая поставляет Linux вместе с описаниями на нескольких языках (немецкий, английский, французский). В состав набора из 6 компакт-дисков входит довольно много программного обеспечения и разнообразной информации о Linux. В поставку входят СУБД ADABAS, офисный пакет Applixware, а также программа Wabi.
Slackware (http://www.slackware.com) - популярный вариант Linux, который поддерживается энтузиастом по имени Patrick Volkerding. Slackware Linux свободно доступен для копирования в Интернете.
Debian (http://www.debian.org/) - некоммерческий дистрибутив Linux, поддерживающий несколько различных аппаратных платформ и предлагающий большой выбор некоммерческого программного обеспечения.
UrbanSoft (http://www.usoft.spb.ru/) - российская компания, находящаяся в Санкт-Петербурге, которая поставляет Linux и другое открытое программное обеспечение.
Как показывает опыт, выбор варианта Linux должен определяться вашими рабочими контактами. Так, если все ваши коллеги используют, например, SuSe, то использовать без серьезных на то причин другой вариант неразумно. Если вы устанавливаете Linux дома, и у вас нет особых предпочтений, то можно поставить любой вариант. Драматических отличий вы не увидите.
На настоящий момент существует уже несколько десятков компаний (и постоянно появляются все новые), которые поставляют тот или иной вариант Linux. Читатель сможет сам в этом убедиться, если попробует разыскать список поставщиков Linux в Интернете.
Linux и информация о ней в World Wide Web
Замечание о WWW
В пространстве WWW имеется огромное количество информации обо всем, в том числе и о Linux. Однако пространство Web весьма переменчиво: то, что вчера было доступно, сегодня сменило адрес или вообще исчезло из поля зрения. Поэтому автору традиционной книги приходится указывать несколько адресов в Web, поскольку часть из них может попросту пропасть к моменту выхода книги: например, из-за смены системного администратора сервера или просто по недосмотру. Чем больше времени прошло с момента написания книги, тем менее вероятно, что вы что-то найдете по указанным адр
есам. Вероятно - это жизнь. Тем не менее попробуйте - говорят, что информацию невозможно уничтожить.
Несколько популярных сайтов, посвященных Linux
Операционная система Linux довольно богато представлена во Всемирной паутине. Только перечисление даже хорошо известных адресов заняло бы немало страниц. Здесь мы кратко охарактеризуем лишь несколько сайтов.
http://hepwww.ph.qmw.ac.uk/HEPpc/
Linux Resources for High Energy Physics (Ресурсы Linux для физики высоких энергий) - один из наиболее привлекательных адресов для студентов и исследователей, работающих в области физики высоких энергий. Но и любой "юниксоид" найдет на этих страницах полезную информацию.
http://www.linux.org/
Одна из наиболее известных страниц по всем вопросам, связанным с программным обеспечением для Linux.
http://sunsite.unc.edu/mdw/linux.html
Linux Documentation Project (LDP) - проект "Документация для Linux". На этой странице можно найти ссылки на всевозможные документы, описания и вообще любые тексты, имеющие отношения к Linux. Нетрудно догадаться, что подавляющее большинство документов - на английском языке или на похожем на него техническом жаргоне.
Полезная информация имеется также на Web-серверах компаний, которые продают Linux или программные продукты для Linux.
Еще один способ найти что-то конкретное о Linux - это использовать любую поисковую систему в Интернете, например, http://www.metacrawler.com/.
Например, если вас интересуют программное обеспечение для сетевых адаптеров и связанные с ним проблемы, в качестве ключей для поиска вводите "Linux network card". В ответ вы получите одну или несколько страниц, содержащих список адресов, по которым можно найти информацию о сетевых адаптерах под Linux. Воспользовавшись указанной поисковой машиной и введя упомянутые ключи для поиска, я получил список адресов на трех страницах.
Кроме Web-страниц, полезно пользоваться группами новостей по Linux, часть из которых перечислена во введении.
Описания компонентов Linux и родственная информация на русском языке
http://www.linux.org/books/basic.html
На этой странице можно найти ссылки на страницы руководства (man pages) по Unix (Linux), переведенные на русский язык. Многие из переводов выполнены Виктором Вислобоковым (victor_v@permonline.ru). На сентябрь 1998 года было переведено уже около 200 описаний команд.
http://xtalk.price.ru/linux/
Страница содержит разнообразную информацию о Linux и ссылки на русскоязычные сайты о Linux.
http://www.nevod.ru/linux/doc/
Тут вы найдете переводы различных пособий по программам для UNIX, таким как sed и awk. Кроме того, с этой страницы доступен перевод книги М. Уэлша "Инсталляция Linux и первые шаги" (M. Welsh "Linux Installation and Getting Started").
Библиотека Мошкова
Можно также заглянуть на страницу "Библиотека Мошкова" http://lib.ru, на которой, среди прочего, вы найдете и тексты, связанные с UNIX и Linux.
IRC и Linux
На странице http://koi.aha.ru/~agb/ указаны серверы, на которых вы можете найти IRC-канал \#ruslinux. На этом IRC-канале можно на русском языке поговорить о Linux. Среди этих серверов: irc.mo.net, irc.emory.edu, irc-w.primenet.com, irc-e.primenet.com, irc.sprynet.com).
Вы также можете попробовать найти русские ресурсы по Linux на перечисленных ниже страницах:
http://cclib.nsu.ru/projects/gnudocs/;
http://hh.demos.su/~slackl/;
http://knot.pu.ru/faq/xfaq.html;
http://m66.nevod.perm.su/service/linux/doc/;
http://nexus.odessa.ua/linux/;
http://win.www.netclub.ru/Russian/linux.html;
http://www.dkd.ot.lt/hompag/linux/default.htm;
http://www.linux.inf.ru;
http://www.uco.ru/~garris/;
http://www.usoft.spb.ru.
FTP-серверы с информацией о Linux
Вы также можете найти огромное количество документации и программ для Linux на FTP-серверах. Поиск по FTP-серверам можно произвести с помощью поисковой машины, например - http://ftpsearch.ntnu.no/. Если вы зададите в качестве ключа поиска слово "Linux", то полученный список FTP-серверов будет состоять из многих сотен строк. К счастью, есть возможность ограничивать количество найденных серверов. В качестве примера я также попробовал найти FTP-серверы по слову "Linux", ограничив их количество тридцатью. Результат приведен ниже.
Case insensitive substring search for linux --------------------------------------------------------
ftp.doc.ic.ac.uk /Mirrors/ftp.tex.ac.uk/tex-archive/tools/zip/info-zip/UNIX/LINUX
ftp.doc.ic.ac.uk /Mirrors/ftp.cdrom.com/pub/infozip/OLD/UNIX/LINUX
ftp.doc.ic.ac.uk /Mirrors/ftp.cdrom.com/pub/infozip/UNIX/LINUX
ftp.doc.ic.ac.uk /Mirrors/ftp.ncsa.uiuc.edu/HDF/contrib/LINUX
ftp.kreonet.re.kr /.3/CTAN/tools/zip/info-zip/UNIX/LINUX
ftp.kreonet.re.kr /.3/tools/compress/infozip/OLD/UNIX/LINUX
ftp.kreonet.re.kr /.3/tools/compress/infozip/UNIX/LINUX
ftp.kreonet.re.kr /.3/tools/compress/infozip-nonUS/UNIX/LINUX
ftp.kreonet.re.kr /.3/tools/compress/infozip-nonUS/OLD/UNIX/LINUX
ftp.in-chemnitz.de /afs/tex/tools/zip/info-zip/UNIX/LINUX
ftp.ncsa.uiuc.edu /HDF/contrib/LINUX
ftp.cis.nctu.edu.tw /Vendors/TekrAm/SCSI/LINUX
ftp.cs.columbia.edu /.archives/networking/uunet/archival/zip/UNIX/LINUX
ftp.univ-evry.fr /.01/archiving/infozip/UNIX/LINUX
ftp.univ-evry.fr /.01/archiving/infozip/OLD/UNIX/LINUX
ftp.chg.ru /.3/TeX/CTAN/tools/zip/info-zip/UNIX/LINUX
ftp.iij.ad.jp /TeX/CTAN/pub/tex-archive/tools/zip/info-zip/UNIX/LINUX
ftp.jaist.ac.jp /.cached2/lang/CTAN/tools/zip/info-zip/UNIX/LINUX
ftp.cdrom.com /.1/tex/ctan/tools/zip/info-zip/UNIX/LINUX
ftp.univ-evry.fr /.04/text/TeX/CTAN/tools/zip/info-zip/UNIX/LINUX
ftp.cv.nrao.edu /aips/15APR98/LINUX
ftp.cv.nrao.edu /aips/BIN/LINUX
ftp.cdrom.com /.12/infozip/UNIX/LINUX
ftp.cdrom.com /.12/infozip/OLD/UNIX/LINUX
ftp.doc.ic.ac.uk /Mirrors/quest.jpl.nasa.gov/pub/UNIX/LINUX
ftp.doc.ic.ac.uk /Mirrors/quest.jpl.nasa.gov/pub/LINUX
ftp.cv.nrao.edu /aips/DA00/LINUX
ftp.tekram.com /SCSI/LINUX
ftp.stalker.ru /Pub/HardSoft/SoftForHard/Net/SureCom/EP325/LINUX
ftp.vislist.com /SHAREWARE/ENVIRONMENTS/LINUX Next
--------------------------------------------------------
30 repored hits
0.014 seconds prospero
0.017 seconds HTTP
0 partial writes.
DONE
--------------------------------------------------------
Hardware by FAST ASA, ITEA and IDI. Network by UNINETT.
NTNU - Norwegian University of Science and Technology
This server runs FreeBSD and is located in Trondheim, Norway FAST FTP Search, Copyright (C) 1998 FAST ASA.
Рекомендуем также особое внимание обратить на сервер ftp://metalab.unc.edu - один из важнейших FTP-серверов, связанных с Linux.
Прикладные программные пакеты для Linux
Естественно, один из первых серверов, на которые следует заглянуть при поиске необходимых пакетов - это www-сервер проекта GNU http://www/gnu.org. Как известно, GNU is not Unix (то есть GNU - это не Unix). Эта шутливая рекурсия - расшифровка аббревиатуры GNU. Проект GNU посвящен созданию свободно распространяемого программного обеспечения. Более подробные сведения о проекте и его продуктах можно найти на сервере GNU и на многих других серверах по всему миру.
Одним из полезных мест в WWW-пространстве является Scientific Applications on Linux (SAL) - коллекция научных прикладных программ http://SAL.KachinaTech.COM/index.shtml. Термин "научные программы" не означает "неприменимые в обычной жизни". Просто это один из больших списков полезных программных продуктов, работающих под Linux, которые подходят и для научных исследований. Эти программы имеются на многих серверах в Интернете. Вы можете обратиться на ближайший к вам сервер из нижеприведенного списка:
Australia http://sal.rising.com.au/;
Austria http://nswt.tuwien.ac.at/scicomp/sal/;
Colombia http://linuxsite.univalle.edu.co/sal/;
Finland http://sal.jyu.fi/;
France http://www-sor.inria.fr/mirrors/sal/;
Germany http://ftp.llp.fu-berlin.de/lsoft/;
Italy http://chpc06.ch.unito.it/linux/;
Japan http://ec.tmit.ac.jp/koyama/linux/sal/;
New Zealand http://nix.tmk.auckland.ac.nz/sal/;
Poland http://www.tuniv.szczecin.pl/linux/doc/other/sal/;
Portugal http://www.idite-minho.pt/sal/;
Russia (Moscow) http://www.sai.msu.su/sal/;
Russia (Novosibirsk) http://www.siblug.org/sal/;
South Africa http://web.ee.up.ac.za/sal/;
South Korea http://bioinfo.bioneer.com/sal;
Spain http://ceu.fi.udc.es/sal/;
Turkey http://sal.raksnet.com.tr/;
United Kingdom http://www.ch.qub.ac.uk/sal/;
USA http://SAL.KachinaTech.com/.
Другие интересные прикладные пакеты появляются на странице http://www.redhat.com/linux-info/linux-app-list/linapps.html, которую поддерживает компания RedHat. Также обратите внимание на страницу с анонсами нового программного обеспечения для Linux - http://freshmeat.net.
Для каких аппаратных платформ доступна Linux
Ответ на этот вопрос очень прост - для всех широко известных и еще для нескольких, которые известны лишь узкому кругу специалистов. Тем не менее, автор хотел бы указать несколько конкретных источников по Linux для ряда не-Intel платформ.
Информацию о Linux на платформе PowerPC можно найти на страницах http://www.linuxppc.org/ и http://www.yellowdoglinux.com. Информация о Linux/m68k на платформах Motorola 68020, 68030, 68040, 68060 и близких к ним может быть почерпнута по адресу http://www.linux-m68k.org/. FAQ (список часто задаваемых вопросов и ответов на них) на эту же тему находится по адресу http://www.linux-m68k.org/faq/faq.html.
Довольно богато представлена информация по Linux на процессорах Alpha (Digital) в группе новостей news:comp. os.linux.alpha. Информация о переносе Linux на платформу 64-bit DEC Alpha/AXP имеется на http://www.azstarnet.com/~axplinux/. За информацией о платформе MIPS можно обратиться на серверы ftp://ftp.fnet.fr/linux-mips и ftp://ftp.linux. sgi.com/pub/mips-linux. Информация о Linux на платформе Sun Sparc имеется во многих местах, например, можно посмотреть сервер компании RedHat http://www.redhat.com. Имеются архивы по Sun Linux - на странице http://www. geog.ubc.ca/sparclinux.html, а также на FTP-сервере ftp://vger.rutgers.edu/pub/linux/Sparc.
Для обсуждения конкретных деталей переноса Linux можно пользоваться списком рассылки по ядру Linux, который поддерживается на узле vger.rutgers.edu. Довольно полный список платформ, на которые перенесена Linux, а также список различных вариантов Linux приведен на странице http://www.linuxhq.com/dist-index.html, а также на странице http://www.ctv.es/USERS/xose/linux/linux\_ports.html.
Kниги по Linux
Что касается литературы по Linux, то существует множество книг по этой теме - самого разного назначения. Например, если взглянуть на страницу http://www.linux.org/books/basic.html, то можно найти список, состоящий из кратких аннотаций.
Далее на странице приведен список из 30 или 40 названий книг разных издательств, направлений и объема - от 160 до 1600 страниц. Цена может варьироваться от $19 до $70.
Таким образом, есть из чего выбирать. Кроме книг, имеется ряд газет и журналов, посвященных разным аспектам применения Linux. Объем печатной продукции по Linux на английском языке таков, что обычный человек не сможет прочесть все это даже за целую жизнь. Этот факт лишний раз подчеркивает популярность операционной системы Linux.
Kниги по Linux на русском языке
На серверах различных российских издательств нетрудно отыскать несколько книг по Linux. Однако большинство этих книг - переводы соответствующих англоязычных оригиналов.
Поскольку Linux - один из вариантов UNIX, то возникает естественный вопрос, а можно ли использовать книги по UNIX на русском языке для обучения работе с Linux? Во многих случаях можно. Если вы начали пользоваться системой недавно, то на уровне пользовательского интерфейса у них есть много общего, и вы не допустите серьезных ошибок. Что касается пакетов, разработанных GNU, то они просто одинаковы во всех вариантах операционных систем и отличия определяются лишь версией самого пакета.
Другие источники информации о Linux
Существует отличный комплект англоязычных документов по Linux, так называемых "HOWTO" ("как сделать что-либо"), например, "как настроить принтер". В этих документах можно найти ответы на большинство практических вопросов. Получить вы их можете на многих серверах, например, http://sunsite.unc.edu/pub/Linux/docs/HOWTO/.
Кроме того, имеется несколько групп новостей, посвященных различным аспектам Linux. Если вы планируете работать в Linux, то вам необходимо знакомиться с новостями группы comp.os.linux.announce. Тут вы найдете информацию о появлении и обновлении программного обеспечения для этой ОС. Сообщения в эту группу должны направляться по адресу: linux-announce@news.ornl.gov. Другие полезные группы перечислены ниже:
comp.os.linux.setup;
comp.os.linux.hardware;
comp.os.linux.networking;
comp.os.linux.x;
comp.os.linux.development.apps;
comp.os.linux.development.system;
comp.os.linux.advocacy comp.os.linux.misc.
Информационные команды системы
Найти какую-либо информацию, имея под руками систему с установленной Linux, можно несколькими различными способами. Рассмотрим наиболее важные.
Команда uname
Команда uname поможет вам узнать, какой вариант Linux установлен на вашей машине:
uname -a
В ответ система напечатает что-то в духе:
Linux pcfarm.pnpi.spb.ru 2.0.33 \#18 Thu Jun 4 11:54:03 MSD 1998 i686 unknown
Это означает: операционная система - Linux, имя машины в сети - pcfarm.pnpi.spb.ru, версия ядра операционной системы - 2.0.33, версия обновления ядра и дата создания ядра системы - \#18 Thu Jun 4 11:54:03 MSD 1998, тип машины - i686, тип процессора - unknown.
Как прошла загрузка системы
Сообщения, выведенные ядром системы при загрузке, могут быть получены при помощи команды dmesg.
Программа procinfo
С помощью программы procinfo можно получить массу полезной информации (как статической, так и динамической) о работающей системе. Какую именно информацию выводит procinfo, можно узнать с помощью команды:
procinfo -h
Команда man
Чтобы получить краткое описание какой-то команды или термина в системе, можно использовать команду man. Если вас интересует информация о термине modem, то можно использовать команду
man -k modem
Параметр -k обозначает, что далее следует ключевое слово, по которому должен производиться поиск. После выполнения указанной команды на экран будет выведен список команд и функций, которые как-то связаны с заданным ключевым словом. Так, в RedHat Linux вы можете увидеть следующее:
efax (1) - send/receive faxes using
Class 1 or 2 fax modems
mgetty (8) - smart modem getty
rx, rb, rz (1) - XMODEM, YMODEM, ZMODEM (Batch) file
receive
sendfax (8) - send group 3 fax files (G3 files)
with a class 2 faxmodem
statserial (1) - display serial port modem status lines
sx, sb, sz (1) - XMODEM, YMODEM, ZMODEM file send
zplay (1) - modem utility to record and play
voice files
XF86VidModeQueryExtension, XF86VidModeQueryVersion, XF86VidModeGetModeLine, XF86VidModeGetAllModeLines, XF86VidModeD eleteModeLine, XF86VidModeModModeLine, XF86VidModeValidateModeLine, XF86VidModeSwitchMode, XF86VidModeSwitchToMode, XF86VidModeLockModeSwitch, XF86VidModeGetMonitor, XF86VidModeGetViewPort, XF86VidModeSetViewPort (3) - XFree86-VidMode
extension interface functions
Далее вы сможете снова воспользоваться командой man, чтобы просмотреть справочные страницы, соответствующие элементам полученного списка.
Вариант программы man для работы в среде X Window называется xman.
Команда info
Очень удобна также команда info. Она имеет формат info раздел. Если раздел не указан, выводится страница, содержащая список всей установленной в системе документации в формате info. Одной из важных программ, к которой поставляется документация в виде info-файлов, является компилятор языка C gcc (попробуйте набрать команду info gcc).
Команда apropos
Команда apropos также помогает найти информацию среди man-страниц (страницы руководства, от слова "manual"), имеющихся на вашей машине. Если вы попробуете дать команду
apropos modem
то заметите, что она выдаст примерно то же, что и команда man -k.
Команда helptool
По команде helptool появляется графическое окно, в котором вы сможете задать интересующий вас термин. Команда просматривает все файлы документов (вы можете сконфигурировать, какие документы следует просматривать при поиске). По завершении поиска вам будет выдан список файлов, где встречается данный термин. Если щелкнуть мышкой на элементе списка, то появится дополнительное окно, в котором будет отображаться выбранный вами файл. При этом файл будет отображаться в том формате, в каком он хранится на вашей машине: страницы info, страницы man и т. п.
Команда locate
Наконец, может оказаться полезной программа locate. Например, для того чтобы найти файлы, название которых содержит слово modem, используйте следующую команду:
locate modem
Вы увидите на экране примерно следующее:
/usr/bin/modemtool
/usr/doc/util-linux-2.7/README.modems-with-agetty
/usr/farm/gcc-2.7.2.3/modemap.def
/usr/lib/rhs/control-panel/modemtool.init
/usr/lib/rhs/control-panel/modemtool.xpm
/usr/lib/rhs/control-panel/python/modem.py
/usr/lib/rhs/control-panel/python/modem.pyc
/usr/share/usernet/1.0.5/modem.xpm
Команда rpm
Программа rpm используется в большинстве вариантов Linux для установки, удаления, модернизации других программных продуктов. В каждой системе rpm ведет базу данных, содержащую информацию об установленных программных пакетах. Программа rpm довольно обширна по своим возможностям, и мы отметим лишь несколько ее свойств, которые помогут понять, какое же программное обеспечение установлено на вашей машине.
Команда получения информации о программных пакетах имеет вид:
rpm -q параметры
Имеется два подмножества параметров команды rpm для получения информации: про какой пакет(ы) (табл. 1.1) и какого типа информация будет напечатана (табл. 1.2). Например, для того чтобы получить весь список установленных программных пакетов на вашей машине, можно использовать:
rpm -q -a
Таким образом, если вас интересует, установлен ли какой-то вариант пакета LaTeX на машине, введите:
rpm -q -a | grep -i latex
И вот что вы можете увидеть в результате:
tetex-latex-0.4pl8-9
А таким образом
rpm -q -i tetex-latex-0.4pl8-9
можно получить более подробное описание пакета:
Name : tetex-latex
Distribution : Hurricane
Version : 0.4pl8
Vendor : Red Hat Software
Release : 9
Build Date : Wed Oct 22 23:36:05 1997
Install date : Fri Jan 16 17:01:13 1998
Build Host : porky.redhat.com
Group : Applications/Publishing/TeX
Source RPM : tetex-0.4pl8-9.src.rpm
Size : 9911252
Packager : Red Hat Software bugs@redhat.com
URL : http://www.tug.org/teTeX/
Summary : LaTeX macro package
Description : LaTeX is a TeX macro package. The LaTeX macros encourage writers to think about the content of their documents, rather than the form. The ideal, very difficult to realize, is to have no formatting commands (like "switch to italic" or "skip 2 picas") in the document at all; instead, everything is done by specific markup instructions: "emphasize", "start a section".
Таблица 1.1. Параметры команды rpm, определяющие, о каких пакетах приводится информация
Параметр Описание
-whatrequires service Показать список пакетов, которые требуют service
-whatprovides virtual Показать список пакетов, которые обеспечивают службу virtual
-f file Показать пакет, которому принадлежит файл с именем file
-p file Показать пакет, которому принадлежит файл с именем file, даже если пакет был удален
Таблица 1.2. Параметры команды rpm, отвечающие за тип предоставляемой информации
Параметр Назначение
-i пакет Печатает информацию о пакете
-changelog пакет Печатает информацию об изменениях в программном пакете
-l пакет Печатает список файлов пакета
-s пакет Печатает список файлов пакета вместе с информацией о статусе каждого файла
-d пакет Печатает список файлов документов указанного пакета
-c пакет Печатает список конфигурационных файлов пакета
-dump Печатает всю проверяемую информацию для каждого файла; должна использоваться с параметрами -c, -d, -s, -l
-provides пакет Печатает свойства, которые обеспечивает данный пакет
-requires пакет Печатает список файлов и каталогов, которые необходимы для установки данного пакета
-R пакет То же самое, что -requires
-scripts пакет Печатает сценарии, которые используются для установки или удаления данного пакета
Примеры получения информации из базы rpm
Поиск пакета, содержащего файл
$ rpm -q -f /usr/share/texmf/tex/latex/misc/umlaute.sty
tetex-latex-0.9-17
На вопрос, в какой пакет входит файл ../umlaute.sty, rpm ответила, что данный файл входит в пакет tetex-latex-0.9-17.
Поиск пакетов, зависящих от данной программы
По команде
$ rpm -q -whatrequires tetex
на экран выводится список установленных пакетов, зависящих от наличия в системе программы tetex:
OB_Java-1.0-1
PSCyr-0.3-3
tetex-afm-0.9-17
tetex-dvilj-0.9-17
tetex-dvips-0.9-17
tetex-latex-0.9-17
tetex-russian-cyrplain-2.1-4
tetex-russian-cyrsam-2.1-4
tetex-t2-2.1-4 (определение зависимостей)
Вы также можете определить, от наличия каких файлов и каталогов зависит данный пакет. Пример определения зависимостей пакета a2ps приведен ниже.
$ rpm -q -requires a2ps
/sbin/install-info
/bin/sh /sbin/ldconfig
ld-linux.so.2
libc.so.6
libm.so.6
/bin/sh /usr/bin/perl
libm.so.6(GLIBC_2.1)
libc.so.6(GLIBC_2.1)
libc.so.6 (GLIBC_2.0, информация из файловой системы /proc)
Файловая система /proc является псевдофайловой системой, и когда вы попробуете заглянуть в нее - будут вызваны соответствующие программы, чтобы отобразить для вас полезную информацию о ядре Linux. Обычно любая информация в /proc отображается командой cat. Здесь мы кратко охарактеризуем различные элементы каталога /proc.
Если выполнить команду ls /proc, то вы увидите систему файлов и подкаталогов внутри этого каталога. Часть элементов имеют имена в виде целых чисел, другая часть имеет имена типа bus, cmdline, cpuinfo и т. д. Вначале рассмотрим числовые имена. Каждое числовое имя в каталоге /proc обозначает псевдо-каталог, который содержит ряд файлов и подкаталогов, содержащих информацию о процессе с таким номером. Например, если существует процесс с номером 18919, команда ls /proc/18919 выведет на экран примерно следующий список файлов:
cmdline cpu cwd environ exe fd
maps mem root stat statm status
Эти файлы содержат информацию о состоянии конкретного процесса. Содержание этих файлов описано в таблице 1.3. Почти каждый файл из файловой системы proc может быть просмотрен посредством команды cat. Например, если вы хотите получить информацию о процессоре, то можно использовать команду
cat /proc/cpuinfo
Таблица 1.3. Описание файлов и подкаталогов в каталоге /proc/n, где n - номер процесса
Имя файла Содержание
cmdline Последняя полная командная строка, если только процесс не свопирован на диск или если процесс является зомби
cwd Ссылка к рабочему каталогу процесса
cpu Информация о том, сколько процесс потребил времени и на каком процессоре
environ Значения переменных окружения
exe Ссылка к двоичному коду исполнямой процессом программы
fd Псевдокаталог, который содержит файлы с целочисленными именами: 0, 1, 2 и т. д.). Сами файлы из каталога /proc/n/fd являются ссылками к реальным файлам, открытым процессом с номером n. Как обычно, файл /proc/n/fd/0 есть стандартный ввод, /proc/n/fd/1 - стандартный вывод, /proc/n/fd/2 - вывод сообщений об ошибках и т. д.
maps Распределение областей памяти процесса и доступ к отдельным фрагментам памяти процесса
mem Карта оперативной памяти до выполнения трансляции адресов
root Ссылка на корень файловой системы, то есть /
stat Информация о состоянии процесса. Отсюда берет информацию команда Linux ps
status Дополнительная информация о процессе
Теперь рассмотрим нечисловые имена; они сведены в таблице 1.4.
Таблица 1.4. Нечисловые имена и содержание файлов и подкаталогов в каталоге /proc
Имя файла Содержание
cpuinfo Данные, отражающие архитектуру системы и тип процессора. Формат данных может быть отличен для разных архитектур. Всегда присутствуют два элемента: тип процессора и величина BogoMIPS;, которая вычисляется во время инициализации ядра системы. Эта величина иногда близка к тактовой частоте процессора. Однако частоту следует смотреть в строке cpu MHz
devices Текстовый список, который содержит перечисление основных номеров и групп периферийных устройств
dma Список имеющихся каналов DMA
filesystems Перечисление типов файловых систем, которые были включены в ядро системы во время компиляции ядра
interrupts Количество прерываний на каждом уровне прерываний IRQ
ioports Список зарегистрированных используемых портов ввода/вывода
kcore Физическая память системы в формате core
kmsg Cодержание этого файла может быть использовано вместо утилиты syslog (только для пользователя root)
ksyms Ссылки в ядре системы, использующиеся для определения внешних программных модулей, которые загружаются динамически по мере необходимости. Можно смотреть man depmod, man modprobe
loadavg Информация в следующем формате: n.nn m.mm k.kk l/ppp gggg, где n.nn m.mm k.kk - есть средние величины загрузки процессора за последнюю минуту, за последние пять минут и за последние 15 минут. Значение загрузки определяется как среднее количество исполняемых процессов; l/ppp означает, что l процессов из общего числа ppp процессов в машине находятся в состоянии выполнения (в состоянии R)
malloc Специальный файл, который присутствует, если только во время компиляции ядра был указан параметр CONFIGDEBUGMALLOC
meminfo Информация об использовании физической оперативной памяти, своп памяти, разделяемой памяти и буферах
modules Список системных программных модулей, которые загружены системой в данный момент
net Псевдокаталог, который содержит различные псевдофайлы, содержащие информацию, отражающую текущее состояние разных слоев сетевого протокола. Здесь в более детальном виде содержится информация, которую выдает утилита netstat. Смотрите также man proc
pci Список всех устройств PCI, имеющихся на данной машине
scsi Псевдокаталог, содержащий информацию об устройствах на шинах SCSI
self Псевдокаталог, содержащий информацию о процессе, который читает каталог /proc
stat Псевдокаталог, содержащий информацию о системе (сколько процессор был занят, сколько простаивал, сколько страниц было считано с диска и сколько записано и т. д.)
sys Псевдокаталог, содержащий массу информации о системе. Среди важных файлов этого каталога можно отметить /proc/sys/fs/file-max - максимальное число открытых файлов в системе (пользователь root может изменить это число)
swaps Сведения о swap-файле, которым пользуется система
tty Псевдокаталог, который содержит информацию о терминальных устройствах системы
uptime Два числа: время в секундах с момента загрузки и время в секундах, когда процессор простаивал
version Строка, которая отражает текущую версию ядра системы, например, команда cat /proc/version может дать примерно следующее: Linux version 2.2.12-20smp(root@porky.devel. redhat.com) (gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)) #1 SMP Mon Sep 27 10:34:45 EDT 1999
На каком языке говорит Linux
В этом разделе мы поговорим о локализации. Локализацией называется приспособление программы или операционной системы к кодировке и стилям печати времени, даты, денежных единиц, принятых в данной стране. Стандарт описан, например, в документах POSIX 1.c. Здесь мы отметим важные особенности локализации Linux.
Многие системные программы в Linux (быть может - большинство) для определения вида кодировки и языка сообщений используют значения специальных переменных окружения (табл. 1.5).
Таблица 1.5. Переменные окружения, используемые при локализации
Имя переменной Описание
LC_ALL Определяет все сразу: язык сообщений, кодировку, вид даты и т. д. Причем, если эта переменная установлена, то остальные переменные вида LC_* не имеют силы. Однако непосредственная установка этой переменной является плохой идеей - лучше использовать переменную LANG
LANGUAGE Эта переменная используется в основном программами из проекта GNU
LC_CTYPE Определяет кодировку символов
LC_COLLATE Определение алгоритма сортировки
LC_MONETARY Определение вида денежной единицы
LC_NUMERIC Определение национального формата печати чисел (например, она указывает, использовать точку или запятую для отделения целой и дробной части числа)
LC_TIME Определение формата даты и времени
LANG Эта переменная окружения используется для определения всего того, что не установлено ранее переменными вида LC_*. В принципе, из всех перечисленных выше переменных - это единственная переменная, значение которой вам следует установить (если, конечно, вы не знаете наверняка, что вам нужно поменять еще что-либо)
Чтобы увидеть, какие переменные из вышеописанных и как установлены, можно использовать программу locale.
[shevel@pcfarm BOOK]$ locale
LANG=ru_RU.KOI8-R
LC_CTYPE="ru_RU.KOI8-R"
LC_NUMERIC="ru_RU.KOI8-R"
LC_TIME="ru_RU.KOI8-R"
LC_COLLATE="ru_RU.KOI8-R"
LC_MONETARY="ru_RU.KOI8-R"
LC_MESSAGES="ru_RU.KOI8-R"
LC_ALL=
Чтобы узнать, какие имеются варианты локализации на вашей машине, просмотрите список подкаталогов в каталоге /usr/share/locale/, либо воспользуйтесь командой locale -a.
Общий вид строк, которые присваиваются переменным окружения, должен иметь вид язык\_территория.кодировка.
Следует заметить, что часто одни и те же кодировки называются чуть по-разному. Например, автору приходилось видеть следующие обозначения: koi8, koi8r, koi8-r и KOI8-R. Хотя последний вид обозначения встречается нечасто, он соответствует стандарту.
Полезные сведения о локализации можно почерпнуть в man-странице locale(1). (Для ее вывода используйте команду man locale).
Linux. Обработка текстов. Специальный справочник. / А. Шевель - СПб: Питер, 2001. - 384 с.
|