10

ack-grep否定的な先読みで使用することに問題があります。

私はこのコマンドを実行しています:

ack-grep "paypal_responded(?!_at)"

しかし、私はエラーが発生しています:

bash: !_at: event not found

色々なところにバックスラッシュを入れてみましたが、ack&linuxも初心者なので初心者扱いでお願いします。

前もって感謝します。

4

2 に答える 2

18

試すack-grep 'paypal_responded(?!_at)'

!bashが history expand コマンドとして解釈されるのを避けるために、一重引用符が必要です。

于 2011-12-05T12:06:57.910 に答える
4

シェルは!、入力の をコマンド置換として解釈しています。

$ 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
$ 

!特別な意味を持たないことをシェルに伝える必要があります。それには 2 つの方法があります。

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

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

また

ack-grep 'paypal_responded(?!_at)'

単一引用符で囲まれた文字列には、適用される変換が少なくなります。

$ ack-grep "s\!" /etc/passwd
$ ack-grep 's!' /etc/passwd
$ 
于 2011-12-05T12:10:03.777 に答える