關於Linux中CP命令用法的一些冷知識

2021-07-15 16:07:30 字數 1686 閱讀 8285

在linux中,cp命令是乙個非常好用的檔案複製命令。關於cp命令一些比較偏門的知識,這裡進行梳理一下

1、cp命令能夠使用的前提是對於要複製的檔案,cp命令的執行者至少要具備讀許可權r,這是因為複製檔案至少要知道檔案的內容吧。就像乙個可執行檔案,如果它的許可權是可讀,那麼證明執行者至少可以閱讀檔案的源**,既然可以閱讀了,那麼複製乙個跟他模仿源**自己再寫乙個道理是一樣的。所以檔案可讀就證明它可以被複製了。

2、在沒有加引數的情況下,cp命令會複製執行者的許可權與屬性,這句話怎麼理解呢?首先檔案的所有者和使用者組會變成執行者。如下圖1可知,當使用者pang使用cp命令複製root使用者的檔案06.sh成07.sh時,檔案所有者和使用者組都變成了pang,時間也改變了。這裡可以看到使用者許可權有rwxr--r--變成了rwxr--rw-,這是因為執行了chmod命令修改了許可權而已,其實它本來是rwxr--r--,至於為什麼要修改呢,只是為了接下來更方便的進行演示。同理,08.sh,09.sh,10.sh,11.sh都是對應的執行者分別執行cp命令得到的,可以看到它們的所有者和群組都發生了相應的改變。

3、從圖一可以看出,由使用者zheng複製pang的檔案07.sh到08.sh時,w許可權並沒有複製過來,而其它的複製好像把許可權一模一樣的複製過來了,為什麼呢?首先我們得引入預設許可權的概念。什麼是預設許可權,也就是說使用者建立乙個檔案或者乙個目錄時候的預設許可權。明確一點是,這裡所說的預設許可權由兩部分組成。第一部分的預設許可權,就是系統自帶的,建立的檔案預設為rw-rw-rw-,沒有x許可權是因為預設一般檔案不具備可執行能力。而目錄預設許可權是rwxrwxrwx.第二部分預設許可權就要用到umask這個命令了。關於umask的簡單用法就是在對應使用者下輸入umask命令,就會顯示4位數字,例如0002,第一位不用管,那是跟特殊許可權有關。剩下的三位分別代表所有者,使用者組,其他人的對應數字。用第一部分的預設許可權減去第二部分的預設許可權,就是真正預設許可權。圖2顯示了不同身份的使用者的umask

可以看到,root要從本來的rw-rw-rw-中減去022,就是減去----w--w-,那麼實際root使用者建立乙個檔案時候,預設的屬性就是rw-r--r--,參考圖1,haha.txt就是root使用者用touch命令建立的。而一般使用者就是減去002,就是減去-------w-,也就是變成rw-rw-r--,參考圖3,使用者zheng建立了乙個空檔案ha.txt,預設許可權正是如此

那麼回到剛剛的問題,為什麼zheng使用者的檔案08.sh沒有把pang使用者的檔案07.sh的w許可權複製過來呢?因為在複製時,把07.sh的本來的許可權rwxr--rw-看成是第一部分預設許可權,再與zheng的第二部分預設許可權002(-------w-)相減,就剩下了rwxr--r--了。可以再做一些變化來進行驗證一下。

可以看到,當pang得07.sh的許可權為rwxr--rwx時,zheng複製為12.sh所以許可權為第一部分許可權rwxr--rwx減去002(-------w-)得到rwxr--r-x。這樣可以理解cp後的屬性變化情況了吧。

linux中的cp命令

示例 複製檔案,只有原始檔較目的檔案的修改時間新時,才複製檔案 cp u v file1 file2 將檔案file1複製成檔案file2 cp file1 file2 採用互動方式將檔案file1複製成檔案file2 cp i file1 file2 將檔案file1複製成file2,因為目的檔案...

Linux中的cp命令

linux中cp命令用來賦值檔案或者目錄,其常用的命令選項如下 下面是cp命令的一些使用示例 預設情況下,cp命令賦值出來的許可權或者屬性通常 自操作者本身。比如上面在root身份在執行cp命令,將 var log wtmp賦值到 tmp wtmp,此時 tmp wtmp檔案的許可權與所屬群組已經不...

cp命令用法

cp命令用來將乙個或多個原始檔或者目錄複製到指定的目的檔案或目錄。它可以將單個原始檔複製成乙個指定檔名的具體的檔案或乙個已經存在的目錄下。cp命令還支援同時複製多個檔案,當一次複製多個檔案時,目標檔案引數必須是乙個已經存在的目錄,否則將出現錯誤。cp 選項 引數 a 此引數的效果和同時指定 dpr ...