Bash
在組合命令的不同選項時正確的順序
每當針對某個命令使用多個選項時,我通常會將選項組合在一起。例如,如果我想創建一個存檔使用
tar
我會寫tar -cvf archive.tar file1 file2
但我的疑問是如何知道我必須將選項組合在一起的正確順序。如果我使用tar -cfv archive.tar file1 file2
它會顯示錯誤。我也遇到過許多其他命令的這個問題。我知道這是一個非常愚蠢的懷疑,但我很難通過它。我也檢查了man
命令的描述,但他們在概要部分指定了一個特定的序列。我找不到與按特定順序組合選項相關的內容。
任何給定命令的手冊將準確描述如何使用其選項。
在這種情況下,該
-f
選項採用文件名參數。一個選項的參數(如果它需要一個)必須放在它之後。在您的第一個tar
命令中,此文件名參數是archive.tar
,但在您的第二個命令中是v
.第二個命令嘗試
v
從三個文件archive.tar
file1
. 和file2
. 由於archive.tar
可能不存在,因此您會收到有關此的錯誤消息。同樣,
tar
手冊將對此進行描述。GNUtar
手冊說tar -c [-f ARCHIVE] [OPTIONS] [FILE...]
所以很明顯,它
-f
採用了檔案的名稱。再往下一點,上面寫著
-f
,--file=ARCHIVE
使用存檔文件或設備
ARCHIVE
。$$ … $$
您使用的其他選項
-c
和-v
不帶參數。此外,通常,選項位於文件操作數之前。一些 GNU 工具允許您在命令行的最後添加選項,如
tar -c -f archive.tar file1 file2 -v
但這是(恕我直言)不好的風格,它會在許多其他 Unices 上中斷(
-v
將被解釋為文件名)。
tar
按照大綱中的形式編寫命令的 100% 正確方法是tar -c -f archive.tar -v file1 file2