Chapter 2 introduced the Unix filesystem. This chapter explains how to name, edit, copy, move, and find files.
As Chapter 2 explained, both files and directories are identified by their names. A directory is really just a special kind of file, so the rules for naming directories are the same as the rules for naming files.
Filenames
may contain any character except
/
, which is
reserved as the separator between files and directories in a
pathname. Filenames are usually made of upper- and lowercase letters,
numbers, “.” (dots), and
“_” (underscores). Other characters
(including spaces) are legal in a filename, but they can be hard to
use because the shell gives them special meanings. However, spaces
are a standard part of Macintosh file and folder names, so while we
recommend using only letters, numbers, dots, and underscore
characters for filenames, the reality is that you will have to work
with spaces in file and directory names. The
Finder, by contrast, dislikes colons
(which older versions of Mac OS used as a directory separator, just
as Unix uses the slash). If you display a file called
test:me
in the Finder, the name is shown as
test/me
instead. (The reverse is also true: if
you create a file in the Finder whose name contains a slash, it will
appear as a colon in the Terminal.)
If you have a file with spaces in its name, the shell will be
confused if you type its name on the command line.
That’s because the shell breaks command lines into
separate arguments at the spaces. To tell the shell not to break an
argument at spaces, either put quotation marks ("
)
around the argument or preface each space with a backslash
().
For example, the rm
program, covered later in this
chapter, removes Unix files. To remove a file named a
confusing name, the first rm
command in
the following snippet doesn’t work, but the second
one does. Also note that you can escape spaces (that is, avoid having
the shell interpret them inappropriately) by using a
backslash character, as shown in the
third example:
%ls -l
total 2 -rw-r--r-- 1 taylor staff 324 Feb 4 23:07 a confusing name -rw-r--r-- 1 taylor staff 64 Feb 4 23:07 another odd name %rm a confusing name
rm: a: no such file or directory rm: confusing: no such file or directory rm: name: no such file or directory %rm "a confusing name"
%rm another odd name
%
You should also use a backslash () before any of
the following
special
characters, which have meaning to the shell:
* # ` " ' $ | & ? ; ~
( ) < > ! ^
.
A filename must be unique inside its directory, but other directories may have files with the same names. For example, you may have the files called chap1 and chap2 in the directory /Users/carol/work and also have different files with the same names in /Users/carol/play.
18.221.141.44