В завершающей части перевода статьи «Learn 10 good UNIX usage habits» от IBM мы рассмотрим больную для кого-то темы - cat всего подряд и последующая обработка.
10. Перестаньте всё пересылать в пайп, а ввод обрабатывать.
Не знаю, на сколько это действительно важная тема, но господа из IBM считают, что эта тема достойна завершения списка важных финтов для пользователей Unix-based операционных систем... Ну что же, продолжим переводить:
Частая ошибка при использовании утилиты grep - это перенаправление вывода утилиты cat в неё для последующего поиска по одному файлу. Это абсолютно излишне и тратит процессорное и ваше время, так как утилита grep и так принимает имя файла в качестве аргумента и ищет по нему. У вас нет необходимости делать сначала cat, а потом уже искать во входном потоке. Вы можете сразу искать в файле, как показано в примере ниже:
~ $ time cat tmp/a/longfile.txt | grep and 2811 real 0m0.015s user 0m0.003s sys 0m0.013s ~ $ time grep and tmp/a/longfile.txt 2811 real 0m0.010s user 0m0.006s sys 0m0.004s ~ $
Эта ошибка повторяется при использовании многих утилит. Да, многие утилиты принимают входные данные через stdin, однако не нужно использовать cat в случае простого поиска по одному файлу.
... не знаю, отчего им так захотелось именно это записать в "важные привычки unix-оида". Однако, на этом всё с переводом данной статьи. Продолжу подобные заметки под тегом bash100 - множество фактов и советов по командной строке.