Linux 版 (精华区)

发信人: netiscpu (说不如做), 信区: Linux
标  题: [B] Red Hat Linux Unleashed (8)
发信站: 紫 丁 香 (Sat Jul 25 03:09:28 1998), 转信

   The Linux File System
     _________________________________________________________________
                                      
               o Files An Overview
                    # Common Types of Files
                    # Filenames
               o Directories An Overview
                    # Parent Directories and Subdirectories
                    # The Root Directory
                    # How Directories Are Named
                    # The Home Directory
               o Navigating the Linux File System
                    # The pwd Command Where Am I?
                    # Absolute and Relative Filenames
                    # Going Places The cd Command
                    # There's No Place Like Home
               o Creating and Deleting Files
                    # cat That Useful Feline
                    # Creating Directories
                    # Moving and Copying Files
                    # Moving and Copying with Wildcards
                    # Moving Directories
               o Removing Files and Directories
                    # Removing Directories
               o File Permissions and Ownership
                    # File and Directory Ownership
                    # File Permissions
                    # Changing File Permissions
                    # Changing Directory Permissions
               o Miscellaneous File Commands
                    # Fear of Compression The Zipless File
                    # How to tar Without Feathering
               o Important Directories in the Linux File System
                    # /
                    # /home
                    # /bin
                    # /usr
                    # /usr/bin
                    # /var/spool
                    # /dev
                    # /usr/sbin
                    # /sbin
                    # /etc
               o Summary
       
     _________________________________________________________________
                                      
   8
   
   
   The Linux File System
   
   
   In this chapter, you learn about:
     * Files: what they are, types of files, filenames
       
     * Directories: what they are, parent directories and subdirectories,
       directory names, your home directory
       
     * Absolute and relative file and directory names
       
     * Moving between directories using the cd command
       
     * Using the cat command to create a new file
       
     * Creating directories
       
     * Moving and copying files
       
     * Removing files and directories
       
     * File and directory ownership, using chown and chgrp to change
       ownership
       
     * File and directory permissions, using chmod to change permissions
       
     * Using the gunzip command to uncompress .gz files compressed by
       gzip
       
     * The tar command
       
     * The standard Linux directories and directory structure
       
   To understand how Linux works, and to use the system beyond a
   superficial level, you must be familiar with the Linux notion of files
   and the file system into which they are organized.
   
   Files An Overview
   
   
   The most basic concept of a file, and one you may already be familiar
   with from other computer systems, defines a file as a distinct chunk
   of information that is found on your hard drive. Distinct means that
   there can be many different files, each with its own particular
   contents. To keep files from getting confused with each other, every
   file must have a unique identity. In Linux, you identify each file by
   its name and location. In each location or directory, there can be
   only one file by a particular name. So, for instance, if you create a
   file called novel, and you get a second great idea, you will either
   have to call it something different, such as novel2, or put it in a
   different place, to keep from overwriting the contents already in your
   original novel.
   
   Common Types of Files
   
   
   Files can contain various types of information. The following three
   types will become the most familiar to you:
     * User data: Information that you create and update. The very
       simplest user data is plain text or numbers. You learn to create
       these simple files later in this chapter. More complicated user
       data files might have to be interpreted by another program to make
       sense. For instance, a spreadsheet file looks like gibberish if
       you look at it directly. To work with a spreadsheet, you have to
       start up the spreadsheet program and read in the spreadsheet file.
       
       
     * System data: Information, often in plain text form, that is read
       and used by the Linux system—to keep track of which users are
       allowed on the system, for instance. As a system administrator,
       you are responsible for changing system data files. For instance,
       when you create a new user, you modify the file /etc/passwd, which
       contains the user information. Ordinary users of the system are
       usually not concerned with system data files, except for their
       private startup files.
       
     * Executable files: These files contain instructions that your
       computer can perform. This set of instructions is often called a
       program. When you tell the computer to perform them, you're
       telling it to execute the instructions given to it. To human eyes,
       executable files contain meaningless gibberish—obviously your
       computer doesn't think the way you do! Creating or modifying
       executable files takes special tools. You learn how to use these
       programming tools in Part V, "Linux for Programmers."
       
   
   Filenames
   
   
   Linux allows filenames to be up to 256 characters long. These
   characters can be lower- and uppercase letters, numbers, and other
   characters, usually the dash (-), the underscore (_), and the dot (.).
   
   They can't include reserved metacharacters such as the asterisk,
   question mark, backslash, and space, because these all have meaning to
   the shell. We met some metacharacters when we discussed wildcards in
   the previous chapter. Other metacharacters will be introduced in the
   Linux shell chapters.
   
   Directories An Overview
   
   
   Linux, like many other computer systems, organizes files in
   directories. You can think of directories as file folders and their
   contents as the files. However, there is one absolutely crucial
   difference between the Linux file system and an office filing system.
   In the office, file folders usually don't contain other file folders.
   In Linux, file folders can contain other file folders. In fact, there
   is no Linux "filing cabinet"—just a huge file folder that holds
   some files and other folders. These folders contain files and possibly
   other folders in turn, and so on.
   
   Parent Directories and Subdirectories
   
   
   Imagine a scenario in which you have a directory, A, that contains
   another directory, B. Directory B is then a subdirectory of directory
   A, and directory A is the parent directory of directory B. You will
   see these terms often, both in this book and elsewhere.
   
   The Root Directory
   
   
   In Linux, the directory that holds all the other directories is called
   the root directory. This is the ultimate parent directory; every other
   directory is some level of subdirectory.
   
   From the root directory, the whole structure of directory upon
   directory springs and grows like some electronic elm. This is called a
   tree structure because, from the single root directory, directories
   and subdirectories branch off like tree limbs.
   
   How Directories Are Named
   
   
   Directories are named just like files, and they can contain upper- and
   lowercase letters, numbers, and characters such as -, ., and _.
   
   The slash (/) character is used to show files or directories within
   other directories. For instance, usr/bin means that bin is found in
   the usr directory. Note that you can't tell, from this example,
   whether bin is a file or a directory, although you know that usr must
   be a directory because it holds another item—namely, bin. When
   you see usr/bin/grep, you know that both usr and bin must be
   directories, but again, you can't be sure about grep. The ls program
   shows directories with a following /—for example, fido/. This
   notation implies that you could have, for instance, fido/file;
   therefore, fido must be a directory.
   
   The root directory is shown simply by the symbol / rather than
   mentioned by name. It's very easy to tell when / is used to separate
   directories and when it's used to signify the root directory. If / has
   no name before it, it stands for the root directory. For example, /usr
   means that the usr subdirectory is found in the root directory, and
   /usr/bin means that bin is found in the usr directory and that usr is
   a subdirectory of the root directory. Remember, by definition the root
   directory can't be a subdirectory.
   
   The Home Directory
   
   
   Linux provides each user with his or her own directory, called the
   home directory. Within this home directory, users can store their own
   files and create subdirectories. Users generally have complete control
   over what's found in their home directories. Because there are usually
   no Linux system files or files belonging to other users in your home
   directory, you can create, name, move, and delete files and
   directories as you see fit.
   
       ______________________________________________________________
                                      
     
     NOTE: Your home directory does not provide privacy! Normally, any
     user can go into another's home directory and read (and copy!) the
     files stored there (although he can't delete or change the files).
     When Linux creates your home directory, it in effect provides you
     with an open office cubicle whose desk and filing cabinet drawers
     are unlocked.
     You must lock up everything you want to keep private. (This topic
     is covered in the section "File Permissions and Ownership.") It is
     generally considered rude or nosy to poke around in someone else's
     home directory, just as it's rude or nosy to poke around in
     someone's office while they're away from their desk, but the world
     is full of nosy and rude people, so you must take precautions!
     Note that anyone logged in as root can read and manipulate all the
     files on the system, including files that users have locked up. If
     you can't trust the system administrator (who usually has the root
     password), don't use the system!
     
     
       ______________________________________________________________
                                      
   The location of a user's home directory is specified by Linux and
   can't be changed by the user. This is both to keep things tidy and to
   preserve system security.
   
   Navigating the Linux File System
   
   
   Fortunately, navigating the Linux file system is simple. There are
   only two commands to be learned, and one of them has absolutely no
   options or parameters!
   
   The pwd Command Where Am I?
   
   
   Type pwd at the Linux command prompt. You see

