Linux/Unix – Removing Files and Directories
Use rm (“remove”) to delete a file and remove it from the system. Give the name of the file to remove as an argument.
To remove the file `notes’ in the current working directory, type:
$ rm notes
To remove a directory and all of the files and subdirectories it contains, use the `−R’ (“recursive”) option.
To remove the directory `waste’ and all of its contents, type:
$ rm −R waste
To remove an empty directory, use rmdir; it removes the empty directories you specify. If you specify a directory that contains files or subdirectories, rmdir reports an error.
To remove the directory `empty’, type:
$ rmdir empty
A Safe Way to Remove a File
Once a file is removed, it is permanently deleted and there is no command you can use to restore it; you cannot “undelete” it. (Although if you can unmount the filesystem that contained the file immediately after you deleted the file, a wizard might be able to help reconstruct the lost file by using grep to search the filesystem device file.)
A safer way to remove files is to use del, which is simply an alias to rm with the `−i’ option. This specifies for rm to run in interactive mode and confirm the deletion of each file. It may be good practice to get in the habit of using del all the time, so that you don’t make an accidental slip and rm an important file.
Removing a File with a Strange Name
Files with strange characters in their names (like spaces, control characters, beginning hyphens, and so on) pose a problem when you want to remove them. There are a few solutions to this problem.
One way is to use tab completion to complete the name of the file. This works when the name of the file you want to remove has enough characters to uniquely identify it so that completion can work.
To use tab completion to remove the file `No Way’ in the current directory, type:
$ rm NoTAB Way
In the above example, after TAB was typed, the shell filled in the rest of the file name (` Way’). When a file name begins with a control character or other strange character, specify the file name with a file name pattern that uniquely identifies it. Use the `−i’ option to verify the deletion.
To delete the file `^Acat’ in a directory that also contains the files `cat’ and `dog’, type:
$ rm −i ?cat RET
rm: remove `^Acat’? y
In the above example, the expansion pattern `?cat’ matches the file `^Acat’ and no other files in the directory. The `−i’ option was used because, in some cases, no unique pattern can be made for a file—for example, if this directory also contained a file called `1cat’, the above rm command would also attempt to remove it; with the `−i’ option, you can answer n to it.
These first two methods will not work with files that begin with a hyphen character, because rm will interpret such a file name as an option; to remove such a file, use the `−−’ option−−it specifies that what follows are arguments and not options. To remove the file `−cat’ from the current directory, type:
$ rm −− −cat