用rm命令批量刪除文件的潛在問題

        最近寫了一個用rm命令批量刪除文件的函數,測試發現有些文件刪除不乾淨。經過分析發現是文件名包含的shell定義的特殊字符,這些特殊在shell有特殊含義。比如我要刪除c$a.class文件,調用rm c$a.class的結果是刪除c.class文件。$字符在shell裏面是變量擴展的意思,而我沒有定義a變量,所以$a被解釋爲空。

        除了$字符,還有其他幾個特殊字符: 

\ ' " ` < > | ; <Space> <Tab> <Newline> ( ) [ ] ? # $ ^ & * =

      如果文件名包含以上的字符,shell將會做特殊解釋。解決的辦法很簡單,在特殊字符前面加轉義字符 \ 就可以了。不光是rm命令會碰到這個問題,所有通過shell來執行的命令都要考慮這個問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章