2013-11-20 67 views
0

有兩個父母A和B以及許多子代和文件。當坐在父母B中時,輸入這兩個命令;他們有什麼區別?cp之間的區別

cp -r /path/to/A/* * 

cp -r /path/to/A/* . 
+1

如果目錄'A'有多個文件或目錄,'cp -r/path/to/A/* *'是不正確的。 – vidit

+1

@vidit ...雖然它會起作用(並且做了不想要的可怕事情),如果最後由'*'擴展的最後一項恰好是一個目錄... – twalberg

回答

1

,除非你是魯莽你絕不會鍵入的第一個命令:自身擴張

*在當前每個非隱藏的文件/目錄的名稱目錄。因此我們假設/path/to/A包含兩個子目錄(spoonfork),並且當前目錄包含三個子目錄(foobarbaz)。這意味着外殼將其解釋你的第一個命令:

cp -r /path/to/A/fork /path/to/A/spoon bar baz foo 

換句話說,遞歸複製/path/to/A/fork/path/to/A/spoonbarbazfoo(在捎來最後按字母順序排列的當前目錄中的項目)。所以你最終會得到foo下的四個新目錄:foo/forkfoo/spoon,foo/barfoo/baz

你的第二個命令意味着遞歸地將/path/to/A/spoon/path/to/A/fork複製到當前目錄中。這將在當前目錄中創建兩個新的子目錄(forkspoon)。