Linux

什麼是“-bash:!”:未找到事件”

  • October 30, 2020

嘗試在 bash shell 下執行以下命令echo "Reboot your instance!"

在我的安裝中:

root@domU-12-31-39-04-11-83:/usr/local/bin# bash --version
GNU bash, version 4.1.5(1)-release (i686-pc-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
root@domU-12-31-39-04-11-83:/usr/local/bin# uname -a
Linux domU-12-31-39-04-11-83 2.6.35-22-virtual #35-Ubuntu SMP Sat Oct 16 23:57:40 UTC 2010 i686 GNU/Linux
root@domU-12-31-39-04-11-83:/usr/local/bin# echo "Reboot your instance!"
-bash: !": event not found

誰能解釋一下什麼是“bash 事件”?我以前從未聽說過這個概念。另外,我應該如何輸出“!” 在句末?

您可以使用 關閉歷史記錄替換set +H

!是 bash 的一個特殊字元,用於引用之前的命令;例如,

!rm

將呼叫並執行以字元串“rm”開頭的最後一個命令,並且

!rm:p

將召回但不執行以字元串“rm”開頭的最後一個命令。bash 將驚嘆號解釋echo "reboot your instance!"為“在此處替換以驚嘆號後面的字元開頭的最後一個命令”,並向您抱怨它在您的歷史記錄中找不到以單個開頭的事件(命令)雙引號。

嘗試

echo reboot your instance\!

從 bash 中保護(轉義)驚嘆號。

引用自:https://serverfault.com/questions/208265