darkstar:~$ pwd
/home/fido
darkstar:~$

   This tells you that you're currently in the directory /home/fido. (If
   you are logged in under a different user name, you will see that name
   in place of fido.) This is your home directory. When you log in, Linux
   always places you in your home directory.
   
   The letters "pwd" stand for "print working directory." Again, a
   command's name or function has been cut down to a few easy-to-type
   characters. (You will often see the term current directory used in
   place of working directory.)
   
   You might be wondering what "working directory" or "being in a
   directory" really means. It simply means that Linux commands, by
   default, perform their actions in your working directory. For
   instance, when you run ls, you are shown only the files in your
   working directory. If you want to create or remove files, they will be
   created or removed in your working directory.
   
   Absolute and Relative Filenames
   
   
   If you specify only the name of a file, Linux looks for that file in
   your working directory. For example, more myfile lets you read the
   contents of the file myfile. But myfile must be in your current
   working directory, or the more command won't find it.
   
   Sometimes you want to specify a file that isn't in your current
   directory. You would then specify the name of the directory the file
   is in, as well as the name of the file itself.
   
   If, for instance, your current directory has a subdirectory called
   novel, which contains a file called chapter_1, you could type more
   novel/chapter_1, which tells more that it should look in the
   subdirectory novel for the file chapter_1. This is called a relative
   filename. You are specifying the location of chapter_1 relative to
   where you are now, in the subdirectory novel, which is found in your
   current directory. If you changed your working directory, the relative
   filename would no longer work.
   
   Two special directory specifications are "." and "..".The
   specification "." always stands for the directory you are currently
   in, and ".." stands for the parent directory of your current
   directory. (You see how "." and ".." are used later in this chapter.)
   Any filename that includes "." or ".." is, by definition, a relative
   filename.
   
   A filename that is valid from any location is called an absolute
   filename. Absolute filenames always begin with /, signifying root. So
   if you specify a filename as /home/fido/novel/chapter_1, there is no
   doubt as to where the file is located. Every file on your system has a
   unique absolute filename.
   
   Someone else on the system might also have a directory called novel in
   his or her home directory. Perhaps it even contains a file called
   chapter_1. In this case, you can't distinguish the two files by using
   the relative filename novel/chapter_1. However, the absolute filenames
   will be different—for instance, /home/fido/novel/chapter_1 as
   opposed to /home/mary/novel/chapter_1. The novel subdirectory in
   /home/fido is not the same directory as the novel directory in
   /home/mary! The two are in quite separate locations, and only
   coincidentally do they share the same name.
   
   Going Places The cd Command
   
   
   The cd (change directory) command lets you change your working
   directory. You can think of it as moving to another directory.
   
   The syntax of the cd command is
   
