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 a TAB character; CTRL-V is used to keep tcsh from trying to perform filename completion when the TAB 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 letter
  • To 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.