Linux Command (8): cp command, linux Command cp
The cp command is used to copy files or directories. It is one of the most common commands in Linux. In general, shell sets an alias. When copying a file under the command line, if the target file already exists, it will ask whether to overwrite the file, whether or not you use the-I parameter. However, if the cp is executed in a shell script, if the-I parameter is not displayed, the system does not ask whether to overwrite it. This indicates that the command line and shell script are executed differently.
1. Command Format:
Usage:
Cp [Option]... [-T] source objective
Or: cp [Option]... source... directory
Or: cp [Option]...-t directory source...
2. command functions:
Copy the source file to the target file, or copy multiple source files to the target directory.
3. command parameters:
-A, -- archive equals to-dR -- preserve = all
-- Backup [= CONTROL creates a backup for each existing target file
-B is similar to -- backup but does not accept parameters
-- Copy-contents: In recursive processing, copying special file content
-D equals -- no-dereference -- preserve = links
-F, -- force: if the target file cannot be opened, remove it and try again (when-n Option
This option does not need to be selected if it exists)
-I, -- interactive overwrite the previous query (invalidate the previous-n option)
-H follows the command line symbolic link in the source file
-L, -- link file without copying
-L, -- dereference always follows the Symbolic Link
-N, -- no-clobber do not overwrite existing files (invalidate the previous-I option)
-P, -- no-dereference does not follow the symbolic link in the source file
-P equals to -- preserve = mode, ownership, timestamp
-- Preserve [= the attribute list retains the specified attribute (default: mode, ownership, timestamp). If
Additional attributes may be maintained: environment, Link, xattr, etc.
-R,-r, -- recursive: copy the Directory and all projects in the directory
4. Command instance:
Example 1: copy a single file to the target directory. The file does not exist in the target file.
Command:
Cp log. log test5
Output:
[Root @ localhost test] # cp log. log test5
[Root @ localhost test] # ll
-Rw-r -- 1 root 0 10-28 log. log
Drwxr-xr-x 6 root 4096 10-27 0scf
Drwxrwxrwx 2 root 4096 10-28 test3
Drwxr-xr-x 2 root 4096 10-28 test5
[Root @ localhost test] # cd test5
[Root @ localhost test5] # ll
-Rw-r -- 1 root 0 10-28 log5-1.log
-Rw-r -- 1 root 0 10-28 log5-2.log
-Rw-r -- 1 root 0 10-28 log5-3.log
-Rw-r -- 1 root 0 10-28 14:53 log. log
Note:
When the-a parameter is not included, the time of the two files is different. When the-a parameter is included, the time of the two files is the same.
Example 2: If the target file exists, you will be asked if it is overwritten.
Command:
Cp log. log test5
Output:
[Root @ localhost test] # cp log. log test5
Cp: overwrite "test5/log. log "? N
[Root @ localhost test] # cp-a log. log test5
Cp: overwrite "test5/log. log "? Y
[Root @ localhost test] # cd test5/
[Root @ localhost test5] # ll
-Rw-r -- 1 root 0 10-28 log5-1.log
-Rw-r -- 1 root 0 10-28 log5-2.log
-Rw-r -- 1 root 0 10-28 log5-3.log
-Rw-r -- 1 root 0 10-28 log. log
Note:
If the target file exists, you will be asked whether to overwrite it. This is because cp is the alias of cp-I. When the target file exists, even if the-f flag is added, the system will also ask whether to overwrite the file.
Example 3: copy the entire directory
Command:
Output:
When the target directory exists:
[Root @ localhost test] # cp-a test3 test5
[Root @ localhost test] # ll
-Rw-r -- 1 root 0 10-28 log. log
Drwxr-xr-x 6 root 4096 10-27 0scf
Drwxrwxrwx 2 root 4096 10-28 test3
Drwxr-xr-x 3 root 4096 10-28 test5
[Root @ localhost test] # cd test5/
[Root @ localhost test5] # ll
-Rw-r -- 1 root 0 10-28 log5-1.log
-Rw-r -- 1 root 0 10-28 log5-2.log
-Rw-r -- 1 root 0 10-28 log5-3.log
-Rw-r -- 1 root 0 10-28 log. log
Drwxrwxrwx 2 root 4096 10-28 test3
The target directory does not exist:
[Root @ localhost test] # cp-a test3 test4
[Root @ localhost test] # ll
-Rw-r -- 1 root 0 10-28 log. log
Drwxr-xr-x 6 root 4096 10-27 0scf
Drwxrwxrwx 2 root 4096 10-28 test3
Drwxrwxrwx 2 root 4096 10-28 test4
Drwxr-xr-x 3 root 4096 10-28 test5
[Root @ localhost test] #
Note:
Note that the results of the existence of the target directory are different. If the target directory exists, the entire source directory is copied to the target directory.
Example 4: Create a log_link.log link for the copied log. log
Command:
Cp-s log. log log_link.log
Output:
[Root @ localhost test] # cp-s log. log log_link.log
[Root @ localhost test] # ll
Lrwxrwxrwx 1 root 7 10-28 log_link.log-> log. log
-Rw-r -- 1 root 0 10-28 log. log
Drwxr-xr-x 6 root 4096 10-27 0scf
Drwxrwxrwx 2 root 4096 10-28 test3
Drwxrwxrwx 2 root 4096 10-28 test4
Drwxr-xr-x 3 root 4096 10-28 test5
Note:
The log_link.log is caused by the-s parameter and is created with a "shortcut". Therefore, you can see that it is on the rightmost side of the file, the location where the file is linked is displayed!