Manipulating Files at a Shell Prompt

Files can be manipulated quite easily using one of the graphical managers such as Nautilus and Konqueror. They can also be manipulated using a shell prompt; this is often faster. This section explains how.

Copying Files

Like so many other Linux features, there is a variety of ways to manipulate files and directories. You can also use wildcards, as explained in the Section called Wildcards and Regular Expressions in Chapter 11, to make the process of copying, moving, or deleting multiple files and directories faster.

To copy a file, type the following command:

cp <source> <destination>

replacing <source> with the name of the file you want to copy, and <destination> with the name of the directory where you want the file to go.

So, to copy the file sneakers.txt to the directory tigger/ in your home directory, move to your home directory and type:

cp sneakers.txt tigger/

You can use both relative and absolute pathnames with cp. Our home directory is the parent of the directory tigger; tigger is one directory down from our home directory.

Read the cp man page (man cp) for a full list of the options available with cp. Among the options you can use with cp are the following:

Now that you have the file sneakers.txt in the tigger directory, use cp -i to copy the file again to the same location.

[newuser@localhost newuser]$ cp -i sneakers.txt tigger
cp: overwrite 'tigger/sneakers.txt'?

To overwrite the file that is already there, press [Y] and then [Enter]. If you do not want to overwrite the file, press [N] and [Enter].

Moving Files

To move files, use the mv command. For more about mv, see the mv man page (type man mv).

Common options for mv include the following:

If you want to move a file out of your home directory and into existing another directory, type the following (you will need to be in your home directory):

mv sneakers.txt tigger

Alternatively, the same command using absolute pathnames looks like mv sneakers.txt /home/newuser /home/newuser/tigger.

Deleting Files and Directories

You learned about creating files with the touch command, and you created the directory tigger using mkdir.

Now you need to learn how to delete files and directories. Deleting files and directories with the rm command is a straightforward process. See the rm man page for more information. Options for removing files and directories include:

To delete the file piglet.txt with the rm command:

rm piglet.txt

WarningWarning
 

Once a file or directory is removed with the rm command, it is gone permanently and cannot be returned.

Use the -i (interactive) option to give you a second chance to think about whether or not you really want to delete the file.

[newuser@localhost newuser]$ rm -i piglet.txt
rm: remove 'piglet.txt'?

You can also delete files using the wildcard *, but be careful, because you can easily delete files you did not intend to throw away.

To remove a file using a wildcard, you would type:

rm pig*

The above command will remove all files in the directory which start with the letters pig.

You can also remove multiple files using the rm command. For example:

rm piglet.txt sneakers.txt

You can use rmdir to remove a directory (rmdir foo, for example), but only if the directory is empty. To remove directories with rm, you must specify the -r option.

For example, if you want to recursively remove the directory tigger you would type:

rm -r tigger

If you want to combine options, such as forcing a recursive deletion, you can type:

rm -rf tigger

A safer alternative to using rm for removing directories is the rmdir command. With this command, you will not be allowed to use recursive deletions, so a directory which has files in it will not be deleted.

WarningWarning
 

The rm command can delete your entire file system! If you are logged in as root and you type the simple command rm -rf /, you are in trouble; this command will recursively remove everything on your system.

Read the rmdir man page (man rmdir) to find out more about this command.