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| |