cd <directory specification>

   There must be a space between cd and the directory specification.
   
   The directory specification can be an absolute or relative one. For
   instance, type cd .. followed by pwd:

darkstar:~$ cd ..
darkstar:/home$ pwd
/home
darkstar:/home$ cd ..
darkstar:/$ pwd
/
darkstar:/$ cd ..
darkstar:/$ pwd
/

   There is no parent directory for the root directory, so typing cd ..
   when in the root directory simply leaves you in the root directory.
   
   Note that the Linux command prompt shows you which directory you are
   currently in, so you don't have to type pwd all the time. (I will
   continue to use pwd for clarity.)
   
   You can also use absolute directory names.

darkstar:/$ cd /usr/bin
darkstar:/usr/bin$ pwd
/usr/bin

   When you type an absolute directory name, you go to that directory, no
   matter where you started from. When you type cd .., where you end up
   depends on where you started.
   
   To see the effect of changing your working directory, type ls. The
   list of files is so long that the first part scrolls off your screen.
   The ls command shows you the contents of your current directory (as
   always), but now your current directory is /usr/bin, which contains
   many more files than your home directory.
   
   There's No Place Like Home
   
   
   Type cd without any directory specification:

darkstar:/usr/bin$ cd
darkstar:~$ pwd
/home/fido

   Typing cd by itself always returns you to your home directory. When
   exploring the file system, you sometimes wind up deep in a blind alley
   of subdirectories. Type cd to quickly return home, or type cd / to
   return to the root directory.
   
   The ~ in your prompt is another special character. It stands for your
   home directory. There's no reason to type cd ~ when cd works just as
   well, and is much easier to type! However, try this:
   
   When you type cd ~<user>, you move to that user's home directory. This
   is a very useful trick, especially on large systems with many users
   and more complicated directory structures than the simple /home/<user>
   on your Linux system.
   
       ______________________________________________________________
                                      
     
     NOTE: When you're changing to a distant directory, it's often a
     good idea to take several steps. If you mistype a very long
     directory specification, you will have to retype the entire
     specification. Sometimes it might not even be clear why cd gave you
     an error! Taking a number of shorter steps means less retyping in
     case of an error. Consider this example:
     darkstar:~$ cd /usr/docs/faq/unix
     bash: /usr/docs/faq/unix: No such file or directory
     You're pretty sure that this path is correct. Let's change
     directories one step at a time:
     darkstar:~$ cd /usr
     darkstar:/usr$ cd docs
     bash: docs: No such file or directory
     Aha! There's a problem with docs. The directory is actually named
     doc:
     darkstar:/usr$ ls
     bin/ doc/ games/ info/ man/ sbin/ spool/
     darkstar:/usr$ cd doc
     darkstar:/usr/doc$ cd faq/unix
     darkstar:/usr/doc/faq/unix$ pwd
     /usr/doc/faq/unix
     
     
       ______________________________________________________________
                                      
   
   Creating and Deleting Files
   
   
   Linux has many ways to create and delete files. In fact, some of the
   ways are so easy to perform that you have to be careful not to
   accidentally overwrite or erase files!
   
       ______________________________________________________________
                                      
     
     NOTE: Go through the following sections very carefully. You should
     be logged in as your "ordinary" username, not as root! Only when
     you're sure you understand these sections thoroughly should you use
     these commands while logged in as root.
     There is no "unerase" command in Linux! Be sure you know what
     you're doing!
     
     
       ______________________________________________________________
                                      
   Return to your home directory by typing cd. Make sure you're in your
   /home/<user> directory by running pwd.
   
   In the previous chapter, you created a file by typing ls -l /bin >
   test. Remember, the > symbol means "redirect all output to the
   following filename." Note that the file test didn't exist before you
   typed this command. When you redirect to a file, Linux automatically
   creates the file if it doesn't already exist.
   
   What if you want to type text into a file, rather than some command's
   output? The quick and dirty way is to use the command cat.
   
   cat That Useful Feline
   
   
   The cat command is one of the simplest, yet most useful, commands in
   Linux. It certainly does more than any living feline!
   
   The cat command basically takes all its input and outputs it. By
   default, cat takes its input from the keyboard and outputs it to the
   screen. Type cat at the command line:
   
darkstar:~$ cat

   The cursor moves down to the next line, but nothing else seems to
   happen. Now cat is waiting for some input:

