|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Valentin Nechayev 2:5020/400 22 Jun 2002 11:23:01 To : Victor Wagner Subject : Re: Расшиpения файлов -------------------------------------------------------------------------------- >>> Victor Wagner wrote: VW>>> И зачем =(cat) VW>>> Есть же -pipe? Витус, идите RTFM, блин. -pipe - это только для промежуточных данных, которыми обмениваются между собой cpp0, cpp, cc1, cc1plus, as и прочие. Причем этот ключ резко повышает скорость работы и я не понимаю, почему оно не сделано по умолчанию, а используется /tmp (причем освоить mkstemp[s] гнусники до сих пор не смогли и продолжают использовать диверсионный tempnam, так что неиспользование -pipe еще и просто несекьюрно). (Разве что осталось как наследство с тех времен, когда один запуск одного cc1 занимал всю память машины.) AP>> =(cat) - это к шеллу (zsh). VW> Есть такая группа новостей - comp.unix.programmer. VW> Там еженедельно присуждают приз Most Useless Use of Cat. VW> Данная конструкция относится явно к этой категории. Зачем, VW> спрашивается порождать процесс cat, каким бы ни был при этом VW> удобным shell, когда можно просто объяснить программе, что данные VW> по пайпу читать надо? Витус, сначала подумайте над проблемой, прежде чем нести ахинею и бред. Посмотрите на autoconf. Какого там пишут промежуточный conftest.c и затем натравливают на него gcc, если бы это было так просто? Hа самом деле, передать стандартный ввод на вход программе, которая жаждет сделать open(), не всегда является тривиальной задачей. (Хваленое юниксовое "все есть файл" получило здесь исторически первый нокаут.) В большинстве систем для этого уже есть /dev/stdin или /dev/fd/0, и можно сказать просто "gcc -xc /dev/stdin". К большинству линуксовых дистрибутивов это тоже относится. Однако делать варианты с <(cat) (bash style) и =(cat) (zsh style) - тоже метод решения проблемы. А позерство с Most Useless Use of Cat хорошо для теоретиков, не написавших ни одной реальной системы и не работавших по 10 часов за консолью. Для остальных оно вредно. Hапример, я набираю обычно cat /var/log/maillog | fgrep xxx | fgrep yyy | less потому что знаю, что в >50% случаев команду cat maillog придется заменить на zcat maillog.0.gz и продолжить поиск там, а переделывать команду из вида 'fgrep xxx /var/log/maillog | ...' - слишком много нажатий клавиш. Да, можно было бы написать fgrep xxx <(zcat /var/log/maillog.0.gz)|..., но с начальным cat набирать на порядок быстрее. /netch --- ifmail v.2.15dev5 * Origin: Dark side of coredump (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/7368326a33fb.html, оценка из 5, голосов 10
|