тите, чтобы ваши файлы передавались согласно абсолютным маршрутным име-
нам, но хотим сохранить их взаимосвязь друг с другом. Если на них ссы-
латься относительно точки, то место, куда они будут помещены, может
быть, где угодно. Однако, если мы скажем "find /dir -print", список бу-
дет выглядеть так:
/dir
/dir/file1
/dir/file2
В обоих случаях мы ссылаемся на наш текущий каталог, но применение
записи вида /dir заставляет полное имя начинаться с "/" и не допускает
использование относительной нотации. Передача такой же информации ко-
манде cpio может радикально изменить место размещения ваших файлов.
Например, если я сказал "cd /src; find . -print | cpio -pdv /dest", ре-
зультирующий список будет таким:
/dest/./dir
/dest/./dir/file1
/dest/./dir/file2
где на первом месте стоит, вероятно, то, что вы хотели. Однако,
если я сказал "find /src -print | cpio -pdv /dest", результирующие
маршрутные имена будут такими:
/dest/src/dir
/dest/src/dir/file1
/dest/src/dir/file2
что не очень хорошо, поскольку это создает уровень каталога, в ко-
тором нет необходимости. Заметьте, что имя каталога "src" было перехва-
чено при распечатке. Это произошло потому, что его выдал find, а cpio
считает, что src было частью имени каталога-приемника.
Повсеместное использование относительной нотации может привести
нас к потере уже имеющейся информации. Например, если бы я сказал "cd
/nowhere; find /src ....", каталог-приемник получил бы неверное имя. Мы
должны уметь использовать этот тип нотации и не попадать в ловушки син-
таксиса. Это и есть то, что делает cptdir.
В строке 31 производится проверка на то, является ли первый символ
в маршрутном имени целевого каталога символом "косая черта" ("/"). Если
да, то мы точно знаем, что имя каталога-приемника выражено в виде абсо-
лютного маршрутного имени, поэтому мы можем сменить каталоги без потери
информации о нашем текущем каталоге. В строках 32-33 мы переходим в ка-
талог-источник и копируем файлы.
Но если первый символ каталога-приемника НЕ является наклонной
чертой, используемая нотация является относительной. Это значит, что
если мы сменим каталог, мы потеряем информацию о том, где мы находи-
лись, когда был запущен командный файл. Чтобы избежать этого, мы полу-
чаем в строке 34 полное имя текущего каталога путем перехвата вывода
команды pwd и присвоения этого значения переменной таким образом, что
позже мы сможем ее восстановить. Затем мы переходим в каталог-источник
и копируем файлы, используя префикс абсолютного маршрутного имени от
команды pwd и относительный суффикс того места, где мы находимся.
Причиной того, что мы так поступаем, является использование от-
носительной (точечной) нотации в операторе find. Как можно было видеть
в предыдущем описании, отказ от использования точечной нотации может
привести к путанице в маршрутных именах каталога-приемника. Для того
чтобы всегда использовать точку в операторе find, нам необходимо убе-
диться, куда мы собираемся пересылать файлы. Еще раз напомним, что ко-
манда cd действует только для данного командного процессора "низкого"
уровня, поэтому она не влияет на тот командный процессор, который за-
пустил командный файл. Вообще, командный файл должен оставить пользова-
телей в тех же условиях, в которых они находились перед его запуском,
за исключением выполнения необходимых работ, при которых не произво-
дится смена текущего каталога.
Когда cptdir завершается, управление возвращается вызывающему ко-
мандному процессору, который по-прежнему ведет свой собственный текущий
каталог. Напомним, что всегда, когда вы переходите на более низкий уро-
вень командного процессора, экспортируемые переменные передаются вниз,
но НИЧЕГО не передается наверх.

    ВОЗМОЖНЫЕ МОДИФИКАЦИИ КОМАНДНОГО ФАЙЛА



В нынешней реализации никакие дополнительные ключи не допускается
передача никаких дополнительных ключей команде cpio. Что случится, если
вы захотели заменить копирование файлов, где это возможно, созданием
ссылок (ключ -l) или не менять время последнего доступа к исходному
файлу при его копировании (опция -a)? Такие возможности были бы недо-
пустимы.
Можно легко добавить возможность передачи дополнительных аргумен-
тов. Они должны быть опознаны как аргументы, сохранены и затем выбраны
из командной строки.
Для этого потребуется такой цикл:
for ARG in $*
do
if [ "`echo $ARG|cut -c1`" = "-" ]
then CPIOARG="CPIOARG $ARG"
shift
fi
done
Затем переменная CPIOARG может быть передана команде cpio.
Еще одна область, где могут быть произведены изменения - это уп-
равление правами доступа к файлам. Как объяснялось ранее, значение 0
для umask делает все права такими, что они разрешают запись. Если это
вам не подходит, оператор find может быть изменен так, что будет произ-
водиться выборочное копирование (и изменение прав доступа).
Предположим, например, вы имеете каталог с двумя файлами. Если вы-
полнился оператор "find /dir -print", список файлов будет таким:
/dir
/dir/file1
/dir/file2
Обратите внимание, что имя каталога появляется первым. Проблема
возникает, если имя каталога не принадлежит вам или вы не имеете права
записи. Происходит следующее: имя каталога копируется первым, устанав-
ливаются права доступа (блокируя вас) и после этого file1 и file2 не
могут быть скопированы в каталог dir. В cptdir мы применяем решение из-
менить umask так, чтобы вы всегда имели права записи. Это своего рода
клудж, но он работает.
Другой путь - это изменить оператор find. Выполнение оператора
"find /dir -depth -print" сгенерирует такой список файлов:
/dir/file1
/dir/file2
/dir
Обратите внимание, что имя каталога стоит ПОСЛЕДНИМ! Это правиль-
но. Ключ -depth переворачивает список файлов так, что имя каталога пе-
чатается последним.
Что это дает? Фокус в том, что сначала копируются file1 и file2, а
затем устанавливаются права доступа данного каталога. Вы можете за-
писать файлы в каталог, для которого вы не имеете права записи. Благо-
даря тому, что файлы копируются первыми, вы можете не беспокоиться о
том, какого рода права доступа имеет этот каталог. К сожалению, ключ
-depth команды find поддерживается не всеми версиями системы UNIX.

3.2.2. can - удаление файлов в "мусорную корзину"

----------------------------------------------------------------------
Имя: can
______________________________________________________________________
can Управление "мусорной корзиной" файлов

    НАЗНАЧЕНИЕ



Перемещает файлы в "мусорную корзину", симулируя их удаление. Это
допускает восстановление файлов после их кажущегося удаления.
Формат вызова
can [-l] [-r] file [file ...]
Пример вызова
can junk Посылает файл junk в "мусорную корзину"
Исходный код для can
1 :
2 # @(#) can v1.0 Maintain file trash can Author: Russ Sage

4 CAN=$HOME/.trashcan

6 if [ ! -d $CAN ]
7 then mkdir $CAN
8 fi

10 if [ "`echo \"$1\"|cut -c1`" = "-" ]
11 then case $1 in
12 -l) echo "$CAN:"
13 ls -al $CAN
14 exit 0;;
15 -r) echo "removing $CAN/*:"
16 rm -rf $CAN/*
17 exit 0;;
18 -z|-?) echo "usage can [-l] [-r] file [file ...]" >&2
19 exit 0;;
20 esac
21 fi

23 mv $@ $CAN

Переменные среды выполнения

CAN Положение каталога "мусорной корзины"
HOME Положение вашего регистрационного каталога

Описание
Зачем нам нужен can?

По большому счету система UNIX, при всем ее великолепии, является
просто структурой для накопления и манипулирования данными в файлах.
Как мы отмечали раньше, эта система включает сотни файлов. Некоторые
файлы вы желаете хранить неопределенно долго, в то время как другие
отслужили свое и создают беспорядок на диске. К несчастью, легко выб-
росить то, что в действительности вы хотели сохранить. Команду rm со-
вершенно не украшает то, что она является печью для сжигания мусора:
бросьте что-нибудь в нее и оно пропадет (если только вы не имеете ко-
пии, а восстановление копии - это трудоемкая работа). Вот несколько
классических примеров неверного применения команды rm:
rm * /tmp <-- Удалить все файлы в каталоге /tmp
Мы хотели сказать rm /tmp/*, а на самом деле произошло сначала
удаление всех файлов в текущем каталоге, а затем попытка удалить /tmp.
Последнее будет безуспешным, поскольку tmp - это каталог. В результате
мы удалили все, что хотели сохранить, и сохранили все, что хотели уда-
лить! Этот синтаксис похож на другие операторы UNIX, вроде "grep *
file": противная ошибка.
rm -rf / tmp <-- Удалить каталог tmp со всеми файлами
Мы хотели сказать rm -rf /tmp, но нечаянно вставили пробел в ко-
манду. На самом деле удалятся ВСЕ файлы во всей системе (если мы дадим
команде выполняться достаточно долго), потому что мы сказали UNIX уда-
лить корневой каталог и всех его потомков! Вы должны быть внимательны с
командой rm. Если покажется, что что-то не так, удалите эту команду.
Она может погубить вас.
Одна такая ошибка может испортить вам целый день. После того, как
это случится, вы станете осторожным на некоторое время, потом внимание
ослабнет. Если вы не будете бдительным, ошибки вернутся, чтобы пресле-
довать вас.
Для нас "мусорная корзина" более желательна, чем печь для сжигания
"мусора". Используя этот путь, вы можете вернуться и восстановить то,
что вы выбросили по ошибке. Вы также хотели бы контролировать, когда
появится мусоросборщик, захватит и окончательно удалит "мусор". Вы мо-
жете периодически просматривать содержимое "мусорной корзины", а затем
очищать корзину, когда вы уверены, что вы не хотите ничего в ней сохра-
нять. Нельзя допускать, чтобы корзина была слишком заполнена, потому
что она занимает дисковое пространство.

Что делает can?

Командный файл can предназначен для управления "мусорной корзиной"
ваших файлов. Используя утилиту, вы можете свести к минимуму случайные
потери во время работы и даже впоследствии восстанавливать файлы при
необходимости.
Can не только помещает ваши файлы в "мусорную корзину", но и пока-
зывает вам, что в ней в настоящее время находится и очищает ее, когда
вы этого хотите.
Can распознает только ключи -l и -r. Ключ -l показывает, что нахо-
дится в "мусорной корзине", а -r удаляет все ее содержимое. Запомните,
что если вы что-то удалили из "мусорной корзины", вы не сможете его
восстановить.
Процесс помещения файлов в "мусорную корзину" выполняется командой
mv. Ключи, предназначенные для can, должны быть первым аргументам в ко-
мандной строке. Если вы желаете передать ключи команде mv, то их можно
поместить в любом месте командной строки. Единственные ключи, дающие
синтаксическую подсказку, - это -z и -?. Их предназначение - быть фла-
гами только для обработки ошибок. Благодаря наличию специальных флагов
обработки ошибок, выдающих справочную (help) информацию, ключи команды
mv, как и ключи can, можно помещать первыми в командной строке, не ока-
зывая влияния на can. Если вы создаете ваши командные файлы так, чтобы
эти ключи всегда выдавали информацию об использовании (т.е. никогда не
были "настоящими" ключами), то вы имеете хороший способ получения помо-
щи по синтаксису. Многие (но, увы, не все) стандартные команды UNIX да-
ют по ключам -z или -? подсказку об использовании и это полезно помнить
всякий раз, когда вы попали в тупик.
Если can не получает никаких ключей, действие по умолчанию заклю-
чается в пересылке всех указанных файлов в "мусорную корзину", разме-
щенную в вашем регистрационном каталоге под именем $HOME/.trashcan.
Если этот каталог отсутствует, он автоматически создается при первом
выполнении командного файла can. Это позволяет вам запускать команду,
не указывая специального положения "корзины". Если вы применяете ключ
-r, файлы в "мусорной корзине" будут удалены, а сама она нет.
Примеры
1. $ can *.c
Перемещает все файлы, которые оканчиваются на .c, в "мусорную кор-
зину".
2. $ can -l
Выдает список всех файлов, размещенных сейчас в "мусорной корзи-
не".
3. $ can -r
Удаляет все файлы из "мусорной корзины".
4. $ can -q *
Передает ключ -q команде mv. Поскольку это недопустимый ключ ко-
манды mv, она выдает сообщение об ошибке и завершается.
Пояснения
Строка 4 устанавливает место "мусорной корзины" так, чтобы она
размещалась в вашем регистрационном каталоге под именем .trashcan. За-
метьте, что ее именование, начиная с точки, делает ее нераспечатывае-
мым, или скрытым файлом. Единственный способ увидеть такие файлы -
использовать ключ -a в команде ls.
Строки 6-8 проверяют, определен ли сейчас каталог "мусорной корзи-
ны". Если нет, он создается. Обратите внимание, что поскольку его соз-
даете вы, он имеет такие права доступа на чтение и запись, как в вашем
регистрационном каталоге.
Строки 10-21 проверяют, начинается ли первый позиционный параметр
с черточки (-). Если такой параметр обнаружен, проверяется, является ли
он ключом командного файла can (-l, -r, -z или -?). Обратите внимание,
что для того, чтобы для использования двойных кавычек внутри двойных
кавычек (строка 10), вы должны экранировать кавычки. Символ обратной
косой черты (\) использован именно для этой цели.
Если указан ключ -l, выдается напоминание об имени каталога
"мусорной корзины", команда ls выводит список файлов в "мусорной корзи-
не" и процедура can завершается, поскольку требовалось только вывести
список.
Если указан ключ -r, выдается сообщение об имени каталога очищае-
мой "мусорной корзины" и файлы в ней удаляются командой rm. Это разру-
шительная вещь и удаляет ваши файлы навсегда. После удаления can завер-
шает работу. Вы можете дополнить программу процедуры так, чтобы давать
подтверждение перед выполнением команды, если это позволит вам чувство-
вать себя более спокойно.
Если указан ключ -z или -?, выдается подсказка об использовании и
can завершается. Это не совсем хорошо, но мы не можем использовать сим-
вол *, соответствующий любому другому ключу, поскольку ключ может быть
предназначен для команды mv, а не для can. Благодаря использованию все-
го двух аргументов для обработки ошибок, мы можем разрешить передачу
всех остальных аргументов. Если ключ не является одним из ключей can,
или одним из указанных ключей обработки ошибок, то он передается коман-
де mv. Если ключ недопустим для этой команды, команда mv выдает свое
сообщение об ошибке и завершает работу. Вы можете, естественно, модифи-
цировать командный файл так, чтобы он проверял допустимость ключей ко-
манды mv на "внешнем" уровне. Тогда он может выдать сообщение об ошибке
и завершиться, если указанный ключ недопустим ни для can, ни для mv.
Вопрос в том, стоит ли платить за более полный контроль над обработкой
ошибок ценой разбухания программы и временем исполнения.
Строка 23 выполняет собственно перемещение файлов в "мусорную кор-
зину". Заметьте, что это выполняется только если не указаны никакие
ключи can, поскольку это поведение can, принятое по умолчанию. Здесь
используется параметр $@. Путем включения всех параметров в командную
строку, любые ключи, предназначенные команде mv, передаются ей. Таким
способом мы можем изменить путь, которым файлы посылаются в "мусорную
корзину".

3.2.3. dosflp - копирование файлов с гибкого диска формата MS-DOS
с использованием символов шаблона в именах файлов

-------------------------------------------------------------------
Имя: dosflp
_____________________________________________________________________
dosflp Копирование файлов с гибкого диска формата DOS с
использованием символов шаблона в именах файлов

    НАЗНАЧЕНИЕ



Копирует файлы с гибкого диска в формате DOS (в XENIX) на жесткий
диск. Обеспечивает возможность использования записи с помощью симво-
лов-шаблонов для имен файлов на гибком диске, где такая запись обычно
недопустима.

    ФОРМАТ ВЫЗОВА



dosflp [-a] [-c] [-dDRIV] [-eEXP][-h] [-l] [-r] [-sDIR]
где
-a означает копирование файлов, соответствующих *.asm
-c означает копирование файлов, соответствующих *.c
-d выбирает имя устройства DRIV из набора A,B,X,Y (по умолчанию A)
-e использует выражение EXP, чтобы применить к файлам grep
-h копирует файлы, соответствующие *.h
-l только выдает список файлов
-r удаляет файлы вместо их копирования
-s указывает подкаталог DIR на гибком диске формата DOS

Пример вызова
dosflp Копирование всех файлов с устройства A: в текущий
каталог
Исходный код для dosflp

1 :
2 # @(#) dosflp v1.0 Wildcard copies from DOS floppy
Author: Russ Sage

4 EXP=.\*
5 DRIVE="A:"
6 OP="c"

8 if [ "$#" -gt 0 ]
9 then for ARG in $@
10 do
11 case "$ARG" in
12 -a) EXP='.*\.asm$';;
13 -c) EXP='.*\.c$';;
14 -d*) DRIVE="`echo $ARG | cut -c3-`:";;
15 -e*) EXP='`echo $ARG | cut -c3-`';;
16 -h) EXP='.*\.h$';;
17 -l) OP="l";;
18 -r) OP="r";;
19 -s*) DRIVE="$DRIVE`echo \"$ARG" | cut -c3- `/";"
20 *) echo "dosflp: arg error"
21 echo "usage: dosflp [-a] [-c] [-d] [-e] [-h] [-l]
[-r] [-s]"
22 exit 1;;
23 esac
24 done
25 fi

27 case $OP in
28 c) echo "\nCopying files from $DRIVE to `pwd`";;
29 l) echo "\nListing files on $DRIVE"
30 dosdir $DRIVE | more
31 exit;;
32 r) echo "This option removes all the data on the floppy."
33 echo -n "Do you want to do this (y/n): "
34 read RSP
35 if [ "$RSP" = "y" ]
36 then echo "\nRemoving files on $DRIVE"
37 else exit
38 fi;;
39 esac

41 dosls $DRIVE | tr "[A-Z]" "[a-z]" > /tmp/doslist

43 for FILE in `grep "$EXP" /tmp/doslist`
44 do
45 echo $FILE
46 case $OP in
47 c) doscp $DRIVE$FILE .;;
48 r) dosrm $DRIVE$FILE;;
49 esac
50 done

52 rm /tmp/doslist

Переменные среды выполнения

ARG Хранит аргументы командной строки
DRIVE Устройство с гибким диском формата DOS
EXP Выражение, имитирующее действие символа-шаблона
FILE Хранит имя файла, над которым производится действие
OP Ключ, определяющий необходимое действие

Описание
Зачем нам нужен dosflp?

Это команда только для системы XENIX. Операционная система XENIX,
являясь продукцией фирмы Microsoft, имеет средства для общения с файло-
вой системой MS-DOS. Для ознакомления с основами совместного использо-
вания DOS и XENIX давайте рассмотрим основные параметры.
Каждый жесткий диск может иметь максимум четыре раздела. Это огра-
ничение MS DOS, которое перенесено в мир XENIX. Ничего плохого в этом
нет, пока мы не начинаем работать с жестким диском большой емкости. Для
70-мегабайтного диска, например, вы можете создать четыре рав-
ных раздела, каждый из которых содержит приблизительно 17 Мбайт. Вы мо-
жете создать меньший раздел, но тогда другой раздел должен быть больше.
В зависимости от того, какая часть ваших программ и данных должна быть
использована в основном MS-DOS и какая - XENIX, может быть использована
различная конфигурация.
Большим преимуществом системы XENIX/DOS является то, что XENIX мо-
жет размещаться в одном разделе, а DOS в другом. Как это сделать? Нужно
запустить программу "fdisk" в каждой операционной системе. Это значит,
что XENIX может общаться с разделом DOS, получая полное имя устройства,
указывающее на другой раздел. Драйвер, который читает раздел DOS, дол-
жен знать, как выглядит DOS (т.е. знать файловую систему DOS). Если вы-
полнить такую операцию, можно получать списки файлов и копировать их
туда и обратно. К сожалению, DOS не имеет возможности чтения разделов
XENIX.
При работе с гибким диском вы имеете дело только с одним разделом.
Это снова ограничение DOS. Некоторые системы UNIX, в отличие от DOS,
позволяют иметь столько разделов на жестком или гибком диске, сколько
вы хотите, в отличие от DOS. По определению, гибкий диск DOS сформати-
рован в системе DOS, которая выполняет форматирование низкого уровня и
помещает файловую систему DOS на гибкий диск.
В системе XENIX гибкий диск может быть либо в формате файловой
системы, либо неструктурированным устройством последовательного доступа
подобно магнитной ленте. Для процедуры dosflp мы используем только гиб-
кие диски в формате DOS.
Теперь к делу. Предположим, вы имеете систему DOS и файлы, находя-
щиеся на диске DOS, вы можете читать и писать файлы на гибкий диск из
XENIX. Но существуют некоторые ограничения на выполнение операции копи-
рования, которые не слишком удобны пользователю. Например, вы можете
сказать "doscp *.c a:". В результате все файлы текущего каталога кото-
рые оканчиваются на .c, будут скопированы на гибкий диск формата DOS на
устройстве a:. Побочный эффект выполнения doscp заключается в том, что
все символы перевода строки (или прогона строки) превращаются в символ
возврат каретки/перевод строки, поскольку DOS обрабатывает конец строки
иначе, чем XENIX. Таким же образом, когда вы копируете с гибкого диска
формата DOS в XENIX, лишние символы возврата каретки убираются.
Что вы не можете сделать, так это сказать "doscp a:*.c". Команда
doscp не допускает указания вида *.c при копировании с гибкого диска.
Это происходит потому, что командный процессор распространяет метасим-
волы (*,?,[]) и не может непосредственно читать раздел DOS. Поэтому вы
не можете использовать символы при копировании с гибкого диска DOS.
Отметим, что может наблюдаться гораздо больше побочных эффектов,
когда вы имеете дело с гибкими дисками DOS. Во-первых, длина имени фай-
ла ограничена. DOS допускает до восьми символов имени файла плюс три
символа расширения. В результате после копирования всех ваших файлов
XENIX на гибкий диск многие из них могут иметь не те имена, которые они
имели в XENIX. Это сущее страдание, когда вы пытаетесь сделать копию на
гибкие диски DOS, потому что вы больше не имеете уверенности, как обра-
щаться к файлам, когда вы копируете их обратно с гибкого диска. Кроме
того, поскольку расширение имени файла в DOS имеет только три символа,
файл с именем "spreadsheet.finance" может оказаться на гибком диске DOS
с именем "spreadsh.fin" и распознавание его может представлять опреде-
ленные трудности.
Но это еще не все. Когда файл копируется из XENIX в DOS, ВСЕ имена
в DOS записываются заглавными буквами. Если у вас есть файлы с именами,
в которых смешаны верхний и нижний регистры, то вы несколько потеряете
понятность имен. Если вы используете в именах символы верхнего регистра
при копировании файлов обратно в XENIX, они не переводятся на нижний
регистр. В результате все имена ваших файлов оказываются записанными
символами верхнего регистра в XENIX, что не очень удобно.
В чем мы нуждаемся, так это в таком средстве, которому мы можем
указывать, какие файлы копировать с гибкого диска на жесткий диск, и
которое копирует их с сохранением регистра в имени файла. Все это дела-
ет процедура dosflp.

Что делает dosflp?

Dosflp пытается исключить все негативные аспекты копирования фай-
лов XENIX/DOS. Это высокое требование, но оно достижимо. Вкратце подход
dosflp следующий: получить список имен файлов с гибкого диска, пере-
вести имена в нижний регистр, выбрать из полного списка имена тех фай-
лов, которые соответствуют вашим требованиям, и затем копировать файлы
один за другим в текущий каталог XENIX. Для того, чтобы сделать это,
требуется гораздо больше команд XENIX вида dosxx, а также различных
других команд XENIX.
В дополнение к копированию, dosflp также выдает список файлов, ко-
торые имеются на гибком диске DOS, и удаляет файлы с гибкого диска. Эти
функции легко реализовать, потому что как только один раз процедура
доступа написана, добавить новые команды для выполнения операций над
файлами довольно просто.
Обычно мы хотим управлять файлами определенного типа как группой.
Сюда относятся ассемблерные исходные файлы, исходные файлы на языке C и
файлы-заголовки на языке C. Поэтому, чтобы снять с вас обязанности по
вводу универсальных символов для этих типов файлов, мы прямо указываем
их в качестве опций команды dosflp. Например, ключ -a копирует только
файлы, которые оканчиваются на .asm, поэтому нет необходимости помнить
вид выражения для копирования этих файлов. Аналогично, ключ -c копирует
все файлы, оканчивающиеся на .c, и ключ -h копирует файлы, оканчивающи-
еся на .h.
Как мы увидим позже, прямое указание, о котором мы говорим здесь,
являеется выражением для команды grep. Использование всех возможностей
команды grep достигается при указании образцов имен файлов.
Используйте ключ -d для указания, с какого гибкого диска произво-
дится копирование. По умолчанию это устройство a: или A:. Не имеет зна-
чения, на каком регистре вы укажете имя устройства. Для уверенности
проверьте файл /etc/default/msdos. Этот файл содержит соответствия меж-
ду символом устройства и маршрутным именем XENIX. Например, файл может
выглядеть так:
A=/dev/fd048ds9
B=/dev/fd148ds9
C=/dev/hd0d
D=/dev/hd1d
X=/dev/fd096ds15
Y=/dev/fd196ds15
Как вы видите, маршрутные имена - это обычные имена устройств и
ничего больше.
В качестве основного средства выполнения работы dosflp использует
команду doscp. Это утилита способна понимать формат файловой системы
DOS. Dosflp передает ей обозначение устройства и другие опции
посредством переменных командного процессора. Например, ключ "-dB:" ме-
няет устройство на B вместо принятого по умолчанию устройства A.
Если выражения прямого указания типа файлов не соответствуют тому,
что вам нужно, вы можете определить свои собственные выражения со-