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

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

Тут можно читать онлайн Мендель Купер - Искусство программирования на языке сценариев командной оболочки - бесплатно полную версию книги (целиком). Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте LibKing.Ru (ЛибКинг) или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Мендель Купер - Искусство программирования на языке сценариев командной оболочки
  • Название:
    Искусство программирования на языке сценариев командной оболочки
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    3.7/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Ваша оценка:

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

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

Данное руководство не предполагает наличие у читателя познаний в области программирования на языке сценариев, однако, быстро восполняет этот недостаток, постепенно, шаг за шагом раскрывая мудрость и красоту UNIX. Это руководство может рассматриваться как учебник, предназначенный для самостоятельного изучения или как справочник по программированию на shell. Руководство снабжено серией хорошо прокомментированных примеров, поскольку лучший путь к изучению языка сценариев -- это написание сценариев.

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

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

Шрифт:

Сбросить

Интервал:

Закладка:

Сделать

Таблица H-2. Команды DOS и их эквиваленты в UNIX

Команды DOS Эквивалент в UNIX Описание
ASSIGN ln ссылка на файл или каталог
ATTRIB chmod изменить атрибуты файла (права доступа)
CD cd сменить каталог
CHDIR cd сменить каталог
CLS clear очистить экран
COMP diff, comm, cmp сравнить файлы
COPY cp скопировать файл
Ctl-C Ctl-C прервать исполнение сценария
Ctl-Z Ctl-D EOF (конец-файла)
DEL rm удалить файл(ы)
DELTREE rm -rf удалить каталог с подкаталогами
DIR ls -l вывести содержимое каталога
ERASE rm удалить файл(ы)
EXIT exit завершить текущий процесс
FC comm, cmp сравнить файлы
FIND grep найти строку в файлах
MD mkdir создать каталог
MKDIR mkdir создать каталог
MORE more постраничный вывод
MOVE mv переместить
PATH $PATH путь поиска исполняемых файлов
REN mv переименовать (переместить)
RENAME mv переименовать (переместить)
RD rmdir удалить каталог
RMDIR rmdir удалить каталог
SORT sort отсортировать файл
TIME date вывести системное время
TYPE cat вывести содержимое файла на stdout
XCOPY cp (расширенная команда) скопировать файл

Фактически, команды и операторы командной оболочки UNIX имеют огромное количество дополнительных опций, расширяющих их функциональность, по сравнению с их эквивалентами в DOS. В большинстве своем, пакетные файлы DOS предполагают наличие вспомогательных утилит, таких как ask.com("увечный" аналог UNIX-вого read).

DOS поддерживает крайне ограниченный набор шаблонных символов, учавствующих в операциях подстановки имен файлов, распознавая только два символа -- * и ?.

Преобразование пакетных файлов DOS в сценарии командной оболочки, обычно не вызывает затруднений, а результат такого преобразования читается гораздо лучше, чем оригинал.

Пример H-1. VIEWDATA.BAT: пакетный файл DOS

REM VIEWDATA

REM INSPIRED BY AN EXAMPLE IN "DOS POWERTOOLS"

REM BY PAUL SOMERSON

@ECHO OFF

IF !%1==! GOTO VIEWDATA

REM IF NO COMMAND-LINE ARG...

FIND "%1" C:\BOZO\BOOKLIST.TXT

GOTO EXIT0

REM PRINT LINE WITH STRING MATCH, THEN EXIT.

:VIEWDATA

TYPE C:\BOZO\BOOKLIST.TXT | MORE

REM SHOW ENTIRE FILE, 1 PAGE AT A TIME.

:EXIT0

Результат преобразования в сценарий командной оболочки, немного улучшенный.

Пример H-2. viewdata.sh: Результат преобразования VIEWDATA.BAT в сценарий командной оболочки

#!/bin/bash

# Результат преобразования пакетного файла VIEWDATA.BAT в сценарий командной оболочки.

DATAFILE=/home/bozo/datafiles/book-collection.data

ARGNO=1

# @ECHO OFF Эта команда здесь не нужна.

