迴聲在做什麼?

迴聲在做什麼?

最近,我注意到迴聲中包含了許多“!”導致奇怪的事情。例如:echo !!給我:

echo rm -r * 1000
rm -r * 1000

rm -r *這是我在輸入之前執行的最後一個命令)。為什麼會發生這種情況,有沒有辦法禁用它?

答案1

您遇到了shell expansion- shell 將解析您的命令並用其他資訊取代特殊的通配符。嘗試echo '!!'(單引號)了解 shell 擴充和引用可以做什麼。

您可以在man的頁面中閱讀有關 shell 擴充功能的更多資訊bash。請注意以下部分:歷史擴展,其中討論了event designators,!!擴張,討論了其他形式的 shell 擴展。該部分關於引用解釋了 bash 引用機制的行為以及單引號和雙引號字串計算方式之間的差異。

相關內容