Passing Special Characters to Commands
So far we've focused on special characters that occur in filenames, but the shell's quoting rules can be used for any argument, whether or not it refers to a filename. Here are some other situations in which quoting is useful:
To group multiple words into a single argumentâfor example, to specify multiple word subject arguments to a mailer:
%
mail -s "schedule for tomorrow" carter < sched
or to search through files for words that occur together:
%
grep "three word phrase" *
To pass arguments to programs such as grep or sed, which understand their own sets of special characters. The following command deletes input lines containing digits; the expression argument must be quoted because it contains brackets:
%
sed -e '/[0-9]/d' file > file.nodigits
To pass a
TAB
to a command in tcsh. The following command looks for lines in a file that contain aTAB
character;CTRL-V
is used to keep tcsh from trying to perform filename completion when theTAB
is typed:%
grep 'CTRL-VTAB' file
To pass filename patterns to programs like find which are capable of doing their own filename pattern matching. find can be used as follows to locate all filenames in or under a given directory that match a pattern:
%
find
dir
-name
pattern
-print
However, any special characters in
pattern
must be quoted so that the shell passes them through to find:%
find . -name \*.c -print
Find filenames ending with .c %find . -name '*[A-Za-z]*' -print
Find filenames containing a letterTo send ...
Get Using csh & tcsh now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.