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

Команды DOSЭквивалент в UNIXОписание
ASSIGNlnссылка на файл или каталог
ATTRIBchmodизменить атрибуты файла (права доступа)
CDcdсменить каталог
CHDIRcdсменить каталог
CLSclearочистить экран
COMPdiff, comm, cmpсравнить файлы
COPYcpскопировать файл
Ctl-CCtl-Cпрервать исполнение сценария
Ctl-ZCtl-DEOF (конец-файла)
DELrmудалить файл(ы)
DELTREErm -rfудалить каталог с подкаталогами
DIRls -lвывести содержимое каталога
ERASErmудалить файл(ы)
EXITexitзавершить текущий процесс
FCcomm, cmpсравнить файлы
FINDgrepнайти строку в файлах
MDmkdirсоздать каталог
MKDIRmkdirсоздать каталог
MOREmoreпостраничный вывод
MOVEmvпереместить
PATH$PATHпуть поиска исполняемых файлов
RENmvпереименовать (переместить)
RENAMEmvпереименовать (переместить)
RDrmdirудалить каталог
RMDIRrmdirудалить каталог
SORTsortотсортировать файл
TIMEdateвывести системное время
TYPEcatвывести содержимое файла на stdout
XCOPYcp(расширенная команда) скопировать файл

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

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

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

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

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

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

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

#!/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. Определенно, его изобретательность будет вам полезна, при создании ваших сценариев.

<p><strong>Приложение I. Упражнения</strong></p><p><strong>I.1. Анализ сценариев</strong></p>

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

#!/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 в цикл, попробуйте использовать конвейерную обработку).

---

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных