ch27 13


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:
ch27
ch27 (13)
CH27 (11)
ch27
ch27 (9)
ch27 (4)
ch27
DK2192 CH27
ch27
ch27 (3)
ch27 (2)
CH27

więcej podobnych podstron