## 27.14. Quoting Special Characters in Filenames

If you want to work with files that have spaces or special characters in the filenames, you may have to use quotes. For instance, if you wanted to create a file that has a space in the name, you could use the following:

`/dev/null` Section 43.12

>     % cp /dev/null 'a file with spaces in the name'

Normally, the shell uses spaces to determine the end of each argument. Quoting (Section 27.12, Section 27.13) changes that -- for example, the cp command above has only two arguments. You can also use a backslash (`\`) before a special character. The example below will rename a file with a space in the name, changing the space to an underscore ( `_` ):

>     % mv a\ file a_file

Using the same techniques, you can deal with any character in a filename:

>     % mv '$a' a

At worst, a space in a filename makes the filename difficult to use as an argument. Other characters are dangerous to use in a filename. In particular, using `?` and `*` in a filename is playing with fire. If you want to delete the file a?, you may end up deleting more than the single file.

-- BB

Copyright © 2003 O'Reilly & Associates. All rights reserved.