All checks were successful
learn org at code.softwareshinobi.com/linux.softwareshinobi.com/pipeline/head This commit looks good
104 lines
3.5 KiB
Markdown
104 lines
3.5 KiB
Markdown
# The `cp` command
|
|
|
|
The `cp` is a command-line utility for copying files and directory.
|
|
`cp` stands for copy. This command is used to copy files or group of files or directory. It creates an exact image of a file on a disk with different file name. The cp command requires at least two filenames in its arguments.
|
|
|
|
### Examples:
|
|
|
|
1. To copy the contents of the source file to the destination file.
|
|
|
|
```
|
|
cp sourceFile destFile
|
|
```
|
|
|
|
If the destination file doesn't exist then the file is created and the content is copied to it. If it exists then the file is overwritten.
|
|
|
|
2. To copy a file to another directory specify the absolute or the relative path to the destination directory.
|
|
|
|
```
|
|
cp sourceFile /folderName/destFile
|
|
```
|
|
|
|
3. To copy a directory, including all its files and subdirectories
|
|
|
|
```
|
|
cp -R folderName1 folderName2
|
|
```
|
|
|
|
The command above creates the destination directory and recursively copies all files and subdirectories from the source to the destination directory.
|
|
|
|
If the destination directory already exists, the source directory itself and its content are copied inside the destination directory.
|
|
|
|
4. To copy only the files and subdirectories but not the source directory
|
|
|
|
```
|
|
cp -RT folderName1 folderName2
|
|
```
|
|
|
|
### Syntax:
|
|
|
|
The general syntax for the cp command is as follows:
|
|
|
|
```
|
|
cp [OPTION] SOURCE DESTINATION
|
|
cp [OPTION] SOURCE DIRECTORY
|
|
cp [OPTION] SOURCE-1 SOURCE-2 SOURCE-3 SOURCE-n DIRECTORY
|
|
```
|
|
|
|
The first and second syntax is used to copy Source file to Destination file or Directory.
|
|
The third syntax is used to copy multiple Sources(files) to Directory.
|
|
|
|
#### Some useful options
|
|
|
|
1. `-i` (interactive)
|
|
`i` stands for Interactive copying. With this option system first warns the user before overwriting the destination file. cp prompts for a response, if you press y then it overwrites the file and with any other option leave it uncopied.
|
|
|
|
```
|
|
$ cp -i file1.txt fileName2.txt
|
|
cp: overwrite 'file2.txt'? y
|
|
```
|
|
|
|
2. `-b`(backup)
|
|
-b(backup): With this option cp command creates the backup of the destination file in the same folder with the different name and in different format.
|
|
|
|
```
|
|
$ ls
|
|
a.txt b.txt
|
|
|
|
$ cp -b a.txt b.txt
|
|
|
|
$ ls
|
|
a.txt b.txt b.txt~
|
|
```
|
|
|
|
3. `-f`(force)
|
|
If the system is unable to open destination file for writing operation because the user doesn't have writing permission for this file then by using -f option with cp command, destination file is deleted first and then copying of content is done from source to destination file.
|
|
```
|
|
$ ls -l b.txt
|
|
-r-xr-xr-x+ 1 User User 3 Nov 24 08:45 b.txt
|
|
```
|
|
User, group and others doesn't have writing permission.
|
|
|
|
Without `-f` option, command not executed
|
|
|
|
```
|
|
$ cp a.txt b.txt
|
|
cp: cannot create regular file 'b.txt': Permission denied
|
|
```
|
|
|
|
With -f option, command executed successfully
|
|
```
|
|
$ cp -f a.txt b.txt
|
|
```
|
|
|
|
### Additional Flags and their Functionalities:
|
|
|
|
|**Short Flag** |**Long Flag** |**Description** |
|
|
|:---|:---|:---|
|
|
|`-i`|<center>--interactive</center>|prompt before overwrite|
|
|
|`-f`|<center>--force</center>|If an existing destination file cannot be opened, remove it and try again|
|
|
|`-b`|<center>-</center>|Creates the backup of the destination file in the same folder with the different name and in different format.|
|
|
|`-r or -R`|`--recursive`|**cp** command shows its recursive behavior by copying the entire directory structure recursively.|
|
|
|`-n`|`--no-clobber`|do not overwrite an existing file (overrides a previous -i option)|
|
|
|`-p`|<center>-</center>|preserve the specified attributes (default: mode,ownership,timestamps), if possible additional attributes: context, links, xattr, all|
|