Files can be manipulated quite easily using one of the graphical file managers such as Nautilus or Konqueror. They can also be manipulated using a shell prompt, which is often faster. This section explains how to manipulate files at the shell prompt.
You can create new files either with applications (such as text editors) or by using the command touch, which will create an empty file that you can use to add text or data. To create a file with touch, type the following at a shell prompt:
Replace filename with the name you wish to give the new file. If you run a directory listing after executing the touch command, you’ll see that the file contains zero (0) bytes of information because it is an empty file.
ls -l newfile -rw-rw-r-- 1 sam sam 0 Apr 10 17:09 newfile
Like so many other Linux features, there are a variety of ways to manipulate files and directories. You can also use wildcards, as explained in Chapter 8, 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
Replace 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.
Read the cp man page (type man cp at the shell prompt) for a full list of the options available with cp. Among the options you can use with cp are the following:
-i (interactive) — Prompts you to confirm if the file is going to overwrite a file in your destination. This is a handy option because it can help prevent you from making mistakes.
-r (recursive) — Rather than just copying all the specified files and directories, this will copy the whole directory tree, subdirectories and all.
-v (verbose) — Shows the progress of the files as they are being copied.
Now that you have the file sneakers.txt in the tigger directory, use cp -i to copy the file again to the same location.
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.
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:
-i (interactive) —This will prompt you if the file you have selected will overwrite an existing file in the destination directory. This is a good option, because like the -i option for cp, you will be given the chance to make sure you want to replace an existing file.
-f (force) —Overrides the interactive mode and moves the file without prompting. Unless you know what you are doing, this option is dangerous; be very careful about using it.
-v (verbose) —Shows the progress of the files as they are being moved.
If you want to move a file out of your home directory and into another existing 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
Earlier in the chapter we showed you how to create files with the touch command.
Now we show you 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:
-i (interactive) — Prompts you to confirm the deletion. This option can stop you from deleting a file by mistake.
-f (force) — Overrides interactive mode and removes the file(s) without prompting. This might not be a good idea, unless you know exactly what you are doing.
-v (verbose) — Shows the progress of the files as they are being removed.
-r (recursive) — Deletes a directory and all files and subdirectories it contains.
To delete the file piglet.txt with the rm command, type:
After a file or directory is removed with the rm command, it is gone permanently and cannot be retrieved.
Use the -i (interactive) option to give you a second chance to think about whether or not you really want to delete the file.
rm -i piglet.txt rm: remove 'piglet.txt'?
You can also delete files using the wildcard *, but be careful — you can easily delete files you did not intend to throw away.
To remove a file using a wildcard, you would type:
The above command will remove all files in the directory that 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 that has files in it will not be deleted.
The rm command can delete your entire file system! If you are logged in as root and you type the simple command rm -rf /, the command will recursively remove everything on your system!
Read the rmdir man page (man rmdir) to find out more about this command.