FREEBSD和linux拷背目錄的差別
原本以為沒什麼不同的東西,竟然有這種差別
in FREEBSD
今天要把目錄 dir/ 拷背到相對位置 path/to/,
我希望變成這樣子:
path/to/dir/
很自然的下了這個指令
# cp -r dir/ path/to/
結果發現系統把dir下的所有檔案 dir/* 全丟到 path/to/而不是我想像中的複製一整個目錄到 ../path/to/
換句話說,我的目錄名稱 dir 整個不見了,打個比方:
就像把箱子裡面的東西倒到新的箱子,然後原來的箱子就丟了。
但是我原本的想法是把原有的箱子和裡面的東西放到新的箱子裡。
這和我之前的認知有衝突,所以想了一下,拿掉dir後面的 '/' 就OK了
# cp -r dir path/to/
我之前認知是有沒有那個'/'的結果會一樣,所以從來沒發現Freebsd會有這個差異
inLINUX
於是到 linux 下試一下,兩者的結果是一樣的(都是把dir的箱子放到path/to的箱子裡)
$ cp -r dir path/to/
或
$ cp -r dir/ path/to/
至於只要拷背檔案的話
$ cp dir/* path/to/
inMAC
我發現在MAC裡面竟然和FREEBSD一樣
$ cp -r dir path/to/ (把dir的箱子放到path/to的箱子裡)
或
$ cp -r dir/ path/to/ (把dir箱裡的東西倒到path/to的箱子裡)
結論
1 來源目錄最後有加'/',在FREEBSD和IOS中是把裡面的東西倒出來
2. 來源目錄最後有無加'/',在LINUX裡沒有差異
3. mv指令不必加 -r ,和cp不同,全部都沒有差異。換句話說,來源目錄最後有沒有加上'/'都沒影響是搬移整個目錄。
奇思妙想:根據生物演化的化石痕跡(例如鯨魚的後肢是和脊椎不相連的兩塊骨片),IOS和FREEBSD的血源也許比較近呢~~
編修原文 2009-11-01 02:02:50