hello
hello
what
what
asdf
asdf

   Everything you type is repeated on-screen as soon as you press Enter!
   
   How do you get out of this? At the start of a line, type ^D (Ctrl-D).
   (In other words, hold down the Ctrl key and press D.) If you're not at
   the beginning of a line, you have to type ^D twice. ^D is the Linux
   "end of file" character. When a program such as cat encounters a ^D,
   it assumes that it has finished with the current file, and it goes on
   to the next one. In this case, if you type ^D by itself on an empty
   line, there is no next file to go on to, and cat exits.
   
       ______________________________________________________________
                                      
     
     NOTE: When you say that a program exits, you mean that it has
     finished running and that you are back at the Linux command prompt.
     It might seem odd to talk about the program exiting when, from your
     point of view as a user, you have exited the program. This turn of
     phrase goes back to the early days of UNIX, when it was coined by
     the people who were programming the system. They looked at things
     from the program's point of view, not the user's!
     
     
       ______________________________________________________________
                                      
   So how do you use cat to create a file? Simple! You redirect the
   output from cat to the desired filename:

darkstar:~$ cat > newfile
Hello world
Here's some text

   You can type as much as you want. When you are finished, press ^D by
   itself on a line; you will be back at the Linux prompt.
   
   Now you want to look at the contents of newfile. You could use the
   more or less commands, but instead, let's use cat. Yes, you can use
   cat to look at files simply by providing it with a filename:

darkstar:~$ cat newfile
Hello world
Here's some text
darkstar:~$

   Neat! You can also add to the end of the file by using >>. Whenever
   you use >>, whether with cat or any other command, the output is
   always appended to the specified file. (Note that the ^D character
   does not appear on-screen. I show it in the examples for clarity.)

darkstar:~$ cat >> newfile
Some more lines
^D
darkstar:~$ cat newfile
Hello world
Here's some text
Some more lines
darkstar:~$

   To discover what cat actually stands for, let's first create another
   file.

darkstar:~$ cat > anotherfile
Different text
^D
darkstar:~$

   Now, try this:

darkstar:~$ cat newfile anotherfile> thirdfile
darkstar:~$ cat thirdfile
Hello world
Here's some text
Some more lines
Different text
darkstar:~$

   cat stands for concatenate; cat takes all the specified inputs and
   regurgitates them in a single lump. This by itself would not be very
   interesting, but combine it with the forms of input and output
   redirection available in Linux and you have a powerful and useful
   tool.
   
   Sometimes you want to change just one line of a file, or perhaps you
   are creating a large and complicated file. For this you should use one
   of the editing programs available in Linux. They are discussed in
   Chapter 16, "Text Editors."
   
   Creating Directories
   
   
   To create a new directory, use the mkdir command. The syntax is mkdir
   <name>, where <name> is replaced by whatever you want the directory to
   be called. This creates a subdirectory with the specified name in your
   current directory:

darkstar:~$ ls
anotherfile newfile thirdfile
darkstar:~$ mkdir newdir
darkstar:~$ ls
anotherfile newdir/ newfile thirdfile

       ______________________________________________________________
                                      
     
     NOTE: The mkdir command is already familiar to you if you have used
     MS-DOS systems. In MS-DOS, you can abbreviate mkdir as md. You
     might think that md would work in Linux, because, after all, most
     of the commands we've seen have extremely concise names. However,
     Linux doesn't recognize md; it insists on the full mkdir.
     If you frequently switch between Linux and MS-DOS, you might want
     to use mkdir for both systems. However, be warned that you might
     start typing other Linux commands in MS-DOS&#151;for example,
     typing ls instead of dir!
     
     
       ______________________________________________________________
                                      
   
   Moving and Copying Files
   
   
   You often need to move or copy files. The mv command moves files, and
   the cp command copies files. The syntax for the two commands is
   similar:

mv <source> <destination>
cp <source> <destination>

   As you can see, mv and cp are very simple commands. Here's an example:
   
darkstar:~$ ls
anotherfile newdir/ newfile thirdfile
darkstar:~$ mv anotherfile movedfile
darkstar:~$ ls
movedfile newdir/ newfile thirdfile
darkstar:~$ cp thirdfile xyz
darkstar:~$ ls
anotherfile newdir/ newfile thirdfile xyz

   You can use cat (or more or less) at any time to verify that
   anotherfile became movedfile, and that the contents of file xyz are
   identical to the contents of thirdfile.
   
   It can get more confusing if you're moving or copying files from one
   directory to another. This is because a file's real name includes its
   absolute path&#151;for instance, /home/fido/newfile. However, Linux
   lets you leave off parts of the file's name, because it's more
   convenient to refer to newfile rather than /home/fido/newfile.
   
   For instance, suppose you want to move newfile into the newdir
   subdirectory. If you want the file to keep the same name, you type
   
darkstar:~$ mv newfile newdir/newfile

   However, it's much more common to type
   
darkstar:~$ mv newfile newdir

   Here, because you have typed a directory name for the destination,
   Linux assumes that you want the file to be placed in the specified
   directory.
   
   You could also use cd to change to the directory you want to move the
   file to:

darkstar:~$ cd newdir
darkstar:~newdir$ copy ../newfile .

   This example is a bit less intuitive than the first two! You specify
   that the source is ../newfile, which means "the file newfile in the
   current directory's parent directory." The destination you simply
   specify as ".", which is short for "the current directory." In other
   words, you're telling mv to "go up one level, grab newfile, and move
   it to right here." Because this is less intuitive, you might find
   yourself automatically pushing a file from your current directory to
   another directory rather than pulling a file from another directory
   into your current directory.
   
   You can also change the name of the file while moving or copying it to
   another directory. The following is just one possible way:
   
