Bash

不能在 bash 中使用驚嘆號(!)?

  • November 22, 2021

!我正在嘗試使用 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

引用自:https://unix.stackexchange.com/questions/33339