Intereting Posts
Идентификатор диска в chroot / jail Как удалить фиксированную часть некоторых строк из текстового файла? Выполнять поиск по двум спискам Я установил Mint 18 на свой ноутбук HP NV79, я не могу использовать коврик для мыши Как избежать разницы в параметрах, которые использовались для создания разделов ext4 на разных дистрибутивах Linux? Как создать запись меню для инструментов Backbox в KDE Plasma 5 Почему не удается root на одной машине изменить nfs смонтированный контент с другого компьютера? Вставить символ в начале определенных строк см. использование фактических разделов Должен ли я иметь сублицензию от LMI для этого? Как обновить CentOS 7, как мы делаем Windows? Как постепенно шифровать выходной файл tshark вдоль захвата? Поддерживает ли GNOME 3 увеличение рабочего стола? Существуют ли какие-либо недостатки `cp –sparse = always`? Запустить исполняемый файл с помощью xdg-open

grep – почему скобки в шаблоне grep удаляют процесс grep из результатов ps?

Почему скобки в шаблоне grep удаляют процесс grep из результатов ps ?

 $ ps -ef | grep XXXX [...] XXXX [...] grep XXXX $ ps -ef | grep [X]XXX [...] XXXX 

Когда вы запускаете ps -ef | grep string ps -ef | grep string , grep отображается на выходе, потому что string соответствует [...] grep string .

Но когда вы запускаете ps -ef | grep [s]tring ps -ef | grep [s]tring строка не отображается, потому что grep переводит [s]tring в string , а ps выводит [...] grep [s]tring и не соответствует string

Поскольку скобки должны быть экранированы, для bash один раз и для grep снова:

 $ ps -ef | grep \\[X\\]XXX [...] XXXX [...] grep XXXX $ ps -ef | grep "\[X\]XXX" [...] XXXX [...] grep XXXX 

Несмотря на то, что ответ на это заключается в « сопоставлении шаблонов классов grep »; Я не мог понять, как это переводится, чтобы не показывать скобки в результатах в манекене. Итак, вот верная причина, которая работает для меня:

Это потому, что ввод команды как
(1) ps -eaf | grep [b]aka
будет выполняться программой оболочки внутри, расширяя регулярное выражение и, таким образом, эквивалентно запуску следующего
(2) ps -eaf | grep "aka\|baka"

Теперь, потому что команда ввода (1) содержит символы квадратной скобки «[]» (буквально – не так называемые регулярные выражения), но выполненная команда (2) не ищет этого, следовательно (1) не отображается в результаты строк, содержащих « aka » | « бака ».

Подумайте, прежде чем вы уменьшите этот фасад ответа minasama