ВОЗМОЖНЫЕ МОДИФИКАЦИИ
Для увеличения гибкости хорошо бы добавить опции, чтобы вы могли переходить на команду find непосредственно из thead. Полезными аргументами были бы -name для изолирования образцов имен файлов и -ctime для обработки изменений, связанных со временем.
Еще одной привлекательной особенностью было бы добавление опции грамматического разбора (основанной на -) и опции -n, указывающей, что из команды head должно быть напечатано n строк.
Данный командный файл открыт для многих различных видов модификации. Поиск полного имени файла является фундаментальной задачей программного обеспечения по сопровождению файлов. Эта возможность позволяет нам полагаться на саму программу paths или использовать paths в качестве куска более объемной программы.
При разработке ваших собственных программ следует обратить внимание на гибкость командного файла paths, которая выражается в отличии между обрабатываемыми форматами. Первые два формата используют отдельные файлы, а формат set использует каталоги. Дальнейшие дополнения к командному файлу paths могут касаться любой из этих строк или могут комбинировать их. Если есть необходимость, программное обеспечение может приспособиться к этому.
Было бы неплохо, если бы командный файл kind мог работать одновременно с разными типами файлов. Это означает наличие несколько опций в командной строке, например -a и -d. Вам могла бы понадобиться составная строка, в которой каждая часть была бы отделена символом |. Затем эта строка могла бы быть использована в команде egrep, например, "egrep 'archive|data'". Вам пришлось бы организовать цикл по командной строке вместо использования фиксированных позиций и убедиться в том, что вы не получите зациклившийся конвейер, когда задана только одна опция.
Поскольку все аргументы рассматриваются как имена файлов, то у нас нет способа передачи дополнительных команд пакету mm. Наличие такой возможности было бы желательным, поскольку при экспериментировании с командой nroff вам необходимо пробовать различные опции, чтобы увидеть, как они действуют. Было бы тяжелой работой выполнять редактирование текста mmm, чтобы добавить одноразовые опции, которые могут вам никогда не понадобиться или опции, которые вы должны постоянно менять.
Один из путей достижения большей гибкости - посмотреть, имеет ли какой-либо аргумент дефис в качестве первого символа. Если да, перехватить эту опцию и убрать ее из списка имен файлов. После этого вы бы имели список опций, которые нужно включить в командную строку, и список имен файлов, подлежащих обработке.
Отметим, что место, занятое в нашем командном файле указанием пакета mm, можно вместо этого заполнить ссылкой на другие макропакеты, имеющиеся в вашей системе, например -ms или -me, в зависимости от нужного вам формата. Отказ от поиска макросов, которые вам не нужны, ускорит обработку: подробности вы найдете в документации по nroff или troff.
Возможно, вы захотите добавить свои собственные штрихи в некоторых местах командного файла. Первым местом является то, где указываются символы поиска файлов программной разработки. Символы, использованные нами - это наиболее употребимые суффиксы в UNIX. Если вы используете не Си и ассемблер, а другие языки, то вы можете добавить соответствующие символы.
Следующим местом, где могут быть сделаны дополнения, являются опции, которые может понимать pall. Вам могут понадобиться файлы с определенными именами или определенными типами, например, файлы nroff. Эти опции могут быть легко добавлены в оператор case, что улучшит команду.
Последним местом возможных изменений является тип файлов, которые нужно пропускать. Символьная строка для команды egrep покрывает большинство важных нетекстовых типов файлов. В вашей системе могут быть какие-то особые типы или же имена могут быть другими. Если вам необходимо дополнить строку, сделайте это. Команда egrep может обработать довольно много информации. Я не знаю ее ограничений. Возможно, вы обнаружите их, просматривая исходный текст утилиты egrep. Если получается слишком длинная строка и не помещается на экране, ничего страшного. Перенос на следующие строки экрана не опасен, пока общее количество символов не превысит 255. Опасно только указывать переадресацию символьной строки if на нулевое устройство в следующей после команды egrep строке. Кажется, что все работает правильно, но это не так. Переадресация должна указываться в той же строке, где стоит команда egrep.
В данной главе сделано очень много. Наиболее важно то, что получено множество новых идей, которые можно использовать при эксплуатации программной среды и просмотре файлов любого типа. В следующей главе мы углубимся в рутинную работу по ежедневному сопровождению файлов и используем изученные средства, чтобы они облегчили нашу жизнь.