Differences Between Bourne and C Shell Quoting (Unix Power Tools, 3rd Edition)
27.13. Differences Between Bourne and C Shell Quoting
This
article explains quoting in C-type
shells by comparing them to Bourne-type shell quoting. If you
haven't read Section 27.12
about Bourne shell quoting, please do so now.
As in the Bourne shell, the overall idea of C shell quoting is this:
quoting turns off (disables) the special meaning of
characters. There are three quoting characters: a
single quote ('), a
double quote ("), and a backslash
(\).
27.13.1. Special Characters
The C shell
has a few more special characters in addition to the original Bourne
shell:
! { } ~
27.13.2. How Quoting Works
Table 27-2 summarizes the rules; you might want to
look back at it while you read the examples.
Table 27-2. C shell quoting characters
Quoting character
Explanation
'xxx'
Disable all special characters in xxx
except !.
"xxx"
Disable all special characters in xxx
except $, ', and !.
\x
Disable special meaning of character x. At
end of line, a \ treats the newline character like
a space (continues line).
The major differences between C and Bourne shell quoting are the
following:
The exclamation
point (!) character can be quoted only with a
backslash. That's true inside and outside single or
double quotes. So you can use history
substitution (Section 30.8) inside quotes.
For example:
% grep intelligent engineering file*.txt
grep: engineering: No such file or directory
% grep '!:1-2' !:3
grep 'intelligent engineering' file*.txt
...
In the Bourne shell, inside double quotes, a backslash
(\) stops variable and command substitution (it
turns off the special meaning of $ and
').
In the C shell, you can't disable the special
meaning of $ or ' inside double
quotes. You'll need a mixture of single and double
quotes. For example, searching for the string use the
`-c' switch takes some
work:
% fgrep "use the \`-c' switch" *.txt
Unmatched \`.
% fgrep 'use the \`-c\' switch' *.txt
Unmatched '.
% fgrep "use the "'`-c'"' switch" *.txt
hints.txt:Be sure to use the `-c' switch.
Section 29.10 shows an amazing pair of aliases
that automate complicated C shell quoting problems like this.
In the Bourne shell,
single and double quotes include newline characters. Once you open a
single or double quote, you can type multiple lines before the
closing quote.
In the C shell, if the quotes on a command line
don't match, the shell will print an error unless
the line ends with a backslash. In other words, to quote
more than one line, type a backslash at the end of each line before
the last line. Inside single or double quotes, the backslash-newline
becomes a newline. Unquoted, backslash-newline is an
argument separator:
% echo "one\
? two" three\
? four
one
two three four
-- JP
27.12. Bourne Shell Quoting27.14. Quoting Special Characters in Filenames
Copyright © 2003 O'Reilly & Associates. All rights reserved.
Wyszukiwarka
Podobne podstrony:
ch27ch27 (13)CH27 (11)ch27ch27 (9)ch27 (4)ch27DK2192 CH27ch27ch27 (3)ch27 (2)CH27więcej podobnych podstron