Ack & отрицательный взгляд, дающий ошибки - PullRequest
10 голосов
/ 05 декабря 2011

У меня проблема с использованием ack-grep с отрицательным взглядом вперед.

Я выполняю эту команду:

ack-grep "paypal_responded(?!_at)"

, но получаю ошибку:

bash: !_at: event not found

Я пытался добавить обратную косую черту в разных местах, но я также новичок в использовании ack & linux, поэтому, пожалуйста, обращайтесь со мной как с новичком в любых инструкциях.

Заранее спасибо.

Ответы [ 2 ]

17 голосов
/ 05 декабря 2011

Попробуйте ack-grep 'paypal_responded(?!_at)'

Вам нужна одинарная кавычка, чтобы избежать интерпретации bash ! в качестве команды расширения истории.

4 голосов
/ 05 декабря 2011

Оболочка интерпретирует ! в вашем вводе как подстановку команды:

$ ack-grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
$ !ac
ack-grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
$ 

Вы должны указать оболочке, что ! не имеет особого значения;Есть два способа сделать это:

ack-grep "paypal_responded(?\!_at)"

ack-grep "paypal_responded\(?\!_at\)"

или

ack-grep 'paypal_responded(?!_at)'

Single-к строкам в кавычках применяется меньше преобразований:

$ ack-grep "s\!" /etc/passwd
$ ack-grep 's!' /etc/passwd
$ 
...