3.3.3.4.1. General line filtering
A simple but powerful program, grep is
used for filtering input lines and returning certain patterns to
the output. There are literally thousands of applications for the
grep program. In the example below,
jerry uses grep to see how he did
the thing with find:
jerry:~> grep -a find .bash_history
find . -name userinfo
man find
find ../ -name common.cfg
|
|
Search history |
|
Also useful in these cases is the search function in bash, activated by pressing Ctrl+R at once, such as in the
example where we want to check how we did that last find again:
thomas ~> ^R
(reverse-i-search)`find': find `/home/thomas` -name *.xml
|
Type your search string at the search prompt. The more
characters you type, the more restricted the search gets. This
reads the command history for this shell session (which is written
to .bash_history in your home directory
when you quit that session). The most recent occurrence of your
search string is shown. If you want to see previous commands
containing the same string, type Ctrl+R again.
See the Info pages on bash for more.
|
All UNIXes with just a little bit of decency have an online
dictionary. So does Linux. The dictionary is a list of known words
in a file named words, located in
/usr/share/dict. To quickly check the
correct spelling of a word, no graphical application is needed:
william:~> grep pinguin /usr/share/dict/words
william:~> grep penguin /usr/share/dict/words
penguin
penguins
|
|
Dictionary vs. word
list |
|
Some distributions offer the dict
command, which offers more features than simply searching words in
a list.
|
Who is the owner of that home directory next to mine? Hey,
there's his telephone number!
lisa:~> grep gdbruyne /etc/passwd
gdbruyne:x:981:981:Guy Debruyne, tel 203234:/home/gdbruyne:/bin/bash
|
And what was the E-mail address of Arno again?
find and locate
are often used in combination with grep to
define some serious queries. For more information, see
Chapter 5 on I/O redirection.
3.3.3.4.2. Special characters
Characters that have a special meaning to the shell have to be
escaped. The escape character in Bash is backslash, as in most shells; this
takes away the special meaning of the following character. The
shell knows about quite some special characters, among the most
common /, ., ? and *. A full list can be found in the Info pages
and documentation for your shell.
For instance, say that you want to display the file "*" instead of all the files in a directory, you
would have to use
less \*
The same goes for filenames containing a space:
cat This\
File