darkstar:~$ cp newfile newdir/anothername

   This would create a copy of newfile in the directory newdir and name
   the copied file anothername.
   
       ______________________________________________________________
                                      
     
     NOTE: When moving or copying files between directories, you should
     always double-check that the file's destination directory exists
     and verify the directory's name. Otherwise, the results of your
     command can be unexpected, as the following two examples show.
     If in the example just shown you mistyped newdir&#151;for instance,
     as mv newfile mewdir&#151;you would wind up with a file called
     mewdir in your current directory and no file newfile in the newdir
     subdirectory!
     Another way you would get an unexpected result would be to type cp
     newfile newdir if you didn't realize that the directory newdir
     existed. In this case, you would be expecting to create an
     identical file called newdir in your current directory. What you
     would actually do is create a copy of newfile, called newfile, in
     the subdirectory newdir.
     
     
       ______________________________________________________________
                                      
   The mv command is much more efficient than the cp command. When you
   use mv, the file's contents are not moved at all; rather, Linux makes
   a note that the file is to be found elsewhere within the file system's
   structure of directories.
   
   When you use cp, you are actually making a second physical copy of
   your file and placing it on your disk. This can be slower (although
   for small files, you won't notice any difference), and it causes a bit
   more wear and tear on your computer. Don't make copies of files when
   all you really want to do is move them!
   
   Moving and Copying with Wildcards
   
   
   If you have 20 files in a directory, and you want to copy them to
   another directory, it would be very tedious to use the cp command on
   each one. Fortunately, you can use the wildcards * and ? to copy more
   than one file at a time.
   
   If you want to move or copy all files in a directory, use the wildcard
   *:
   
darkstar:~$ cp * /tmp

   This command copies every file in your current directory to the
   directory /tmp.
   
   You can use *, along with other characters, to match only certain
   files. For instance, suppose you have a directory that contains the
   files book1, book_idea, book-chapter-1, and poem.book. To copy just
   the first three files, you could type cp book* /tmp. When you type
   book*, you are asking Linux to match all files whose names start with
   book. In this case, poem.book does not start with book, so there is no
   way book* can match it. (Note that if your filename were book.poem,
   book* would match it.)
   
       ______________________________________________________________
                                      
     
     NOTE: As you saw at the outset, mv and cp are very simple commands.
     It's specifying the files that's the complicated part! If things
     still seem confusing, don't worry. Even experts sometimes mess up
     "simple" moves and copies. Follow the examples and try any
     different ways you think of. There is a definite logic as to how
     the files to be moved and copied should be specified. It takes a
     while to become familiar with this logic, and you will have to
     practice a while before these things become intuitive.
     
     
       ______________________________________________________________
                                      
   
   Moving Directories
   
   
   To move a directory, use the mv command. The syntax is mv <directory>
   <destination>. In the following example, you would move the newdir
   subdirectory found in your current directory to the /tmp directory:

darkstar:~$ mv newdir /tmp
darkstar:~$ cd /tmp
darkstar:/tmp$ ls
/newdir

   The directory newdir is now a subdirectory of /tmp.
   
       ______________________________________________________________
                                      
     
     NOTE: When you move a directory, all its files and subdirectories
     go with it.
     
     
       ______________________________________________________________
                                      
   
   Removing Files and Directories
   
   
   Now that you know how to create files and directories, it's time to
   learn how to undo your handiwork.
   
   To remove (or delete) a file, use the rm command (rm is a very terse
   spelling of remove). The syntax is rm <filename>. For instance:
   
darkstar:~$ rm dead_duck

   removes the file dead_duck from your current directory.
   
darkstar:~$ rm /tmp/dead_duck

   removes the file dead_duck from the /tmp directory.
   
darkstar:~$ rm *

   removes all files from your current directory. (Be careful when using
   wildcards!)
   
darkstar:~$ rm /tmp/*duck

   removes all files ending in duck from the /tmp directory.
   
       ______________________________________________________________
                                      
     
     NOTE: As soon as a file is removed, it is gone! Always think about
     what you're doing before you remove a file. You can use one of the
     following techniques to keep out of trouble when using wildcards.
     
     
    1. Run ls using the same file specification you use with the rm
       command. For instance:
       
 darkstar:~$ ls *duck
 dead_duck guiduck lame-duck
 :~$ rm *duck
       
     NOTE: In this case, you thought you wanted to remove all files that
     matched *duck. To verify that this indeed was the case, you listed
     all the *duck files (wildcards work the same way with all
     commands). The listing looked okay, so you went ahead and removed
     the files.
       
    2. Use the i (interactive) option with rm:
       
       ______________________________________________________________
                                      
 darkstar:~$ rm -i *duck
 rm: remove 'dead_duck'? y
 rm: remove 'guiduck'? n
 rm: remove 'lame-duck'? y
 darkstar:~$
       
       ______________________________________________________________
                                      
     
     NOTE: When you use rm -i, the command goes through the list of
     files to be deleted one by one, prompting you for the OK to remove
     the file. If you type y or Y, rm removes the file. If you type any
     other character, rm does not remove it. The only disadvantage of
     using this interactive mode is that it can be very tedious when the
     list of files to be removed is long.
     
     
       ______________________________________________________________
                                      
   
   Removing Directories
   
   
   The command normally used to remove (delete) directories is rmdir. The
   syntax is rmdir <directory>.
   
   Before you can remove a directory, it must be empty (the directory
   can't hold any files or subdirectories). Otherwise, you see
   
rmdir: <directory>: Directory not empty

   This is as close to a safety feature as you will see in Linux!
   
       ______________________________________________________________
                                      
     
     NOTE: This one might mystify you:
     darkstar:/home$ ls
     fido/ root/ zippy/
     darkstar:/home$ ls zippy
     core kazoo stuff
     darkstar:/home$ rm zippy/*
     darkstar:/home/zippy$ ls zippy
     darkstar:/home$ rmdir zippy
     rmdir: zippy: Directory not empty
     darkstar:~$
     The reason for the Directory not empty message is that files
     starting with . usually are special system files and are usually
     hidden from the user. To list files whose names start with ., you
     have to use ls -a. To delete these files, use rm .*:
     darkstar:/home$ ls -a zippy
     ./ ../ .bashrc .profile
     darkstar:/home$ rm zippy/.*
     rm: cannot remove '.' or '..'
     darkstar:/home$ ls -a zippy
     ./ ../
     darkstar:/home$ rmdir zippy
     darkstar:/home$ ls
     fido/ root/
     darkstar:~$
     You will most often come across this situation in a system
     administrator role.
     
     
       ______________________________________________________________
                                      
   Sometimes you want to remove a directory with many layers of
   subdirectories. Emptying and then deleting all the subdirectories one
   by one would be very tedious. Linux offers a way to remove a directory
   and all the files and subdirectories it contains in one easy step.
   This is the r (recursive) option of the rm command. The syntax is rm
   -r <directory>. The directory and all its contents are removed.
   
       ______________________________________________________________
                                      
     
     NOTE: You should use rm -r only when you really have to. To
     paraphrase an old saying, "It's only a shortcut until you make a
     mistake." For instance, if you're logged in as root, the following
     command removes all files from your hard disk, and then it's
     "Hello, installation procedure" time (do not type the following
     command!):
     rm -rf /
     Believe it or not, people do this all too often. Don't join the
     club!
     
     
       ______________________________________________________________
                                      
   
   File Permissions and Ownership
   
   
   All Linux files and directories have ownership and permissions. You
   can change permissions, and sometimes ownership, to provide greater or
   lesser access to your files and directories. File permissions also
   determine whether a file can be executed as a command.
   
   If you type ls -l or dir, you see entries that look like this:
   
-rw-r&#151;r&#151; 1 fido users 163 Dec 7 14:31 myfile

   The -rw-r&#151;r&#151; represents the permissions for the file myfile.
   The file's ownership includes fido as the owner and users as the
   group.
   
   File and Directory Ownership
   
   
   When you create a file, you are that file's owner. Being the file's
   owner gives you the privilege of changing the file's permissions or
   ownership. Of course, once you change the ownership to another user,
   you can't change the ownership or permissions anymore!
   
   File owners are set up by the system during installation. Linux system
   files are owned by IDs such as root, uucp, and bin. Do not change the
   ownership of these files.
   
   Use the chown (change ownership) command to change ownership of a
   file. The syntax is chown <owner> <filename>. In the following
   example, you change the ownership of the file myfile to root:

darkstar:~$ ls -l myfile
-rw-r&#151;r&#151; 1 fido users 114 Dec 7 14:31 myfile
darkstar:~$ chown root myfile
darkstar:~$ ls -l myfile
-rw-r&#151;r&#151; 1 root users 114 Dec 7 14:31 myfile

   To make any further changes to the file myfile, or to chown it back to
   fido, you must use su or log in as root.
   
   Files (and users) also belong to groups. Groups are a convenient way
   of providing access to files for more than one user but not to every
   user on the system. For instance, users working on a special project
   could all belong to the group project. Files used by the whole group
   would also belong to the group project, giving those users special
   access. Groups normally are used in larger installations. You may
   never need to worry about groups.
   
   The chgrp command is used to change the group the file belongs to. It
   works just like chown.
   
   File Permissions
   
   
   Linux lets you specify read, write, and execute permissions for each
   of the following: the owner, the group, and "others" (everyone else).
   
   read permission enables you to look at the file. In the case of a
   directory, it lets you list the directory's contents using ls.
   
   write permission enables you to modify (or delete!) the file. In the
   case of a directory, you must have write permission in order to
   create, move, or delete files in that directory.
   
   execute permission enables you to execute the file by typing its name.
   With directories, execute permission enables you to cd into them.
   
   For a concrete example, let's look at myfile again:
   
-rw-r&#151;r&#151; 1 fido users 163 Dec 7 14:31 myfile

   The first character of the permissions is -, which indicates that it's
   an ordinary file. If this were a directory, the first character would
   be d. There are also some other, more exotic classes. These are beyond
   the scope of this chapter.
   
   The next nine characters are broken into three groups of three, giving
   permissions for owner, group, and other. Each triplet gives read,
   write, and execute permissions, always in that order. Permission to
   read is signified by an r in the first position, permission to write
   is shown by a w in the second position, and permission to execute is
   shown by an x in the third position. If the particular permission is
   absent, its space is filled by -.
   
   In the case of myfile, the owner has rw-, which means read and write
   permissions. This file can't be executed by typing myfile at the Linux
   prompt.
   
   The group permissions are r&#151;, which means that members of the
   group "users" (by default, all ordinary users on the system) can read
   the file but not change it or execute it.
   
   Likewise, the permissions for all others are r&#151;: read-only.
   
   File permissions are often given as a three-digit number&#151;for
   instance, 751. It's important to understand how the numbering system
   works, because these numbers are used to change a file's permissions.
   Also, error messages that involve permissions use these numbers.
   
   The first digit codes permissions for the owner, the second digit
   codes permissions for the group, and the third digit codes permissions
   for other (everyone else).
   
   The individual digits are encoded by summing up all the "allowed"
   permissions for that particular user as follows:
   read permission 4
   write permission 2
   execute permission 1
   
   Therefore, a file permission of 751 means that the owner has read,
   write, and execute permission (4+2+1=7), the group has read and
   execute permission (4+1=5), and others have execute permission (1).
   
   If you play with the numbers, you quickly see that the permission
   digits can range between 0 and 7, and that for each digit in that
   range there's only one possible combination of read, write, and
   execute permissions.
   
       ______________________________________________________________
                                      
     
     NOTE: If you're familiar with the binary system, think of rwx as a
     three-digit binary number. If permission is allowed, the
     corresponding digit is 1. If permission is denied, the digit is 0.
     So r-x would be the binary number 101, which is 4+0+1, or 5.
     &#151;x would be 001, which is 0+0+1, which is 1, and so on.
     
     
       ______________________________________________________________
                                      
   The following combinations are possible:
        0 or &#151;-: No permissions at all
       
        4 or r&#151;: read-only
       
        2 or -w-: write-only (rare)
       
        1 or &#151;x: execute
       
        6 or rw-: read and write
       
        5 or r-x: read and execute
       
        3 or -wx: write and execute (rare)
       
        7 or rwx: read, write, and execute
       
       ______________________________________________________________
                                      
     
     NOTE: Anyone who has permission to read a file can then copy that
     file. When a file is copied, the copy is owned by the person doing
     the copying. He or she can then change ownership and permissions,
     edit the file, and so on.
     
     
       ______________________________________________________________
                                      
       ______________________________________________________________
                                      
     
     NOTE: Removing write permission from a file doesn't prevent the
     file from being deleted! It does prevent it from being deleted
     accidentally, since Linux asks you whether you want to override the
     file permissions. You have to answer y, or the file will not be
     deleted.
     
     
       ______________________________________________________________
                                      
   
   Changing File Permissions
   
   
   To change file permissions, use the chmod (change [file] mode)
   command. The syntax is chmod <specification> file.
   
   There are two ways to write the permission specification. One is by
   using the numeric coding system for permissions:

darkstar:~$ ls -l myfile
-rw-r&#151;r&#151; 1 fido users 114 Dec 7 14:31 myfile
darkstar:~$ chmod 345 myfile
darkstar:~$ ls -l myfile
&#151;wxr&#151;r-x 1 fido users 114 Dec 7 14:31 myfile
darkstar:~$ chmod 701 myfile
darkstar:~$ ls -l myfile
-rwx&#151;&#151;x 1 root users 114 Dec 7 14:31 myfile

   This method has the advantage of specifying the permissions in an
   absolute, rather than relative, fashion. Also, it's easier to tell
   someone "Change permissions on the file to seven-five-five" than to
   say "Change permissions on the file to read-write-execute,
   read-execute, read-execute."
   
   You can also use letter codes to change the existing permissions. To
   specify which of the permissions to change, type u (user), g (group),
   o (other), or a (all). This is followed by a + to add permissions or a
   - to remove them. This in turn is followed by the permissions to be
   added or removed. For example, to add execute permissions for the
   group and others, you would type
   
darkstar:~$ chmod go+r myfile

   Other ways of using the symbolic file permissions are described in the
   chmod man page.
   
   Changing Directory Permissions
   
   
   You change directory permissions with chmod, exactly the same way as
   with files. Remember that if a directory doesn't have execute
   permissions, you can't cd to it.
   
       ______________________________________________________________
                                      
     
     NOTE: Any user who has write permission in a directory can delete
     files in that directory, whether or not that user owns or has write
     privileges to those files.
     Most directories, therefore, have permissions set to drwxr-xr-x.
     This ensures that only the directory's owner can create or delete
     files in that directory.
     It is especially dangerous to give write permission to all users
     for directories!
     
     
       ______________________________________________________________
                                      
   
   Miscellaneous File Commands
   
   
   There are many Linux commands to manipulate files, directories, and
   the entire file system. Many of these commands are used only by system
   administrators. You will touch on a few that are also used by ordinary
   users. These and other important system administrator commands are
   further detailed in Chapter 37, "System Administration Basics."
   
   Fear of Compression The Zipless File
   
   
   Most Linux files are stored on the installation CD-ROM in compressed
   form. This allows more information to be stored.
   
   When you installed Linux, the installation program uncompressed many
   of the files it transferred to your hard drive. However, if you look,
   you will be able to find compressed files!
   
   Any file ending in .gz&#151;for example, squashed.gz&#151;is a
   compressed file. To uncompress this particular type of file, type
   gunzip <file>. For this example, you would type gunzip squashed.gz.
   The gunzip program creates an uncompressed file and removes the .gz
   extension. Therefore, you would wind up with a normal file called
   squashed.
   
   To compress a file, use the gzip command. Typing gzip squashed would
   compress squashed and rename it squashed.gz.
   
   Another type of compressed file you might see ends with the extension
   .zip. Use unzip to uncompress these files. To create files of this
   type, use zip.
   
   How to tar Without Feathering
   
   
   In almost any location with several Linux or UNIX systems, sooner or
   later you will hear someone say, "Put that in a tar file and send it
   over."
   
   They are referring to the output created by the tar program. Although
   tar stands for tape archive, it can copy files to floppy disk or to
   any filename you specify in the Linux file system. The tar command is
   used because it can archive files and directories into a single file
   and then recreate the files and even the directory structures later.
   It's also the easiest way to place Linux files on a floppy disk.
   
   To create a tar file, you typically type tar cvf <destination>
   <files/directories>, where files/directories specifies the files and
   directories to be archived, and destination is where you want the tar
   file to be created. If you want the destination to be a floppy disk,
   you usually type /dev/fd0 as the destination. This specifies your
   primary floppy drive (A: in MS-DOS). You can use a floppy disk that's
   been formatted under MS-DOS.
   
       ______________________________________________________________
                                      
     
     NOTE: When tar archives to a floppy disk, all the data already on
     the disk is destroyed. You have to reformat it to use it with
     MS-DOS again.
     
     
       ______________________________________________________________
                                      
   To extract a tar file, you typically type tar xvf <tar file>. For
   instance, to pull files from a floppy disk, you would type tar xvf
   /dev/fd0.
   
       ______________________________________________________________
                                      
     
     NOTE: Unlike gzip, tar doesn't remove, delete, or rename files it
     puts into the archive. However, when tar extracts archived files,
     it overwrites existing files with files of the same name from the
     archive.
     
     
       ______________________________________________________________
                                      
   
   Important Directories in the Linux File System
   
   
   Most of the directories that hold Linux system files are "standard."
   Other UNIX systems will have identical directories with similar
   contents. This section summarizes some of the more important
   directories on your Linux system.
   
   /
   
   
   This is the root directory. It holds the actual Linux program, as well
   as subdirectories. Do not clutter this directory with your files!
   
   /home
   
   
   This directory holds users' home directories. In other UNIX systems,
   this can be the /usr or /u directory.
   
   /bin
   
   
   This directory holds many of the basic Linux programs. bin stands for
   binaries, files that are executable and that hold text only computers
   could understand.
   
   /usr
   
   
   This directory holds many other user-oriented directories. Some of the
   most important are described in the following sections. Other
   directories found in /usr include
   docs Various documents, including useful Linux information
   man The man pages accessed by typing man <command>
   games The fun stuff!
   
   /usr/bin
   
   
   This directory holds user-oriented Linux programs.
   
   /var/spool
   
   
   This directory has several subdirectories. mail holds mail files,
   spool holds files to be printed, and uucp holds files copied between
   Linux machines.
   
   /dev
   
   
   Linux treats everything as a file! The /dev directory holds devices.
   These are special files that serve as gateways to physical computer
   components. For instance, if you copy to /dev/fd0, you're actually
   sending data to the system's floppy disk. Your terminal is one of the
   /dev/tty files. Partitions on the hard drive are of the form /dev/hd0.
   Even the system's memory is a device!
   
   A famous device is /dev/null. This is sometimes called the bit bucket.
   All information sent to /dev/null vanishes&#151;it's thrown into the
   trash.
   
   /usr/sbin
   
   
   This directory holds system administration files. If you do an ls -l,
   you see that you must be the owner, root, to run these commands.
   
   /sbin
   
   
   This directory holds system files that are usually run automatically
   by the Linux system.
   
   /etc
   
   
   This directory and its subdirectories hold many of the Linux
   configuration files. These files are usually text, and they can be
   edited to change the system's configuration (if you know what you're
   doing!).
   
   Summary
   
   
   You should now feel more comfortable working in Linux. Understanding
   and being able to navigate the Linux file system is very important,
   since Linux really does consist simply of some files organized in a
   fairly standard way.
   
   You still might find yourself stumped by certain file or directory
   problems. Remember that the online man pages can assist you. Linux
   gives you a lot of flexibility in creating files, specifying absolute
   or relative names, and setting permissions. Don't be afraid to
   experiment (as an ordinary user, in your home directory). There are
   too many different ways to perform tasks to list or exhaustively
   describe here. Don't cling to rigid recipes written on a piece of
   paper. You learn by trying!
   
   You should go on to Chapters 9, "Introduction to the GNU Project
   Utilities," through 12, "Using tcsh," especially if you want to create
   programs or macros from system command files or learn more about the
   built-in user interface features in Linux shells. Chapter 16 has some
   very useful information about editing text files.
   
   Once you are familiar with shells and have had some practice
   manipulating files and directories, you can move on to the advanced
   topics in Part III, "Editing, Typesetting, and More," through Part
   VIII, "Advanced Programming Topics," of this book.
   

--

                              Enjoy Linux!
                          -----It's FREE!-----

※ 修改:.netiscpu 于 Jul 25 03:44:33 修改本文.[FROM: mtlab.hit.edu.cn]
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: mtlab.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:635.614毫秒