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 < schedor 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.nodigitsTo pass a
TABto a command in tcsh. The following command looks for lines in a file that contain aTABcharacter;CTRL-Vis used to keep tcsh from trying to perform filename completion when theTABis typed:%
grep 'CTRL-VTAB' fileTo 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:
%
finddir-namepattern-printHowever, any special characters in
patternmust be quoted so that the shell passes them through to find:%
find . -name \*.c -printFind filenames ending with .c %find . -name '*[A-Za-z]*' -printFind filenames containing a letterTo send mail ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access