Tar
舊式語法下(GNU)tar 參數的順序?
在 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
因此,當您使用-C
after編寫時-T
,它實際上是一個空操作。它不會影響 tar 解釋由 讀取的文件名的方式-T
,並且在它之後沒有任何內容可以應用。當您考慮在命令行上可以有多個
-T
和選項時,這可能更容易理解,例如:-C
tar cCTCTf /path/to/dir1 filelist1 /path/to/dir2 filelist2 -
每個
-C
參數影響以下-T
參數(但不影響任何前面的參數)。