cp 是個很經常使用的命令,安全
基本語法爲 cp -v a b 把文件a 複製爲文件b(-v爲顯示作了什麼,這是很是安全的作法,建議新手添加此參數)spa
參數說明:權限
-a:此選項一般在複製目錄時使用,它保留連接、文件屬性,並複製目錄下的全部內容。其做用等於-dR 或者 --preserve=all語法
-d:複製時保留連接。這裏所說的連接至關於Windows系統中的快捷方式。新手
-f:覆蓋已經存在的目標文件而不給出提示。文件
-i:與-f選項相反,在覆蓋目標文件以前給出提示,要求用戶確認是否覆蓋,回答"y"時目標文件將被覆蓋。(通常狀況下系統別名已自動添加此參數)時間
-p:除複製文件的內容外,還把修改時間和訪問權限也複製到新文件中。生成
-r:若給出的源文件是一個目錄文件,此時將複製該目錄下全部的子目錄和文件。參數
-l:不復制文件,而是生成 硬連接系統
-s :不復制文件,而是生成 軟連接
-v: 顯示cp指令作了什麼
場景:cp -v a b 把文件a拷貝爲文件b,二者類似而不相同
坑1: b爲已存在目錄時, a會被複制到 目錄b下(新手會出現的)
正確指令:
想複製文件自己時: cp -T a b (b與a不是相同屬性時會報錯並且複製不了)
想複製到目標目錄下時: cp a b/ (b爲非目錄時會報錯)
坑2: a 爲軟鏈接的狀況下, 複製後的文件會是a所鏈接文件的拷貝
坑3: 基於坑2, cp -r 時, 複製後的文件也會是軟鏈接,指向目錄也會相同(不過基本上都是失效)
正確指令:
想複製結果也是軟鏈接時: cp -sr a b 或 cp -s a b
想複製結果爲軟鏈接的目標時:cp -Lr a b 或 cp -L a b
坑4:cp -l 千萬不要用這個參數,由於這個是硬鏈接!!!