automated terminal push
This commit is contained in:
103
landing/docs/Linux-Commands/Working-With-Files/031-the-cp-command.md
Executable file
103
landing/docs/Linux-Commands/Working-With-Files/031-the-cp-command.md
Executable file
@@ -0,0 +1,103 @@
|
||||
# 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|
|
||||
Reference in New Issue
Block a user