if [ $# -lt "$ARGNO" ] # IF !%1==! GOTO VIEWDATA

then

less $DATAFILE # TYPE C:\MYDIR\BOOKLIST.TXT | MORE

else

grep "$1" $DATAFILE # FIND "%1" C:\MYDIR\BOOKLIST.TXT

fi

exit 0 # :EXIT0

# операторы перехода GOTO, метки и прочий "мусор" больше не нужны.

# Результат преобразования стал короче, чище и понятнее,

На сайте Тэда Дэвиса (Ted Davis) Shell Scripts on the PC, вы найдете большое число руководств по созданию пакетных файлов в DOS. Определенно, его изобретательность будет вам полезна, при создании ваших сценариев.

Приложение I. Упражнения

I.1. Анализ сценариев

Просмотрите следующие сценарии. Попробуйте запустить их, затем объясните -- что они делают. Расставьте комментарии, затем попробуйте записать их в более компактном виде.

#!/bin/bash

MAX=10000

for((nr=1; nr<$MAX; nr++))

do

let "t1 = nr % 5"

if [ "$t1" -ne 3 ]

then

continue

fi

let "t2 = nr % 7"

if [ "$t2" -ne 4 ]

then

continue

fi

let "t3 = nr % 9"

if [ "$t3" -ne 5 ]

then

continue

fi

break # Что произойдет, если закомментировать эту строку? Почему?

done

echo "Число = $nr"

exit 0

---

Читатель прислал следующий кусок кода.

while read LINE

do

echo $LINE

done < `tail -f /var/log/messages`

Он предполагал написать сценарий, который отслеживал бы изменения в системном журнале /var/log/messages. К сожалению, этот код "зависает" и не делает ничего полезного. Почему? Найдите ошибку и исправьте ее (подсказка: вместо операции перенаправления stdin в цикл, попробуйте использовать конвейерную обработку).

---

Просмотрите сценарий Пример A-11, попробуйте изменить его таким образом, чтобы он выглядел проще и логичнее. Удалите все "лишние" переменные и попытайтесь оптимизировать сценарий по скорости исполнения.

Измените сценарий таким образом, чтобы он мог принимать начальную установку "поколения 0" из любого текстового файла. Сценарий должен считать первые $ROW*$COL символов, и на место гласных вставлять "живые особи". Подсказка: не забудьте преобразовать пробелы в символы подчеркивания.

I.2. Создание сценариев

Напишите сценарии для выполнения повседневных задач.

Простые задания

Содержимое домашнего каталога

Выполните рекурсивный обход домашнего каталога и сохраните информацию в файл. Сожмите файл. Попросите пользователя вставить дискету и нажать клавишу ENTER. Запишите сжатый файл на дискету.

Замена цикла for циклами while и until

Замените циклы for в Пример 10-1 на while . Подсказка: запишите данные в массив и пройдите в цикле по элементам массива.

Выполнив эту "тяжелую работу", замените циклы, в этом примере, на циклы until .

Изменение межстрочного интервала в текстовом файле

Напишите сценарий, который будет читать текст из заданного файла, и выводить, построчно, на stdout, добавляя при этом дополнительные пустые строки так, чтобы в результате получился вывод с двойным межстрочным интервалом .

Добавьте код, который будет выполнять проверку наличия файла, передаваемого как аргумент.

Когда сценарий будет отлажен, измените его так, чтобы он выводил текстовый файл с тройным межстрочным интервалом .

И наконец, напишите сценарий, который будет удалять пустые строки из заданного файла.

Вывод "задом-на-перед"

Напишите сценарий, который будет выводить себя на stdout, но в обратном порядке .

Автоматическое разархивирование

Для каждого файла, из заданного списка, сценарий должен определить тип архиватора, которым был создан тот или иной файл (с помощью утилиты file). Затем сценарий должен выполнить соответствующую команду разархивации ( gunzip, bunzip2, unzip, uncompressили что-то иное). Если файл не является архивом, то сценарий должен оповестить пользователя об этом и ничего не делать с этим файлом.

Уникальный идентификатор системы

Сценарий должен сгенерировать "уникальный" 6-ти разрядный шестнадцатиричный идентификатор системы. Не пользуйтесь дефектной утилитой hostid. Подсказка: md5sum /etc/passwd, затем отберите первые 6 цифр.

Читать дальше
Тёмная тема

Шрифт:

Сбросить

Интервал:

Закладка:

Сделать


Мендель Купер читать все книги автора по порядку

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




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


Отзывы читателей о книге Искусство программирования на языке сценариев командной оболочки, автор: Мендель Купер. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
Большинство книг на сайте опубликовано легально на правах партнёрской программы ЛитРес. Если Ваша книга была опубликована с нарушениями авторских прав, пожалуйста, направьте Вашу жалобу на PGEgaHJlZj0ibWFpbHRvOmFidXNlQGxpYmtpbmcucnUiIHJlbD0ibm9mb2xsb3ciPmFidXNlQGxpYmtpbmcucnU8L2E+ или заполните форму обратной связи.
img img img img img