Bash
不能在 bash 中使用驚嘆號(!)?
!
我正在嘗試使用 curl 命令訪問路徑中帶有驚嘆號 ( ) 的 http url 。例如:curl -v "http://example.org/!287s87asdjh2/somepath/someresource"
控制台回复
bash: ... event not found
.這裡發生了什麼?什麼是逃避驚嘆號的正確語法?
驚嘆號是 bash 歷史擴展的一部分。要使用它,您需要將其括在單引號中(例如:)
'http://example.org/!132'
。您可以嘗試
\
在字元前使用反斜杠 ( ) 直接轉義它(例如:"http://example.org/\!132"
)。但是,即使驚嘆號前的反斜杠確實可以防止歷史擴展,在這種情況下也*不會刪除反斜杠。*所以最好使用單引號,這樣您就不會將文字反斜杠curl
作為 URL 的一部分傳遞給。
除了丹尼爾給出的答案,如果你不使用它,你也可以簡單地完全關閉歷史擴展
set +H
。