Shell

使用破折號 (-) 代替文件名

  • April 4, 2020

對於命令,如果使用-作為參數代替文件名將意味著 STDIN 或 STDOUT。

  1. 但在本例中,它創建了一個名為 的文件-
echo hello > -

我怎樣才能-在這個例子中表示 STDOUT? 2. 相反,我怎樣才能使-一個文件在範例中命名-,例如:

cat -

-用作文件名來表示標準輸入/標準輸出是許多程序使用的約定。它不是文件名的特殊屬性。核心不會將其辨識-為特殊的,因此任何引用-為文件名的系統呼叫都將-直接用作文件名。

使用 bash 重定向,-不被辨識為特殊文件名,因此 bash 將使用它作為文字文件名。

cat將字元串-視為文件名時,它會將其視為標準輸入的同義詞。為了解決這個問題,您需要更改cat看到的字元串,使其仍然引用名為-. 通常的做法是在文件名前加上路徑 -./-/home/Tim/-. 此技術也用於解決命令行選項與文件名衝突的類似問題,例如,稱為 的文件./-e不會作為-e程序的命令行選項出現。

引用自:https://unix.stackexchange.com/questions/16357