The shell's pattern strings can be simple or complex, but even using a small subset of the available characters in simple wildcards can yield constructive results at the command line. Some common characters used for shell pattern matching are the following:
► *
—Matches any character. For example, to find all files in the current directory ending in .txt,
you could use
$ ls *.txt
► ?
— Matches a single character. For example, to find all files in the current directory ending in the extension .d?c
(where ?
could be 0-9, a-z, or A-Z),
$ ls *.d?c
► [xxx]
or [x-x]
— Matches a range of characters. For example, to list all files in a directory with names containing numbers,
$ ls *[0-9]*
► \x — Matches or escapes a character such as ? or a tab character. For example, to create a file with a name containing a question mark,
$ touch foo\?
Note that the shell might not interpret some characters or regular expressions in the same manner as a Linux command, and mixing wildcards and regular expressions in shell scripts can lead to problems unless you're careful. For example, finding patterns in text is best left to regular expressions used with commands such as grep; simple wildcards should be used for filtering or matching filenames on the command line. And although both Linux command expressions and shell scripts can recognize the backslash as an escape character in patterns, the dollar sign ( $
) has two wildly different meanings (single-character pattern matching in expressions and variable assignment in scripts).
CAUTION
Make sure that you read your command carefully when using wildcards; an all-too-common error is to type something like rm -rf * .txt
with a space between the *
and the .txt
. By the time you wonder why the command is taking so long, bash
will already have deleted most of your files. The problem is that it treats the *
and the .txt
separately. *
matches everything, so bash
deletes all your files.
Many Linux commands can be used in concert in a single, connected command line to transform data from one form to another. Stringing Linux commands together in this fashion is known as using or creating pipes. Pipes are created on the command line with the bar operator (|). For example, a pipe can be used to perform a complex task from a single command line like this:
$ find /d2 -name '*.txt' -print | xargs cat | \
tr ' ' '\n' | sort | uniq >output.txt
This example takes the output of the find
command to feed the cat
command (via xargs)
the name of all text files under the /d2
command. The content of all matching files is then fed through the tr
command to change each space in the data stream into a carriage return. The stream of words is then sorted, and identical adjacent lines are removed with the uniq
command. The output, a raw list of words, is then saved in the file named output.txt.
The shell enables you to start a command and then launch it into the background as a process by using an ampersand ( &
) at the end of a command line. This technique is often used at the command line of an X terminal window to start a client and return to the command line. For example, to launch another terminal window using the xterm
client,
$ xterm &
[3] 1437
The numbers echoed back show a number ( 3
in this example), which is a job number, or reference number for a shell process, and a Process ID number, or PID ( 1437
in this example). You can kill the xterm
window session by using the shell's built-in kill
command, along with the job number like this:
$ kill %3
Or the process can be killed with the kill
command, along with the PID, like so:
$ kill 1437
Background processing can be used in shell scripts to start commands that take a long time, such as backups:
# tar -czf /backup/home.tgz /home &
Related Fedora and Linux Commands
You can use these commands and tools when using the shell or writing shell scripts:
► chsh
— Command used to change one's login shell
► kibitz
— Allows two-person interaction with a single shell
► mc
— A visual shell named the GNU Midnight Commander
► nano
— An easy-to-use text editor for the console
► system-config-users
— A graphical user-management utility that can be used to change one or more user login shells
► shar
— Command used to create shell archives
► vi
— The vi
(actually vim)
text editor
► http://www.linuxgazette.com/issue70/ghosh.html— A Linux Gazette article on "Bootstrapping Linux," which includes much detail on the BIOS and MBR aspects of the boot process.
► http://www.lostcircuits.com/advice/bios2/1.shtml— the LostCircuits BIOS guide; much detail on the meaning of all those BIOS settings.
► http://www.rojakpot.com/default.aspx?location=1— The BIOS Optimization Guide; details on tweaking those BIOS settings to your heart's content.
► http://www-106.ibm.com/developerworks/linux/library/l-slack.html— A link through IBM's website to an article on booting Slackware Linux, along with a sidebar about the history of System V versus BSD init
scripts.
► /usr/src/linux/init/main.c— This file in the Linux source code is the best place to learn about how Linux boots. Fascinating reading, really. Get it from the source!
► http://sunsite.dk/linux-newbie/— Home page for the Linux Newbie Administrator Guide — a gentle introduction to Linux System Administration.
► http://www.gnu.org/software/grub/manual/— The still yet-to-be-completed GRUB Manual. On your Fedora system, info grub
provides a plethora of information, and a sample grub.conf
file ( /boot/grub/menu.lst
is a symbolic link to /boot/grub/grub.conf
; use either name) can be found in /usr/doc/grub
.
► LILO User's Guide— Werner Almesberger's definitive technical tome on the LInux LOader, or LILO, and how it works on Intel-based PCs. Look under the /usr/share/doc/lilo*/doc
directory for the file User_Guide.ps
, which can be viewed with the gv client. LILO has been dropped from Fedora; GRUB is now the default boot loader supported in the distribution.
► "Managing Initscripts with Red Hat's chkconfig"— by Jimmy Ball, Linux Journal, April 2001; pp. 128-132.
► "Grub, Glorious Grub"— Hoyt Duff, Linux Format, August 2001; pp. 58-61. A tutorial on the GRUB boot loader.
► http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/custom-guide/s1-services-serviceconf.html— Red Hat's guide to use the system-config-service
client (then called redhat-config-service
).
► http://www.linuxbase.org/spec/refspecs/LSB_1.0.0/gLSB/sysinit.html— The Linux Standard Base description of system initialization; this is the standard.
Читать дальше