Red Hat Linux 9 Professional Secrets [Electronic resources] نسخه متنی

اینجــــا یک کتابخانه دیجیتالی است

با بیش از 100000 منبع الکترونیکی رایگان به زبان فارسی ، عربی و انگلیسی

Red Hat Linux 9 Professional Secrets [Electronic resources] - نسخه متنی

Naba Barkakati

| نمايش فراداده ، افزودن یک نقد و بررسی
افزودن به کتابخانه شخصی
ارسال به دوستان
جستجو در متن کتاب
بیشتر
تنظیمات قلم

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

روز نیمروز شب
جستجو در لغت نامه
بیشتر
لیست موضوعات
توضیحات
افزودن یادداشت جدید








File Utilities and the find Command



The file utilities include programs you can use to work with files and directories in your Red Hat Linux system. Table 8-3 briefly describes each of these programs. You can copy and delete files, create new directories, and change file permissions and ownerships. You can also list directories and see the amount of disk space the files use.

Because you need to use the file utilities often, the next few sections show you how to use some of them. Also provided is a brief introduction to the find command, which enables you to locate all files that meet specified criteria.














































































Table 8-3: GNU File Utilities


Program


Description


chgrp


Changes group ownership of files


chmod


Changes the permissions of files


chown


Changes the ownership of files


cp


Copies files


dd


Converts a file according to a specified format and then copies the file


df


Shows storage space (hard disk, CD-ROM, floppy, and so on) usage for the file systems


dir


Prints a brief directory listing


dircolors


Prints the command to set the LS_COLORS environment variable, used by the color version of the GNU ls program


du


Shows disk space used by files and directories


install


Copies files and sets permissions


ln


Creates links between files


ls


Lists the contents of a directory


mkdir


Creates directories, if they do not already exist


mkfifo


Creates named pipes, used for data transfer between programs (FIFO stands for first-in first-out, which is how the named pipes transfer data)


mknod


Creates special block or character device files (usually located in the

/dev directory)


mv


Renames files


rm


Deletes files


rmdir


Deletes empty directories


shred


Deletes a file securely by first overwriting it to make it harder to recover the data


sync


Flushes file system buffers to disk, thereby synchronizing memory and disk


touch


Changes the timestamps of files


vdir


Prints detailed directory listings (similar to ls -l)




Working with Files


Often, you may copy files from one directory to another. Use the

cp command to perform this task. To copy the file

/usr/X11R6/lib/X11/xinit/Xclients to the

Xclients.sample file in the current directory (such as your home directory), type the following:

cp /usr/X11R6/lib/X11/xinit/Xclients Xclients.sample

If you want to copy a file to the current directory and retain the same name, use a period (

. ) as the second argument of the

cp command. Thus, the following command copies the

XF86Config file from the

/etc/X11 directory to the current directory (denoted by a single period):

cp /etc/X11/XF86Config .

The

cp command makes a new copy of a file and leaves the original intact.








Secret


If you want to copy the entire contents of a directory—including all subdirectories and their contents—to another directory, use the command

cp -ar sourcedir destdir (this copies everything under

sourcedir directory to

destdir ). For example, to copy all files from the

/etc/X11 directory to the current directory, type the following command:

cp -ar /etc/X11 .

Another GNU utility command,

mv , moves a file to a new location. The original copy is gone, and a new copy appears at the specified destination. You can use

mv to rename a file. If you want to change the name of the

today.list to

old.list , use the

mv command, as follows:

mv today.list old.list

On the other hand, if you want to move the

today.list file to a subdirectory named

saved , use this command:

mv today.list saved

An interesting feature of

mv is the fact that you can use it to move entire directories, with all their subdirectories and files, to a new location. If you have a directory named

data that contains many files and subdirectories, you can move that entire directory structure to

old_data by using the following command:

mv data old_data











Another common file operation is deleting a file. Use the

rm command to delete a file named

old.list , for example, by typing the following command:

rm old.list





Caution

Be careful with the

rm command—in particular, when you log in as

root . Inadvertently deleting important files with

rm is very common. One way to avoid problems is to add the command

alias rm='rm -i' to the

.bash_profile file in your home directory. With that in place, whenever you use the

rm command to delete a file, the command first asks for confirmation.



Manipulating Directories


To organize files in your home directory, you have to create new directories. Use the

mkdir command to create a directory. For example, to create a directory named

images in the current directory, type the following:

mkdir images

After you create the directory, you can type the

cd images command to change to that directory.

You can create an entire directory tree by using the

-p option of the

mkdir command. For example, suppose that your system has a

/usr/src directory and you want to create the directory tree

/usr/src/book/java/examples/applets . You can create this directory hierarchy by typing the following command:

mkdir -p /usr/src/book/java/examples/applets

When you no longer need a directory, use the

rmdir command to delete it. You can delete a directory only when the directory is empty.

To remove an empty directory tree, you can use the –p option, like this:

rmdir -p /usr/src/book/java/examples/applets

This command removes the empty parent directories of

applets . The command stops when it encounters a directory that’s not empty.


Copying Disks with dd


The

dd command is useful for copying binary data to a floppy disk (or to other devices, such as tape). For example, if you want to make a Red Hat boot disk on a Linux system, you can use the

