為什麼要在 shell 腳本中轉義簡單字元?

為什麼要在 shell 腳本中轉義簡單字元?

我剛剛打開了一個舊版 shell 腳本(在 Solaris 上用舊 ksh88 編寫),發現整個程式碼重複了以下內容:

[ -f $myfile ] && \rm -f $myfile

轉義的反斜線讓我覺得很奇怪。

我知道這是故意的,因為這種(顯然無用的)轉義在整個程式碼中重複出現。原作者早已不在了,我無法聯絡他詢問。

這只是作者的一個有趣的特質,還是某種在某個時間點有意義但已被棄用的良好實踐?或者也許實際上是推薦的做事方式,而我完全錯過了一些東西?

答案1

這用於別名保護:

$ ls
.bashrc  a  b

$ alias ls
alias ls='ls $LS_OPTIONS'

$ \ls
a   b

答案2

通常,為 rm 提供一些保護措施是一種很好的做法,這通常是透過別名來實現的。在多用戶環境中,您經常會看到許多這樣的保護措施。

對於 shell 腳本從業者來說,停用這些保護措施通常很有用,因為他們知道自己在做什麼。如前所述,這是透過在命令前面加上\.

與 @Sorpigal 的建議相反,我絕對建議不要取消別名設置,以免腳本無法為用戶提供保護。此外,使用完整路徑也是不明智的,因為 rm 可能出於某種原因位於輔助路徑中 - 即 GNU rm 與 BSD rm。用嚴格的路徑覆蓋它將會違背路徑的目的,即擴展和處理許多架構、環境和使用者。

相關內容