initialize_Cards ()
IBM Thinkpad, model 760XL laptop (P166, 104 Mb RAM) под управлением Red Hat 7.1/7.3. Несомненно, это довольно медлительный агрегат, но он имеет отличную клавиатуру, и это много лучше, чем пара карандашей и письменный стол.
35.3.2. Программное обеспечение
Мощный текстовый редактор vim (автор: Bram Moolenaar) .
OpenJade -- инструмент, выполняющий, на основе DSSSL, верификацию и преобразование SGML-документов в другие форматы.
Таблицы стилей DSSSL от Norman Walsh.
DocBook, The Definitive Guide (Norman Walsh, Leonard Muellner O\'Reilly, ISBN 1-56592-580-7). Полное руководство по созданию документов в формате Docbook SGML.
35.4. Благодарности
Без участия сообщества этот проект был бы невозможен. Автор признает, что без посторонней помощи, написание этой книги стало бы невыполнимой задачей и благодарит всех, кто оказал посильную помощь.
Philippe Martin -- перевел этот документ в формат DocBook/SGML. Работает в маленькой французской компании, в качестве разработчика программного обеспечения. В свободное от работы время -- любит работать над документацией или программным обеспечением для GNU/Linux, читать книги, слушать музыку и веселиться с друзьями. Вы можете столкнуться с ним, где-нибудь во Франции, в провинции Басков, или написать ему письмо на feloy@free.fr.
Philippe Martin также отметил, что возможно использование позиционных параметров за $9, при использовании {фигурных скобок}, см. Пример 4-5.
Stephane Chazelas -- выполнил титаническую работу по корректировке, дополнению и написанию примеров сценариев. Фактически, он взвалил на свои плечи обязанности редактора этого документа. Огромное спасибо!
Особенно я хотел бы поблагодарить Patrick Callahan, Mike Novak и Pal Domokos за исправление ошибок и неточностей, за разъяснения и дополнения. Их живое обсуждение проблем, связанных с созданием сценариев на языке командной оболочки вдохновило меня на попытку сделать этот документ более удобочитаемым.
Я благодарен Jim Van Zandt за выявленные им ошибки и упущения, в версии 0.2 этого документа, и за поучительный пример сценария.
Большое спасибо Jordi Sanfeliu за то, что он дал возможность использовать его прекрасный сценарий в этой книге (Пример A-19).
Выражаю свою благодарность Michel Charpentier за разрешение использовать его dc сценарий разложения на простые множители (Пример 12-37).
Спасибо Noah Friedman, предоставившему право использовать его сценарий (Пример A-20).
Emmanuel Rouat предложил несколько изменений и дополнений в разделах, посвященных подстановке команд и псевдонимам. Он так же предоставил замечательный пример файла .bashrc (Приложение G).
Heiner Steven любезно разрешил опубликовать его сценарий Пример 12-33. Он сделал множество исправлений и внес большое количество предложений. Особое спасибо!
Rick Boivie предоставил отличный сценарий, демонстрирующий рекурсию, pb.sh (Пример 33-7) и внес предложения по повышению производительности сценария monthlypmt.sh (Пример 12-32).
Florian Wisser оказывал содействие при написании разделов, посвященных строкам (см. Пример 7-6).
Oleg Philon передал свои предложения относительно команд cut и pidof.
Michael Zick расширил пример с пустыми массивами, введя туда демонстрацию необычных свойств массивов. Он также предоставил ряд других примеров.
Marc-Jano Knopp выполнил исправления в разделе, посвященном пакетным файлам DOS.
Hyun Jin Cha, в процессе работы над корейским переводом, обнаружил несколько опечаток в документе. Спасибо ему за это!
Andreas Abraham передал большое число типографских ошибок и внес ряд исправлений. Особое спасибо!
Кроме того, я хотел бы выразить свою признательность Gabor Kiss, Leopold Toetsch, Peter Tillier, Marcus Berglof, Tony Richardson, Nick Drage, Rich Bartell, Jess Thrysoee, Adam Lazur, Bram Moolenaar, Baris Cicek, Greg Keraunen, Keith Matthews, Sandro Magi, Albert Reiner, Dim Segebart, Rory Winston, Lee Bigelow, Wayne Pollock, \"jipe\", Emilio Conti, Dennis Leeuw, Dan Jacobson и David Lawyer (автор 4-х HOWTO).
Мои благодарности Chet Ramey и Brian Fox за создание Bash -- этого элегантного и мощного инструмента!
Особое спасибо добровольцам из Linux Documentation Project. Проект LDP сделал возможным публикацию этой книги в своем архиве.
Больше всего я хотел бы выразить свою благодарность моей супруге, Anita, за ее эмоциональную поддержку.
Литература
Edited by Peter Denning, Computers Under Attack: Intruders, Worms, and Viruses, ACM Press, 1990, 0-201-53067-8.
Содержит несколько статей о вирусах, написаных на языке командной оболочки.
*
Dale Dougherty and Arnold Robbins, Sed and Awk, 2nd edition, O\'Reilly and Associates, 1997, 1-156592-225-5.
Чтобы раскрыть всю мощь командной оболочки, вам наверняка потребуется знакомство с sed и awk. Это обычный учебник. Здесь вы найдете превосходное введение в \"регулярные выражения\". Обязательно прочитайте эту книгу.
*
Aeleen Frisch, Essential System Administration, 3rd edition, O\'Reilly and Associates, 2002, 0-596-00343-9.
Это замечательное руководство для системных администраторов. Может служить неплохим введением в программирование сценариев. Содержит подробные пояснения к сценариям загрузки и инициализации системы.
*
Stephen Kochan and Patrick Woods, Unix Shell Programming, Hayden, 1990, 067248448X.
Стандартный справочник, хотя немного устаревший.
*
Neil Matthew and Richard Stones, Beginning Linux Programming, Wrox Press, 1996, 1874416680.
Дает хороший, глубокий охват различных языков программирования, доступных в Linux, включая довольно сильную главу по программированию в командной оболочке.
*
Herbert Mayer, Advanced C Programming on the IBM PC, Windcrest Books, 1989, 0830693637.
Замечательная книга по алгоритмам и практическому программированию.
*
David Medinets, Unix Shell Programming Tools, McGraw-Hill, 1999, 0070397333.
Отличная книга по программированию в командной оболочке, с примерами, и кратким введением в Tcl и Perl.
*
Cameron Newham and Bill Rosenblatt, Learning the Bash Shell, 2nd edition, O\'Reilly and Associates, 1998, 1-56592-347-2.
Это отважная попытка создать учебник для начинающих, но он получился несколько несовершенным, к тому же не изобилует примерами сценариев.
*
Anatole Olczak, Bourne Shell Quick Reference Guide, ASP, Inc., 1991, 093573922X.
Очень удобный карманный справочник, несмотря на недостатки, при охвате специфичных свойств Bash.
*
Jerry Peek, Tim O\'Reilly, and Mike Loukides, Unix Power Tools, 2nd edition, O\'Reilly and Associates, Random House, 1997, 1-56592-260-3.
Содержит ряд очень информативных разделов, посвященных программированию в командной оболочке, но не может рассматриваться как учебное пособие.
*
Clifford Pickover, Computers, Pattern, Chaos, and Beauty, St. Martin\'s Press, 1990, 0-312-04123-3.
Сокровищница идей и рецептов по машинным вычислениям.
*
George Polya, How To Solve It, Princeton University Press, 1973, 0-691-02356-5.
Классический учебник по методам решения задач.
*
Arnold Robbins, Bash Reference Card, SSC, 1998, 1-58731-010-5.
Замечательный карманный справочник по Bash. Стоит всего $4.95, но также доступен для свободного скачивания on-line в формате PDF.
*
Arnold Robbins, Effective Awk Programming, Free Software Foundation / O\'Reilly and Associates, 2000, 1-882114-26-4.
Самое лучшее учебное руководство и справочник по awk. Свободная электронная версия книги включена в состав документации к awk. Печатное издание последней версии доступно на сайте O\'Reilly and Associates.
Эта книга служила источником вдохновения для автора этой книги.
*
Bill Rosenblatt, Learning the Korn Shell, O\'Reilly and Associates, 1993, 1-56592-054-6.
Эта, хорошо написанная книга, содержит массу указаний по созданию сценариев командной оболочки.
*
Paul Sheer, LINUX: Rute User\'s Tutorial and Exposition, 1st edition, , 2002, 0-13-033351-4.
Очень хорошее введение в системное администрирование Linux.
Эта книга доступна в on-line.
*
Ellen Siever and the staff of O\'Reilly and Associates, Linux in a Nutshell, 2nd edition, O\'Reilly and Associates, 1999, 1-56592-585-8.
Один из лучших справочников по командам Linux, имеет раздел, посвященный Bash.
*
The UNIX CD Bookshelf, 3rd edition, O\'Reilly and Associates, 2003, 0-596-00392-7.
Сборник из 7-ми книг по UNIX на CD ROM. В состав сборника входят такие книги, как UNIX Power Tools, Sed and Awk и Learning the Korn Shell. Полный набор необходимых справочных и учебных материалов, который вам только может понадобиться. Стоит примерно $130.
*
Книги издательства O\'Reilly, посвященные Perl.
---
Ben Okopnik опубликовал серию отличных статей introductory Bash scripting в выпусках 53, 54, 55, 57 и 59 на сайте Linux Gazette , и статью \"The Deep, Dark Secrets of Bash\" в выпуске 56.
Chet Ramey bash - The GNU Shell -- серия статей в 3 и 4 выпусках Linux Journal, Июль-Август 1994.
Mike G Bash-Programming-Intro HOWTO.
Richard UNIX Scripting Universe.
Chet Ramey Bash F.A.Q.
Ed Schaefer Shell Corner на Unix Review.
Примеры сценариев: Lucc\'s Shell Scripts .
Примеры сценариев: SHELLdorado .
Примеры сценариев: Noah Friedman\'s script site.
Steve Parker Shell Programming Stuff.
Примеры сценариев: SourceForge Snippet Library - shell scripts.
Giles Orr Bash-Prompt HOWTO.
Замечательное руководство по регулярным выражениям, sed и awk The UNIX Grymoire.
Eric Pement sed resources page.
The GNU gawk reference manual (gawk -- GNU-версия awk для ОС Linux и BSD).
Trent Fisher groff tutorial.
Mark Komarinski Printing-Usage HOWTO.
Хороший материал по перенаправлению ввода/вывода глава 10 на сайте University of Alberta.
Rick Hohensee osimpa -- ассемблер для процессора i386, написан полностью на Bash.
Rocky Bernstein ведет разработку \"полнофункционального\" отладчика для Bash.
---
Отличное руководство \"Bash Reference Manual\", авторы Chet Ramey и Brian Fox, распространяется в составе пакета \"bash-2-doc\" (доступен как rpm). В этом пакете вы найдете особенно поучительные примеры.
Группа новостей comp.os.unix.shell.
Страницы руководства man по bash и bash2, date, expect, expr, find, grep, gzip, ln, patch, tar, tr, bc, xargs. Странички info по bash, dd, m4, gawk и sed.
Приложение A. Дополнительные примеры сценариев
В этом приложении собраны сценарии, которые не попали в основной текст документа. Однако, они определенно стоят того, что бы вы потратили время на их изучение.
Пример A-1. manview: Просмотр страниц руководств man
#!/bin/bash
# manview.sh: Просмотр страниц руководств man в форматированном виде.
# Полезен писателям страниц руководств, позволяет просмотреть страницы в исходном коде
#+ как они будут выглядеть в конечном виде.
E_WRONGARGS=65
if [ -z \"$1\" ]
then
echo \"Порядок использования: `basename $0` имя_файла\"
exit $E_WRONGARGS
fi
groff -Tascii -man $1 | less
# Если страница руководства включает в себя таблицы и/или выражения,
# то этот сценарий \"стошнит\".
# Для таких случаев можно использовать следующую строку.
#
# gtbl < \"$1\" | geqn -Tlatin1 | groff -Tlatin1 -mtty-char -man
#
# Спасибо S.C.
exit 0
Пример A-2. mailformat: Форматирование электронных писем
#!/bin/bash
# mail-format.sh: Форматирование электронных писем.
# Удаляет символы \"^\", табуляции и ограничивает чрезмерно длинные строки.
# =================================================================
# Стандартная проверка аргументов
ARGS=1
E_BADARGS=65
E_NOFILE=66
if [ $# -ne $ARGS ] # Проверка числа аргументов
then
echo \"Порядок использования: `basename $0` имя_файла\"
exit $E_BADARGS
fi
if [ -f \"$1\" ] # Проверка наличия файла.
then
file_name=$1