# DIR — имитирует поведение команды DIR в DOS, принимает некоторые
#·· стандартные флаги команды DIR и выводит содержимое указанного каталога
function usage
{
cat << EOF >&2
··Usage: $0 [DOS flags] directory or directories
··Where:
····/D sort by columns
····/H show help for this shell script
····/N show long listing format with filenames on right
····/OD sort by oldest to newest
····/O-D sort by newest to oldest
····/P pause after each screenful of information
····/Q show owner of the file
····/S recursive listing
····/W use wide listing format
EOF
··exit 1
}
#####################
### ОСНОВНОЙ СЦЕНАРИЙ
postcmd=""
flags=""
while [$# −gt 0]
do
··case $1 in
····/D······) flags="$flags −x"··;;
····/H······) usage··············;;
····/OD····) flags="$flags −rt";;
····/O-D····) flags="$flags −t"··;;
····/P······) postcmd="more"····;;
····/S······) flags="$flags −s"··;;
··········*) # Неизвестный флаг: возможно, признак конца команды DIR;
··············#·· поэтому следует прервать цикл while.
··esac
··shift······ # Флаг обработан; проверить — есть ли что-то еще.
done
# Обработка флагов завершена; теперь выполнить саму команду:
if [! -z "$postcmd"]; then
··ls $flags "$@" | $postcmd
else
··ls $flags "$@"
fi
exit 0
Как это работает
Этот сценарий демонстрирует, что инструкция case в языке командной оболочки фактически проверяет регулярное выражение. Как можно видеть в строке
Запуск сценария
Сохраните сценарий в файле с именем
Результаты
Листинг 2.18. Тестирование сценария DIR со списком файлов
$ DIR /OD /S ~/Desktop
total 48320
7720 PERP — Google SEO.pdf············ 28816 Thumbs.db
····0 Traffic Data······················8 desktop.ini
····8 gofatherhood-com-crawlerrors.csv··80 change-lid-close-behavior-win7-1.png
·· 16 top-100-errors.txt················176 change-lid-close-behavior-win7-2.png
····0 $RECYCLE.BIN······················400 change-lid-close-behavior-win7-3.png
····0 Drive Sunshine····················264 change-lid-close-behavior-win7-4.png
·· 96 facebook-forcing-pay.jpg·········· 32 change-lid-close-behavior-win7-5.png
10704 WCSS Source Files
Это список с содержимым указанного каталога, отсортированный в обратном хронологическом порядке, от более новых к более старым, и размерами файлов (для каталогов всегда выводится размер 0).
Усовершенствование сценария