我想touch
在 Linux 終端機中使用該命令來創建一個名稱以 符號開頭的文件-
,例如-attempt
.
-
我怎麼能克服這個特殊角色的事實呢?
例如,如果我想建立一個名為 的文件#attempt
,我不能只寫touch #attempt
相反,我必須寫touch \#attempt
,但在這種-
情況下,即使我使用\
它仍然不能很好地工作)。
答案1
兩種方式:
將-
遠離第一個字符
touch ./-foo
或使用--
開關結束標記
touch -- -foo
答案2
touch \#attempt
之所以有效,是因為井號對 shell 來說是特別的。同樣,您需要類似touch \(foo\)
, 或touch 'this & that'
的檔案名稱帶有括號或與號等。
但轉義破折號並沒有幫助,因為它並不特殊到外殼,而是由 shell 啟動的實用程式。執行 shell 命令touch \-foo
列與運行相同touch -foo
,無論如何touch
都會得到單一參數-foo
。
所以,與其逃避,還需要做點別的事情。
告訴程式停止將命令參數解釋為(可能的)選項的標準方法是將參數插入--
選項之後。例如,這將rm
使用選項-f
在名為的檔案上運行-r
:
rm -f -- -r
(並且rm -- --
會刪除一個名為 的檔案--
。)
或者,您可以透過確保破折號不是檔案名稱的第一個字元(通常是在前面加上./
.同樣,這將刪除一個名為的檔案-rf
:
rm ./-rf