TranslateProject/sources/tech/20230711.1 ⭐️⭐️ Using cp Command in Linux.md
2023-07-25 14:58:34 +08:00

6.6 KiB

Using cp Command in Linux

The cp command is one of the essential Linux commands you probably will be using on a regular basis.

As the name indicates, cp stands for copy and it is used for copying files and directories in Linux command line.

It's one of the simpler commands with only a few options but that doesn't mean you cannot know more about it.

Before you see some practical examples of the cp command, I advise getting familiar with the concept of absolute and relative paths because you'll need to use them while copying files from one place to another.

Copy a file

The simplest and most common use of the cp command is for copying files. For that, you just have to specify the source file and the destination where you want to 'paste' the file.

cp source_file destination_directory

Copy a file from the source directory to a destination

Rename the file while copying it

You can also rename the file while copying it to another location. This is like those 'save as' options you see in text editors.

For this, you must mention the new file name along with the path.

cp source_file destination_directory/new_filename

Rename the file while copying

Copy multiple files

You can also copy multiple files to another location.

cp file1 file2 file3 destination_directory

Copy multiple files, with destination directory at the end

You cannot rename files in this case.

Of course, you can use wildcard expansion and copy files of a certain type to another location:

cp *.txt destination_directory

Copy multiple files with Wildcard expansion, which is all files with .txt extension

Avoid overwriting while copying files

If you are copying file1.txt to a directory where there already exists a file named file1.txt, it will be overwritten with the file you are copying.

You may not always want that. This is why the cp command provides several options to deal with overwriting.

The firstmost is the interactive mode with the option -i. In the interactive mode, it will ask you to confirm or deny the overwriting of the destination file.

cp -i source_file destination_directory
cp: overwrite 'destination_directory/source_file'?

Press Y to overwrite and N to skip copying the file.

Overwrite, but ask interactively (content overwritten)

Overwrite, but ask interactively (content is NOT overwritten)

The option -n negates overwriting completely. Destination files won't be overwritten with this option.

cp -n source_file destination_directory

Negated Overwriting (content of the file inside the directory has not changed)

There is also an option -b for automatically creating a backup if the destination file is going to be overwritten. B stands for backup, I presume.

cp -b source_file destination_directory

Overwriting a file, but with a backup file appended by '~'

And lastly, there is the 'update' option -u which will overwrite the destination file if it is older than the source file or if it destination file does not exist.

cp -u source_file destination_directory

The newer file is overwritten into the older file

Copy directories (folders)

The cp command is also used for copy directories in the Linux command line.

You need to use the recursive option -r for copying directories.

cp -r source_dir destination_dir

Copy a directory using cp command in Linux

You can also copy multiple directories to another location:

cp -r dir1 dir2 dir3 target_directory

Copying multiple directories using cp command

Preserve attributes while copying

When you copy a file to another location, its timestamp, file permission and even ownership gets changed.

That's the normal behavior. But in some cases, you may want to preserve the original attribute even when you are copying the file.

To preserve the attributes, use the option -p:

cp -p source_file destination_directory

💡 There is also-aoption for archive mode. It will preserve even the ACLs.

🏋️ Exercise time

Want to practice the cp command a little? Here are some simple exercises for you.

  • Open a terminal and create a directory named practice_cp
  • Now, copy the /etc/services file in this newly created directory.
  • Make some minor changes to the copied services file in practice directory.
  • Now, copy /etc/services file again but in update mode. Does it change anything? Observe.
  • Look into /var/log directory and copy the log files that start with mail into your practice directory
  • Now, go back to your home directory and create a new directory named new_dir (well, I couldn't think of any better)
  • Copy the practice_cp directory to new_dir

That should be good enough exercise for you. Enjoy learning Linux commands with It's FOSS.


via: https://itsfoss.com/cp-command/

作者:Abhishek Prakash 选题:lkxed 译者:译者ID 校对:校对者ID

本文由 LCTT 原创编译,Linux中国 荣誉推出