Comprehensive Guide to the ‘cp’ Command: Mastering Terminal File Management

In Unix-based systems such as macOS or Linux, the command-line interface offers a suite of powerful tools for managing files and directories. Among these tools, the cp command is an essential one for duplicating files and directories. In this article, we’ll deep-dive into using the cp command, helping you to manage your system’s files more effectively.

Understanding the ‘cp’ Command

The cp command, short for “copy”, is used to make copies of files and directories in a Unix-like system. The basic syntax of the cp command is as follows:

cp source destination

Here, source represents the file or directory you wish to copy, and destination is the location where you want the copy to be placed.

Copying Files

To copy a file from one directory to another, you specify the current path of the file as the source and the desired path as the destination. Here’s an example:

cp /path/to/source/file /path/to/destination/

This command will create a copy of file in the destination directory, leaving the original file intact.

Copying Directories

To copy a directory and all its contents, you need to use the -R option (which stands for “recursive”), like this:

cp -R /path/to/source/directory /path/to/destination/

This command will create a copy of directory and all its contents in the destination directory.

Using ‘cp’ Safely

Like the mv command, cp can also overwrite existing files without warning. To prevent this, you can use the -i (interactive) option, which will prompt you for confirmation before overwriting:

cp -i source destination

If you’re copying a directory, you can combine the -R and -i options:

cp -Ri /path/to/source/directory /path/to/destination/


The cp command is a crucial tool for managing and organizing files and directories on your system. By mastering cp, you can efficiently duplicate files and directories, streamline your workflow, and safeguard your data by keeping backup copies. Remember to use the -i option to avoid unintentional overwrites. Happy copying!


Whilst building web applications, Daniel also sets up web servers from scratch because he has yet to find the perfect hosting solution. His philosophy is “Why settle, when you can build it better yourself?”

Recent Posts