Command

以下命令的解釋一個接一個地執行

  • January 6, 2022

我有這兩個命令一個接一個地執行。

cat a.log >> b.log
rm -r a.log

這裡到底發生了什麼?為什麼在這裡被使用?>> 符號呢?使用的 -r(recursive) 標誌是什麼?

考慮到您更正的程式碼,

cat a.log >> b.log
rm -r a.log
  1. cat其文件列表或stdin(如果未提供或-列表中包含破折號 ( ) )複製到其stdout。看man cat
  2. >>是一個標準的 shell 重定向運算符,它將命令的輸出附加到命名文件。在範例中,此命名文件是b.log. 如果不是,請參閱man bash或您首選 shell 的文件,以及shell 的控制和重定向運算符是什麼?bash
  3. rm命令(幾乎)無條件地刪除文件a.log。因為它試圖刪除一個文件,所以該-r標誌無關緊要並被忽略。如果在互動式會話中執行,該命令將要求使用者確認文件是否具有寫入權限。看man rm

如果我正在編寫這段程式碼,我可能會這樣建構它

cat a.log >> b.log && rm -f a.log

在這裡,a.log僅當cat成功將其內容附加到目標文件時才會刪除文件b.log

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