.\" Copyright Andries Brouwer, Ragnar Hojland Espinosa and A. Wik, 1998. .\" Chinese version Copyright Surran, BitBIRD of www.linuxforum.net .\" .\" This file may be copied under the conditions described .\" in the LDP GENERAL PUBLIC LICENSE, Version 1, September 1998 .\" that should have been distributed together with this file. .\" .TH CP 1 "August 1998" "GNU fileutils 3.16" .SH NAME cp \- 複製檔案和目錄 .SH 總覽 .BI "cp [" "選項" "] " "檔案路徑" .br .BI "cp [" "選項" "] " "檔案...目錄" .sp POSIX 選項: .B [\-fipRr] .sp GNU 參數(最短形式): .B [\-abdfilprsuvxPR] .BI "[\-S " SUFFIX ] .B "[\-V {numbered,existing,simple}]" .BI [\-\-sparse= WHEN ] .B "[\-\-help] [\-\-version] [\-\-]" .SH 描述 .B cp 複製檔案(或者目錄等). 可以使用這個命令複製一個檔案到一個指定的目的地, 或者複製任意多個檔案到一個目的目錄目錄. .PP 如果最後一個命令參數為一個已經存在的目錄名, .B cp 會將每一個源 .I 檔案 複製到那個目錄下(維持原檔名). 如果所給的參數只有兩個檔名.它把前一個檔案複製到後一個檔案上. 如果最後一個參數不是檔名,目錄名,和給出多於兩個非選項參數,是 錯誤的. .PP (因而:如果/b已經存在,那麼'cp -r /a /b'會複製/a到/b而成為/b/a. 而複製/a/x到/b而成為/b/a/x.但如果/b事先不存在,它會把/a複製為/b 而複製/a/x到/b而成為/b/a/x.但如果/b事先不存在,它會把/a複製為/b 而把/a/x複製為/b/x.) .PP 所創建的檔案和/或目錄的模式和原始的檔案的模式是一樣的, 然後用使用者umask值修改(除非使用了\-p選項),(但在遞歸方式 複製目錄時,新建目錄會臨時地獲得他們的最終模式Ored,連同 S_IRWXU(0700),以便進程能夠讀、寫、查找這些新建的目錄. .PP 複製檔案到其自身時它什麼事情都不做(除了可能會生成一條錯誤訊息以外). 當複製到一個現存的不同檔案時,系統調用函數 `open(path,O_WRONLY|O_TRUNC)'打開目的檔案.當複製到一個新檔案時,系 統調用函數`open(path,O_WRONLY|O_CREAT,mode)'創建該檔案.如果這操 作失敗,該檔案存在,和給出了\-f選項, .B cp 試圖先刪除該現存檔案,如果刪除成功則把它當做一個新檔案處理. .SH "POSIX 選項" POSIX 識別四個半選項: .TP .B \-f 如果需要,刪除已存在的目的檔案.(如前所述.) .TP .B \-i 提示是否覆蓋現有普通目標檔案。 (在標準出錯上顯示問題,從標準輸入讀取答案.只有明確確認了才複製檔案.) .TP .B \-p 保留原檔案的所有者、組、權限(包括 setuid 和 setgid 位), 上次修改時間和上次訪問時間。如果製作所有者或組信息的副本時出錯, 則 setuid 和 setgid 位被清空。 (要不然源檔案和副本的上次訪問時間顯然是不同的, 因為複製操作就是對源檔案的訪問.) .TP .B \-R 遞歸複製目錄,如果對象不是普通檔案或目錄那麼做相應正 確處理,(因此,一個 FIFO或者特殊檔案在複製後仍然是一 個 FIFO型或者相應特殊檔案。) .TP .B \-r 遞歸複製目錄,如果對象不是普通檔案或目錄那麼做一些未 聲明處理.(因此,我們允許並鼓勵用 \-r 選項做 \-R 的 同義詞.不過那些愚蠢的特征,像那些在 GNU 版本的 .BR cp 出 現的(見下文)也可以用.) .SH "GNU 細節" .PP 通常,讀寫檔案的方式都是一樣的.例外情況見下面的 .B "\-\-sparse" 選項. .PP 預設情況下,`cp'並不複製目錄(參見下文 .B "\-r" 選項說明). .PP .B cp 通常不會複製檔案到自身,但有以下例外: 如果參數 .B "\-\-force \-\-backup" 與 .I 源檔案 一起給出,並且與 .I 目的檔案 並且指向一個普通檔案, .B cp 將生成一個備份檔案,不是普通的就是編了號的,就像通 常的方法那樣聲明.在你僅僅想對已有的檔案進行備份, 而又不想修改它的時候很有用. .SH "GNU 選項" .TP .B "\-a, \-\-archive" 複製時,盡可能保持檔案的結構和屬性.(但不保持目錄 結構)等同於 .BR "\-dpR" 。 .TP .B "\-d, \-\-no\-dereference" 複製符號鏈接作為符號鏈接而不是複製它指向的檔案, 並且保護在副本中原檔案之間的硬鏈接. .TP .B "\-f, \-\-force" 刪除存在的目標檔案。 (較:原譯文缺下面的部分) .TP .B "\-i, \-\-interactive" 無論是否覆蓋現存檔案都作提示。 .TP .B "\-l, \-\-link" 製作硬鏈接代替非目錄拷貝。 .TP .B "\-p, \-\-preserve" 保持原始檔案的所有者,組,許可,和時間表屬性。 .TP .B "\-P, \-\-parents" 一個斜槓和指定的源檔名構成目的檔案。 最後送給 .B cp 的參數必須是一個已存在的目錄的名字。例如, 下面這個命令: .br .nf cp \-\-parents a/b/c existing_dir .br .fi 複製檔案 `a/b/c' 到 texisting_dir(現有的目錄)/a/b/c',建立任 何缺少的中間目錄。 .TP .B "\-r" 遞歸地複製目錄,複製任何非目錄和非符號鏈接(那是, FIFOs和特別檔案)好像他們是常規的檔案一樣看待.這 意味著嘗試讀出每個源檔案的數據,和把它寫到目的地 上.因而,用這個選項,cp'可能徹底地終止,當不確定地 讀一個FIFO或者/dev/tty時,(這是一個缺陷.它意味著 如果你不知道在這棵樹(目錄)中有什麼要複製的時候, 你不得不避開\-r並使用\-R打開一個未知的設備檔案, 比如說一台掃描儀,會有未知的效果發生在硬體上) .TP .B "\-R, \-\-recursive" 遞歸地複製目錄,保留非目錄(參見上面的 .B "\-r" ). .TP .BI "\-\-sparse=" "WHEN" 一個稀疏file'包容`holes'-佔用0字節,它不佔用任何 物理塊;系統把他們作為0調用read'來讀.由於許多二進 制檔案包容許多連續的0字節,這樣能保存相當的磁碟空 間並且加快速度.省缺情況下, .B cp 通過自然的啟發方式發現在源檔案裏holes並且使相關 的輸出檔案稀疏. .RS .PP .I WHEN 值能夠是下面中的一個: .TP .B auto 預設的行為:如果輸入檔案是稀疏的,輸出檔案也是稀疏的. .TP .B always 總是使輸出檔案稀疏.當輸入檔案所在的檔案系統不支 持稀疏檔案的時候,這是有用的,但是輸出檔案所在的 檔案系統需要(支持稀疏檔案). .TP .B never 從不使輸出檔案稀疏.如果你找到一個需要此選項的應 用程式,讓我們知道. .RE .TP .B "\-s, \-\-symbolic\-link" 生成符號鏈接代替非目錄拷貝.所有的源檔名必須是 絕對的(由`/'開始),除非目的檔案是在當前目錄.這選 項僅僅在系統不支持符號鏈接時引起一個錯誤消息. .TP .B "\-u, \-\-update" 如果存在的目的地有相同的,或者更新的修改時間,不 複製非目錄(檔案). .TP .B "\-v, \-\-verbose" 在複製前印出檔名. .TP .B "\-x, \-\-one\-file\-system" 跳過來自不同檔案系統的子目錄. .SH "GNU 備份選項" GNU 版本程式像 .BR cp , .BR mv , .BR ln , .B install 和 .B patch 會在覆蓋,改變,或者破壞(檔案)前生成一個備份檔案. 那個檔案由\-b選項給出.他們的由\-V選項命名.一般 情況下備份檔名是源檔名加上延伸檔名,這個延伸檔名由\-S 指定. .TP .B "\-b, \-\-backup" 生成關於覆蓋和刪除的備份. .TP .BI "\-S " SUFFIX ", \-\-suffix=" SUFFIX 加入 .I SUFFIX(延伸檔名) 到每個備份檔案. 如果不指定,使用 .B SIMPLE_BACKUP_SUFFIX 環境變量的值.如果連 .B SIMPLE_BACKUP_SUFFIX 都沒有設置,省缺是`~'. .TP .BI "\-V " METHOD ", \-\-version\-control=" METHOD .RS 指定如何命名備份檔案. .I METHOD 能夠是 `numbered' (or `t'), `existing' (or `nil'), or `never' (or `simple'). 如果不指定,使用 .B VERSION_CONTROL 環境變量的值.如果 .B VERSION_CONTROL 也沒有設置,省缺備份檔案類型是 `existing'. .PP 這選項相應Emacs 變量 `version-control'. 有效的 .IR METHOD s 是(接受唯一的縮寫): .TP .BR t ", " numbered 總是產生編號的備份。 .TP .BR nil ", " existing Make numbered backups of files that already have them, simple backups of the others. .TP .BR never ", " simple 總作簡單的備份. .RE .SH "GNU 標準選項" .TP .B "\-\-help" 印出用法並退出. .TP .B "\-\-version" 印出版本信息並退出. .TP .B "\-\-" 結束選項列表. .SH 環境(參數) 變量LANG,LC_ALL,LC_COLLATE,LC_CTYPE和LC_MESSAGES有通常意義. 對於GNU版本,變量SIMPLE_BACKUP_SUFFIX和VERSION_CONTROL控制備份 檔案命名.與上面的描述一樣. .SH "適用到" POSIX 1003.2 .SH 注意 這份 .B cp 的描述和FILEUTils-4.0中找到的是一樣的;另外的版 本也許有些微的差別.修正和新增郵到aeb@cwi.nl. 報告缺陷到fileutils-bugs@gnu.ai.mit.edu. .SH "[中文版維護人]" .B Surran .SH "[中文版最新更新]" .BR 2000/10/19 .SH "《中國linux論壇man手冊頁翻譯計劃》:" .BI http://cmpp.linuxforum.net