KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Программирование » Мендель Купер - Искусство программирования на языке сценариев командной оболочки

Мендель Купер - Искусство программирования на языке сценариев командной оболочки

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Мендель Купер, "Искусство программирования на языке сценариев командной оболочки" бесплатно, без регистрации.
Перейти на страницу:

*

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

else

echo "Файл "$1" не найден."

exit $E_NOFILE

fi

# =================================================================


MAXWIDTH=70 # Максимальная длина строки.


# Удаление символов "^" начиная с первого символа строки,

#+ и ограничить длину строки 70-ю символами.

sed '

s/^>//

s/^ *>//

s/^ *//

s/ *//

' $1 | fold -s --width=$MAXWIDTH

# ключ -s команды "fold" разрывает, если это возможно, строку по пробельному символу.


# Этот сценарий был написан после прочтения статьи, в котором расхваливалась

#+ утилита под Windows, размером в 164K, с подобной функциональностью.

#

# Хороший набор утилит для обработки текста и эффективный

#+ скриптовый язык -- это все, что необходимо, чтобы составить серьезную конкуренцию

#+ чрезмерно "раздутым" программам.


exit 0

Пример A-3. rn: Очень простая утилита для переименования файлов

Этот сценарий является модификацией Пример 12-15.

#! /bin/bash

#

# Очень простая утилита для переименования файлов

#

# Утилита "ren", автор Vladimir Lanin ( [email protected]),

#+ выполняет эти же действия много лучше.


ARGS=2

E_BADARGS=65

ONE=1 # Единственное или множественное число (см. ниже).


if [ $# -ne "$ARGS" ]

then

echo "Порядок использования: `basename $0` старый_шаблон новый_шаблон"

# Например: "rn gif jpg", поменяет расширения всех файлов в текущем каталоге с gif на jpg.

exit $E_BADARGS

fi


number=0 # Количество переименованных файлов.


for filename in *$1* # Проход по списку файлов в текущем каталоге.

do

if [ -f "$filename" ]

then

fname=`basename $filename` # Удалить путь к файлу из имени.

n=`echo $fname | sed -e "s/$1/$2/"` # Поменять старое имя на новое.

mv $fname $n # Переименовать.

let "number += 1"

fi

done


if [ "$number" -eq "$ONE" ] # Соблюдение правил грамматики.

then

echo "$number файл переименован."

else

echo "Переименовано файлов: $number."

fi


exit 0


# Упражнения:

# ----------

# С какими типами файлов этот сценарий не будет работать?

# Как это исправить?

#

# Переделайте сценарий таким образом, чтобы он мог обрабатывать все файлы в каталоге,

#+ в именах которых содержатся пробелы, заменяя пробелы символом подчеркивания.

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*