How to use the command cp (with examples)
The cp
command in Linux is used to copy files and directories from one location to another. It is a widely used command for file manipulation and can be used to copy single files, multiple files, directories, and their contents. The command supports various options to tailor the copy operation to specific requirements.
Use case 1: Copy a file to another location
Code:
cp path/to/source_file.ext path/to/target_file.ext
Motivation: This use case is useful when you want to make a duplicate copy of a file in a different location.
Explanation:
path/to/source_file.ext
: Specifies the path and filename of the source file that you want to copy.path/to/target_file.ext
: Specifies the path and filename of the target file where you want to copy the source file.
Example output: The specified source file will be copied to the specified target location.
Use case 2: Copy a file into another directory, keeping the filename
Code:
cp path/to/source_file.ext path/to/target_parent_directory
Motivation: This use case is handy when you want to copy a file into another directory while preserving the original filename.
Explanation:
path/to/source_file.ext
: Specifies the path and filename of the file that you want to copy.path/to/target_parent_directory
: Specifies the path of the target directory where you want to copy the source file. The filename of the source file will be preserved.
Example output: The specified source file will be copied to the specified target directory with its original filename.
Use case 3: Recursively copy a directory’s contents to another location
Code:
cp -R path/to/source_directory path/to/target_directory
Motivation: This use case is useful when you want to copy the contents of a directory to another location while preserving the directory structure.
Explanation:
-R
: This option stands for “recursive” and allows thecp
command to copy directories and their contents recursively.path/to/source_directory
: Specifies the path of the source directory whose contents you want to copy.path/to/target_directory
: Specifies the path of the target directory where you want to copy the source directory’s contents.
Example output: The contents of the specified source directory will be copied recursively to the specified target directory.
Use case 4: Copy a directory recursively, in verbose mode
Code:
cp -vR path/to/source_directory path/to/target_directory
Motivation: This use case is useful when you want to copy a directory and its contents while also seeing the files being copied in real-time.
Explanation:
-v
: The verbose option shows the files as they are being copied, providing visual feedback during the copy process.-R
: The recursive option enables the copy operation to include directories and their contents.path/to/source_directory
: Specifies the path of the source directory that you want to copy.path/to/target_directory
: Specifies the path of the target directory where you want to copy the source directory and its contents.
Example output: The files and directories being copied from the source directory to the target directory will be displayed in real-time.
Use case 5: Copy multiple files at once to a directory
Code:
cp -t path/to/destination_directory path/to/file1 path/to/file2 ...
Motivation: This use case is convenient when you want to copy multiple files to a specific directory at once.
Explanation:
-t
: The target option allows you to specify the destination directory where the files will be copied.path/to/destination_directory
: Specifies the path of the target directory where you want to copy the files.path/to/file1
,path/to/file2
, …: Specifies the paths of the files that you want to copy.
Example output: The specified files will be copied to the specified target directory.
Use case 6: Copy text files to another location, in interactive mode
Code:
cp -i *.txt path/to/target_directory
Motivation: This use case is helpful when you only want to copy specific files (in this case, text files) to another location while being prompted for confirmation before overwriting existing files.
Explanation:
-i
: The interactive option prompts the user for confirmation before overwriting an existing file.*.txt
: Specifies the files with a “.txt” extension in the current directory that you want to copy.path/to/target_directory
: Specifies the path of the target directory where you want to copy the text files.
Example output: For each text file in the current directory, you will be prompted to confirm the copy operation before overwriting an existing file in the target directory.
Use case 7: Follow symbolic links before copying
Code:
cp -L link path/to/target_directory
Motivation: This use case is useful when you want to copy the target files of symbolic links rather than the links themselves.
Explanation:
-L
: The follow symbolic links option instructs thecp
command to copy the target files of symbolic links, rather than the links themselves.link
: Specifies the symbolic link that you want to copy.path/to/target_directory
: Specifies the path of the target directory where you want to copy the target file(s) of the symbolic link(s).
Example output: The target files of the specified symbolic link will be copied to the specified target directory.
Use case 8: Use the first argument as the destination directory
Code:
cp -t path/to/target_directory path/to/file_or_directory1 path/to/file_or_directory2 ...
Motivation: This use case is helpful when the destination directory is consistent for multiple file or directory copies, saving time and effort.
Explanation:
-t
: The target option specifies the destination directory for the copy operation.path/to/target_directory
: Specifies the destination directory for the file or directory copies.path/to/file_or_directory1
,path/to/file_or_directory2
, …: Specifies the path of the file(s) or directory(ies) that you want to copy.
Example output: The specified files or directories will be copied to the specified target directory.
Conclusion:
The cp
command in Linux is a powerful tool for copying files and directories with various options and functionalities. Whether it is a single file, multiple files, directories, or their contents, the cp
command provides flexibility and control over the copy operations. Understanding the different use cases and their respective arguments empowers users to effectively utilize the cp
command for their file manipulation needs in the Linux environment.