Tar

舊式語法下(GNU)tar 參數的順序?

  • August 30, 2022

在 shell 管道中,我從目錄下的文件選擇中組成一個 tar 存檔,從標準輸入中獲取文件列表,並將存檔寫入標準輸出。當我tar這樣執行時:

tar cCTf directory - -

一切都很好。但是當我嘗試像這樣執行它時:

tar cTCf - directory -

tar找不到文件,我收到以下錯誤消息:

tar: The following options were used after any non-optional
arguments in archive create or update mode.  These options
are positional and affect only arguments that follow them.
Please, rearrange them properly.
tar: -C ‘directory' has no effect

第二個命令有什麼問題?

我正在執行 GNU tar 1.34。

這個錯誤…

tar:在歸檔創建或更新模式中的任何非可選參數之後使用了以下選項。這些選項是位置性的,只影響它們後面的參數。請正確地重新排列它們。

tar: -C ‘directory’ 沒有效果

…告訴您該C選項取決於位置。它只影響後面的選項。cTCf因此,當您使用-Cafter編寫時-T,它實際上是一個空操作。它不會影響 tar 解釋由 讀取的文件名的方式-T,並且在它之後沒有任何內容可以應用。

當您考慮在命令行上可以有多個-T和選項時,這可能更容易理解,例如:-C

tar cCTCTf /path/to/dir1 filelist1 /path/to/dir2 filelist2 -

每個-C參數影響以下-T參數(但不影響任何前面的參數)。

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