cp 中文man頁面
cp - 復(fù)制文件和目錄
總覽
cp [選項] 文件路徑
cp [選項] 文件...目錄
POSIX 選項: [-fipRr]
GNU 參數(shù)(最短形式): [-abdfilprsuvxPR] [-S SUFFIX] [-V {numbered,existing,simple}] [--sparse=WHEN] [--help] [--version] [--]
描述
cp 復(fù)制文件(或者目錄等). 可以使用這個命令復(fù)制一個文件到一個指定的目的地, 或者復(fù)制任意多個文件到一個目的目錄目錄.
如果最后一個命令參數(shù)為一個已經(jīng)存在的目錄名, cp 會將每一個源 文件 復(fù)制到那個目錄下(維持原文件名). 如果所給的參數(shù)只有兩個文件名.它把前一個文件復(fù)制到后一個文件上. 如果最后一個參數(shù)不是文件名,目錄名,和給出多于兩個非選項參數(shù),是錯誤的.
(因而:如果/b已經(jīng)存在,那么'cp -r /a /b'會復(fù)制/a到/b而成為/b/a. 而復(fù)制/a/x到/b而成為/b/a/x.但如果/b事先不存在,它會把/a復(fù)制為/b 而復(fù)制/a/x到/b而成為/b/a/x.但如果/b事先不存在,它會把/a復(fù)制為/b 而把/a/x復(fù)制為/b/x.)
所創(chuàng)建的文件和/或目錄的模式和原始的文件的模式是一樣的,然后用用戶umask值修改(除非使用了-p選項),(但在遞歸方式復(fù)制目錄時,新建目錄會臨時地獲得他們的最終模式Ored,連同 S_IRWXU(0700),以便進程能夠讀、寫、查找這些新建的目錄.
復(fù)制文件到其自身時它什么事情都不做(除了可能會生成一條錯誤信息以外). 當復(fù)制到一個現(xiàn)存的不同文件時,系統(tǒng)調(diào)用函數(shù) `open(path,O_WRONLY|O_TRUNC)'打開目的文件.當復(fù)制到一個新文件時,系統(tǒng)調(diào)用函數(shù)`open(path,O_WRONLY|O_CREAT,mode)'創(chuàng)建該文件.如果這操作失敗,該文件存在,和給出了-f選項, cp 試圖先刪除該現(xiàn)存文件,如果刪除成功則把它當做一個新文件處理.
POSIX 選項
POSIX 識別四個半選項:
- -f
- 如果需要,刪除已存在的目的文件.(如前所述.)
- -i
- 提示是否覆蓋現(xiàn)有普通目標文件。 (在標準出錯上顯示問題,從標準輸入讀取答案.只有明確確認了才復(fù)制文件.)
- -p
- 保留原文件的所有者、組、權(quán)限(包括 setuid 和 setgid 位),上次修改時間和上次訪問時間。如果制作所有者或組信息的副本時出錯,則 setuid 和 setgid 位被清空。(要不然源文件和副本的上次訪問時間顯然是不同的,因為復(fù)制操作就是對源文件的訪問.)
- -R
- 遞歸復(fù)制目錄,如果對象不是普通文件或目錄那么做相應(yīng)正確處理,(因此,一個 FIFO或者特殊文件在復(fù)制后仍然是一個 FIFO型或者相應(yīng)特殊文件。)
- -r
- 遞歸復(fù)制目錄,如果對象不是普通文件或目錄那么做一些未聲明處理.(因此,我們允許并鼓勵用 -r 選項做 -R 的同義詞.不過那些愚蠢的特征,象那些在 GNU 版本的 cp 出現(xiàn)的(見下文)也可以用.)
GNU 細節(jié)
通常,讀寫文件的方式都是一樣的.例外情況見下面的 --sparse 選項.
缺省情況下,`cp'并不復(fù)制目錄(參見下文 -r 選項說明).
cp 通常不會復(fù)制文件到自身,但有以下例外:如果參數(shù) --force --backup 與 源文件 一起給出,并且與 目的文件 并且指向一個普通文件, cp 將生成一個備份文件,不是普通的就是編了號的,就象通常的方法那樣聲明.在你僅僅想對已有的文件進行備份, 而又不想修改它的時候很有用.
GNU 選項
- -a, --archive
- 復(fù)制時,盡可能保持文件的結(jié)構(gòu)和屬性.(但不保持目錄結(jié)構(gòu))等同于 -dpR。
- -d, --no-dereference
- 復(fù)制符號鏈接作為符號鏈接而不是復(fù)制它指向的文件, 并且保護在副本中原文件之間的硬鏈接.
- -f, --force
- 刪除存在的目標文件。(較:原譯文缺下面的部分)
- -i, --interactive
- 無論是否覆蓋現(xiàn)存文件都作提示。
- -l, --link
- 制作硬鏈接代替非目錄拷貝。
- -p, --preserve
- 保持原始文件的所有者,組,許可,和時間表屬性。
- -P, --parents
- 一個斜杠和指定的源文件名構(gòu)成目的文件。最后送給 cp 的參數(shù)必須是一個已存在的目錄的名字。例如, 下面這個命令:
cp --parents a/b/c existing_dir
復(fù)制文件 `a/b/c' 到 texisting_dir(現(xiàn)有的目錄)/a/b/c',建立任何缺少的中間目錄。
- -r
- 遞歸地復(fù)制目錄,復(fù)制任何非目錄和非符號鏈接(那是, FIFOs和特別文件)好象他們是常規(guī)的文件一樣看待.這意味著嘗試讀出每個源文件的數(shù)據(jù),和把它寫到目的地上.因而,用這個選項,cp'可能徹底地終止,當不確定地讀一個FIFO或者/dev/tty時,(這是一個缺陷.它意味著如果你不知道在這棵樹(目錄)中有什么要復(fù)制的時候, 你不得不避開-r并使用-R打開一個未知的設(shè)備文件, 比如說一臺掃描儀,會有未知的效果發(fā)生在硬件上)
- -R, --recursive
- 遞歸地復(fù)制目錄,保留非目錄(參見上面的 -r ).
- --sparse=WHEN
- 一個稀疏file'包容`holes'-占用0字節(jié),它不占用任何物理塊;系統(tǒng)把他們作為0調(diào)用read'來讀.由于許多二進制文件包容許多連續(xù)的0字節(jié),這樣能保存相當?shù)拇疟P空間并且加快速度.省缺情況下, cp 通過自然的啟發(fā)方式發(fā)現(xiàn)在源文件里holes并且使相關(guān)的輸出文件稀疏.
-
WHEN 值能夠是下面中的一個:
- auto
- 默認的行為:如果輸入文件是稀疏的,輸出文件也是稀疏的.
- always
- 總是使輸出文件稀疏.當輸入文件所在的文件系統(tǒng)不支持稀疏文件的時候,這是有用的,但是輸出文件所在的文件系統(tǒng)需要(支持稀疏文件).
- never
- 從不使輸出文件稀疏.如果你找到一個需要此選項的應(yīng)用程序,讓我們知道.
-
- -s, --symbolic-link
- 生成符號鏈接代替非目錄拷貝.所有的源文件名必須是絕對的(由`/'開始),除非目的文件是在當前目錄.這選項僅僅在系統(tǒng)不支持符號鏈接時引起一個錯誤消息.
- -u, --update
- 如果存在的目的地有相同的,或者更新的修改時間,不復(fù)制非目錄(文件).
- -v, --verbose
- 在復(fù)制前印出文件名.
- -x, --one-file-system
- 跳過來自不同文件系統(tǒng)的子目錄.
GNU 備份選項
GNU 版本程序象 cp, mv, ln, install 和 patch 會在覆蓋,改變,或者破壞(文件)前生成一個備份文件. 那個文件由-b選項給出.他們的由-V選項命名.一般情況下備份文件名是源文件名加上后綴,這個后綴由-S 指定.
- -b, --backup
- 生成關(guān)于覆蓋和刪除的備份.
- -S SUFFIX, --suffix=SUFFIX
- 加入 SUFFIX(后綴) 到每個備份文件. 如果不指定,使用 SIMPLE_BACKUP_SUFFIX 環(huán)境變量的值.如果連 SIMPLE_BACKUP_SUFFIX 都沒有設(shè)置,省缺是`~'.
- -V METHOD, --version-control=METHOD
- 指定如何命名備份文件. METHOD 能夠是 `numbered' (or `t'), `existing' (or `nil'), or `never' (or `simple'). 如果不指定,使用 VERSION_CONTROL 環(huán)境變量的值.如果 VERSION_CONTROL 也沒有設(shè)置,省缺備份文件類型是 `existing'.
這選項相應(yīng)Emacs 變量 `version-control'. 有效的 METHODs 是(接受唯一的縮寫):
- t, numbered
- 總是產(chǎn)生編號的備份。
- nil, existing
- Make numbered backups of files that already have them, simple backups of the others.
- never, simple
- 總作簡單的備份.
- 指定如何命名備份文件. METHOD 能夠是 `numbered' (or `t'), `existing' (or `nil'), or `never' (or `simple'). 如果不指定,使用 VERSION_CONTROL 環(huán)境變量的值.如果 VERSION_CONTROL 也沒有設(shè)置,省缺備份文件類型是 `existing'.
GNU 標準選項
- --help
- 印出用法并退出.
- --version
- 印出版本信息并退出.
- --
- 結(jié)束選項列表.
環(huán)境(參數(shù))
變量LANG,LC_ALL,LC_COLLATE,LC_CTYPE和LC_MESSAGES有通常意義. 對于GNU版本,變量SIMPLE_BACKUP_SUFFIX和VERSION_CONTROL控制備份文件命名.與上面的描述一樣.
適用到
POSIX 1003.2
注意
這份 cp 的描述和FILEUTils-4.0中找到的是一樣的;另外的版本也許有些微的差別.修正和新增郵到aeb@cwi.nl. 報告缺陷到fileutils-bugs@gnu.ai.mit.edu.
#p#
NAME
cp - copy files and directories
SYNOPSIS
cp [OPTION]... SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... --target-directory=DIRECTORY SOURCE...
DESCRIPTION
Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
Mandatory arguments to long options are mandatory for short options too.
- -a, --archive
- same as -dpR
- --backup[=CONTROL]
- make a backup of each existing destination file
- -b
- like --backup but does not accept an argument
- --copy-contents
- copy contents of special files when recursive
- -d
- same as --no-dereference --preserve=link
- --no-dereference
- never follow symbolic links
- -f, --force
- if an existing destination file cannot be opened, remove it and try again
- -i, --interactive
- prompt before overwrite
- -H
- follow command-line symbolic links
- -l, --link
- link files instead of copying
- -L, --dereference
- always follow symbolic links
- -p
- same as --preserve=mode,ownership,timestamps
- --preserve[=ATTR_LIST]
- preserve the specified attributes (default: mode,ownership,timestamps) and security contexts, if possible additional attributes: links, all
- --no-preserve=ATTR_LIST
- don't preserve the specified attributes
- --parents
- append source path to DIRECTORY
- -P
- same as `--no-dereference'
- -R, -r, --recursive
- copy directories recursively
- --remove-destination
- remove each existing destination file before attempting to open it (contrast with --force)
- --reply={yes,no,query}
- specify how to handle the prompt about an existing destination file
- --sparse=WHEN
- control creation of sparse files
- --strip-trailing-slashes remove any trailing slashes from each SOURCE
- argument
- -s, --symbolic-link
- make symbolic links instead of copying
- -S, --suffix=SUFFIX
- override the usual backup suffix
- --target-directory=DIRECTORY
- move all SOURCE arguments into DIRECTORY
- -u, --update
- copy only when the SOURCE file is newer than the destination file or when the destination file is missing
- -v, --verbose
- explain what is being done
- -x, --one-file-system
- stay on this file system
- --help
- display this help and exit
- -Z, --context=CONTEXT
- set security context of copy to CONTEXT
- --version
- output version information and exit
By default, sparse SOURCE files are detected by a crude heuristic and the corresponding DEST file is made sparse as well. That is the behavior selected by --sparse=auto. Specify --sparse=always to create a sparse DEST file whenever the SOURCE file contains a long enough sequence of zero bytes. Use --sparse=never to inhibit creation of sparse files.
The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX. The version control method may be selected via the --backup option or through the VERSION_CONTROL environment variable. Here are the values:
- none, off
- never make backups (even if --backup is given)
- numbered, t
- make numbered backups
- existing, nil
- numbered if numbered backups exist, simple otherwise
- simple, never
- always make simple backups
As a special case, cp makes a backup of SOURCE when the force and backup options are given and SOURCE and DEST are the same name for an existing, regular file.
AUTHOR
Written by Torbjorn Granlund, David MacKenzie, and Jim Meyering.
REPORTING BUGS
Report bugs to <bug-coreutils@gnu.org>.
COPYRIGHT
Copyright © 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
SEE ALSO
The full documentation for cp is maintained as a Texinfo manual. If the info and cp programs are properly installed at your site, the command
- info coreutils cp
should give you access to the complete manual.