一天一个Linux基础命令之复制文件或目录命令cp
cp復制文件或目錄
1、命令格式
cp[OPTION]...?SOURCE...?DIRECTORY2、命令說明
cp命令用來復制文件或者目錄,是Linux系統中最常用的命令之一。一般情況下,shell會設置一個別名,在命令行下復制文件時,如果目標文件已經存在,就會詢問是否覆蓋,不管你是否使用-i參數。但是如果是在shell腳本中執行cp時,沒有-i參數時不會詢問是否覆蓋。這說明命令行和shell腳本的執行方式有些不同。?
將源文件復制到目標文件,源文件可以有多個,目標文件只能有一個
3、命令參數
-a:等于-dR選項一起用,保持所有屬性
-b:當目標文件存在時則備份目標文件,然后把新文件復制過去
-d:當源為鏈接文件時,復制鏈接文件本身而非指向的源文件
-p:復制文件或目錄的時候保持文件的元數據信息,時間戳,屬主,屬組
-f:強制復制,如果文件存在則強制覆蓋不詢問管理員(不好用)
-i:如果文件存在,則詢問管理員是否覆蓋
-L:復制鏈接文件時,總是復制鏈接文件的源文件
-r|-R:復制目錄及目錄中的內容
-n:復制文件時不會覆蓋現有文件
-t:用于源文件有多個的情況下,此時目標文件在前,源文件或目錄在后
-u:復制文件時如果目標文件比源文件新,則不復制
?-v,--verbose:顯示詳細信息
?--help:幫助
?--version:顯示命令版本
4、常用實例
1、復制單個文件到目標目錄中,目標目錄文件不存在
命令:cp login /bak
[root@server~]#?ll total?48 -rw-------.1?root?root??1442?Dec??7?21:28?anaconda-ks.cfg -rw-r--r--.1?root?root???322?Dec?11?21:45?ifuser.sh -rw-r--r--.1?root?root?27312?Dec??7?21:28install.log -rw-r--r--.1?root?root??7572?Dec??7?21:27?install.log.syslog lrwxrwxrwx.1?root?root????14?Dec?11?21:21?login->?/sh/iflogin.sh -rw-------.1?root?root?????0?Dec??9?20:39?yum.log [root@server~]#?ll?/bak/ [root@server~]#?cp?ifuser.sh?/bak/ [root@server~]#?ll?/bak/ total?4 -rw-r--r--.1?root?root??322?Dec?11?21:46?ifuser.sh [root@server~]#提示:在沒帶-p參數時時間是不一樣的,在帶-p參數后時間是一樣的,并且屬主屬組也一樣,-a參數是在-p參數的基礎上在加上-d的功能,-d是復制鏈接文件時,復制鏈接文件并非原文件。
例2:復制文件存在時,詢問是否覆蓋
[root@server~]#?ll?/bak/ total?20 -rw-r--r--.1?root?root?1926?Nov?27??2013CentOS-Base.repo -rw-r--r--.1?root?root??638?Nov?27??2013?CentOS-Debuginfo.repo -rw-r--r--.1?root?root??630?Dec??8?20:43?CentOS-Media.repo -rw-r--r--.1?root?root?3664?Nov?27??2013?CentOS-Vault.repo -rw-r--r--.1?root?root??322?Dec?11?21:46?ifuser.sh [root@server~]#?cp?ifuser.sh?/bak/ cp:overwrite?`/bak/ifuser.sh'??y [root@server~]#?cp?-f?ifuser.sh?/bak/ cp:overwrite?`/bak/ifuser.sh'??y [root@server~]#說明:目標文件存在時,會詢問是否覆蓋。這是因為cp是cp?-i的別名。目標文件存在時,即使加了-f標志,也還會詢問是否覆蓋。
例3:復制整個目錄
命令:cp -r /bak ./
[root@server~]#?ls anaconda-ks.cfg??ifuser.sh?install.log?install.log.syslog??login??yum.log [root@server~]#?cp?-r?/bak/?./ [root@server~]#?ls anaconda-ks.cfg??bak?ifuser.sh??install.log??install.log.syslog??login?yum.log [root@server~]#?cd?bak/ [root@serverbak]#?ls CentOS-Base.repo??CentOS-Debuginfo.repo??CentOS-Media.repo??CentOS-Vault.repo??ifuser.sh [root@serverbak]#提示:./表示當前目錄,復制目錄時,如果目標目錄不存在則創建,如果目標目錄存在則把原文件復制到目標目錄中
例4:復制鏈接文件
命令:cp -d login /bak/
[root@server~]#?ll?/bak/ total?16 -rw-r--r--.1?root?root?1926?Nov?27??2013CentOS-Base.repo -rw-r--r--.1?root?root??638?Nov?27??2013?CentOS-Debuginfo.repo -rw-r--r--.1?root?root??630?Dec??8?20:43?CentOS-Media.repo -rw-r--r--.1?root?root?3664?Nov?27??2013CentOS-Vault.repo [root@server~]#?ll? total?48 -rw-------.1?root?root??1442?Dec??7?21:28?anaconda-ks.cfg -rw-r--r--.1?root?root???322?Dec?11?21:45?ifuser.sh -rw-r--r--.1?root?root?27312?Dec??7?21:28install.log -rw-r--r--.1?root?root??7572?Dec??7?21:27?install.log.syslog lrwxrwxrwx.1?root?root????14?Dec?11?21:21?login->?/sh/iflogin.sh -rw-------.1?root?root?????0?Dec??9?20:39?yum.log [root@server~]#?cp?-d?login?/bak/ [root@server~]#?ll?/bak/ total?16 -rw-r--r--.1?root?root?1926?Nov?27??2013CentOS-Base.repo -rw-r--r--.1?root?root??638?Nov?27??2013?CentOS-Debuginfo.repo -rw-r--r--.1?root?root??630?Dec??8?20:43?CentOS-Media.repo -rw-r--r--.1?root?root?3664?Nov?27??2013CentOS-Vault.repo lrwxrwxrwx.1?root?root???14?Dec?11?22:04?login?->/sh/iflogin.sh [root@server~]#說明:復制鏈接文件時-d是只復制鏈接文件,不復制鏈接文件的原文件
轉載于:https://blog.51cto.com/geekb0y/1881743
總結
以上是生活随笔為你收集整理的一天一个Linux基础命令之复制文件或目录命令cp的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Atitit sql计划任务与查询优化器
- 下一篇: 30分钟带你熟练性能优化的那点儿事儿(案