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


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

# ----------

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

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

#

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

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

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