Я наткнулся на программу wc, которая печатает количество байтов, слов и строк в файлах. Теперь я намерен использовать его, чтобы определить, действительно ли процесс выполняется на моем компьютере. Если это так, он должен вывести количество байтов в запущенном процессе. В противном случае он должен вывести 0. Но я могу использовать фиктивный процесс, и он по-прежнему печатает байты:
$ ps -ef | grep dfdsfdf | wc -c
74
Откуда происходит этот 74?
Хорошо
в первую очередь,
ps -ef
перечислит каждый процесс в системе
Затем Вы передаете результат по каналу и ищете строку "dfdsfdf"
Вывод будет ничем если команда grep
hadi 28052 27027 0 08:54 pts/0 00:00:00 grep --color=auto dfdsfdf
Теперь Вы передаете этот вывод конвейеру и затем считаете чартеры этого вывода, и таким образом Вы получаете 74.
Для проверки что-то удаляет один символ из строки "dfdsfdf", затем рассчитывают, становятся 73.
см.:
ps -ef | grep dfdsfd | wc -c
73
Благодаря @steeldriver для его комментария.
Могло бы стоить добавить, что grep может быть 'обманут' в не соответствие его собственному выводу путем замены литеральной строки поиска с regex
ps -ef | grep [d]fdsfdf | wc -c
Это возвратится 0