dd command to prepare the boot disk before you install Red Hat Linux from this book’s companion CD-ROMs. Perform the following steps to prepare the boot disk:



  1. Log in as

    root and mount the first CD from this book’s companion CD-ROMs on

    /mnt/cdrom (type mount /mnt/cdrom). Change to the directory with the boot images as follows:

    cd /mnt/cdrom/images



  2. Place a formatted floppy disk in the floppy drive, then type the following command to copy the

    bootdisk.img file to the floppy disk:

    dd if=bootdisk.img of=/dev/fd0 bs=1440k



If you want to copy another boot image to the floppy, replace

bootdisk.img with that file’s name.


Viewing Disk Usage Information


Two programs in the GNU file utilities—

df and

du —enable you to check disk-space usage. These commands are simple to use. The

df command shows you a summary of disk-space usage for all mounted devices, as shown in the following example:


df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hda5 7392428 3412688 3604224 49% /
/dev/hda3 101107 8865 87021 10% /boot
none 127328 0 127328 0% /dev/shm
/dev/cdrom 75322 75322 0 100% /mnt/cdrom

The output is a table that shows the device, the total kilobytes of storage, how much is in use, how much is available, the percentage being used, and the mount point. For example, on my system, the

/dev/hda5 device (a disk partition) is mounted on the Linux file system’s root directory; it has about 7.4GB of space, of which 3.4GB (or 49 percent) is being used, and 3.6GB is available. Similarly, you can see from the last line that the CD-ROM has about 75MB of storage in use.

The other command,

du , is useful for finding out how much space a directory is using. For example, type the following command to view the contents of all the subdirectories in the

/var/log directory (this directory contains various error logs):


du /var/log
4 /var/log/vbox
12528 /var/log/cups
4 /var/log/samba
4 /var/log/news/OLD
8 /var/log/news
60 /var/log/httpd
4 /var/log/squid
36 /var/log/gdm
14764 /var/log

Each directory name is preceded by a number—that number denotes the number of kilobytes of disk space that directory uses. Thus, the

/var/log directory, as a whole, uses 14764KB, or about 14.7MB, of disk space, whereas the

/var/log/httpd subdirectory uses 60KB.

You can use the

-h option with the

du command to view the disk-space usage in human-readable format. For example, here’s what you get when you type du -h /var/log to view the disk space used by the

/var/log directory and its contents:


du -h /var/log
4.0K /var/log/vbox
13M /var/log/cups
4.0K /var/log/samba
4.0K /var/log/news/OLD
8.0K /var/log/news
60K /var/log/httpd
4.0K /var/log/squid
36K /var/log/gdm
15M /var/log

If you simply want the total disk space a directory uses (including all the files and subdirectories contained in that directory), use the

-s option together with the

-h option, as follows:

du -sh /var/log
15M /var/log

Notice that the

-s option causes

du to print just the summary information for the

/var/log directory.


Learning the find Command


The

find command is very useful for locating files (and directories) that meet specified search criteria. The Linux version of the find command also comes from GNU, and it has more extensive options than the standard UNIX version. I show the syntax for the standard UNIX find command, however, because it syntax works in GNU find, and you can use the same format on other UNIX systems.

I must admit that when I began using UNIX many years ago (Berkeley UNIX in the early 1980s), I was confounded by the

find command. I stayed with one basic syntax of

find for a long time before graduating to more complex forms. The basic syntax I learned first was for finding a file anywhere in the file system.

Suppose that you want to find any file or directory with a name that starts with gnome. You can use find to perform this search, as follows:

find / -name "gnome*" -print

This command tells find to start looking at the root directory (

/ ), to look for filenames that match

gnome* , and to display the full pathname of any matching file.

You can use variations of this simple form of find to locate a file in any directory (as well as any subdirectories contained in the directory). If you forget where in your home directory you have stored all files named

report* (names that start with the text string

report ), you can search for the files by using the following command:

find ~ -name "report*" -print

When you become comfortable with this syntax of

find , you can use other options of

find . For example, to find only specific types of files (such as directories), use the

-type option. The following command displays all top-level directory names in your Linux system:

find / -type d -maxdepth 1 -print

To find all files that exceed 20,000KB (20MB) in size, you can use the following

find command:

find / -size +20000k -print








Secret


You can also execute some command [i1]on a file after you find it. For example, suppose that you want to search for the files that exceed 20,000KB in size and then print a detailed directory listing of that file. You can use the

-exec operator of

find to execute the

ls -l command on each file that matches the search criteria, like this:

find / -size +20000k -exec ls -l {} \;

The

-exec operator enables you to run any command on the files that meet whatever search criteria you use with

find . You can type the command to execute following the

-exec operator, then list any arguments, and end the list with a semicolon (

; ). However, the shell treats semicolon as command-separator, so you must place a backslash (

\ ) in front of the semicolon to stop the shell from interpreting it. That’s why every

-exec operator ends with the characters

\; . The curly brace pair

{} is also has special meaning. The

find command replaces the characters

{} with the name of the file it has found—the file that satisfies whatever search criteria you have provided.

Another good use of

find ’s

-exec operator is to find the files with permission settings that may be too dangerous and then change the permission by using the

chmod command. For example, suppose you want to locate any file with a group-write permission (that means the group owner is allowed to alter the file) and take away that permission. Here is a

find command that uses the

-exec operator to accomplish this task:

find / -perm -20 -exec chmod g-w {} \;











You probably do not have to use the complex forms of

find very often in a typical Linux system, but you can look up the rest of the find options by using the following command:

man find


/ 341