Re: Как укротить find?
Aleksey Cheusov -> debian-russian@lists.debian.org @ Tue, 09 Sep 2008 13:17:42 +0300:
>>>>У баша - есть. По умолчанию, если под шаблон ни одного файла не
>>>>подпадает, он не ругается, а передает в команду шаблон.
AC>>> Есть такая какашка. Но действительно логичным решением было бы
AC>>> передавать пустую строку, а не генерить ошибки.
>> Разумные решения - либо вообще не передавать этого параметра
>> (передавать пустой _список_, а не пустую _строку_)
AC> Согласен. Шелу вообще не хватает понятия "списка".
Кстати, bash и zsh им обладают. Правда, синтаксис тяжел, поэтому этим
почти никто не пользуется. Но, повторюсь, реакцией типичной юниксовой
программы на пустой список файлов будет работа с stdin, что, скорее
всего, окажется ни разу не тем, чего ожидал человек, если пустой список
образовался из шаблона.
Да, лично у меня NOMATCH...
AC> Но, как бы там ни было, _в программах_ на шеле использовать всякие
AC> * и ? и прочее для получения списка файлов для обработки - признак
AC> дурного воспитания. Поскольку могут "захватиться" не только файлы,
AC> но и каталоги, которые в *BSD еще и читаются... В норме список
AC> файлов должен ВСЕГДА задаваться извне в качестве параметров. В
AC> других случаях нужно использовать find и только find. Поэтому
AC> проблема file expansion по неправильному шаблону актуальна только
AC> для интерактивной сессии, где и печать шаблона и выход с ошибкой
AC> вполне приемлемы.
Вот как раз в интерактивной сессии на мой взгляд печать шаблона и
чревата наиболее неприятным боком. Ибо подход баша вызывает
вырабатывание привычки у человека. А привычка - не скрипт, исправить
выработанную привычку на порядки тяжелее.
--
Artem Chuprina
RFC2822: <ran{}ran.pp.ru> Jabber: ran@jabber.ran.pp.ru
/dev/null-транспортировка
Reply to: