Программы
10 хороших примеров работы в Linux, FreeBSD и прочих Unix. Часть 10 — перестаньте пайпить в cat

10 хороших примеров работы в Linux, FreeBSD и прочих Unix. Часть 10 — перестаньте пайпить в cat

Частая ошибка при использовании утилиты grep - это перенаправление вывода утилиты cat в неё для последующего поиска по одному файлу

В завершающей части перевода статьи «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 - множество фактов и советов по командной строке.

Изображение Шпаргалка по командам Linux, FreeBSD и MacOS