[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: