This section describes the many symbols peculiar to the C shell. The topics are arranged as follows:
Special files
Filename metacharacters
Quoting
Command forms
Redirection forms
% ls new*
Match new and new.1
% cat ch?
Match ch9 but not ch10
% vi [D-R]*
Match files that begin with uppercase D through R
% ls {ch,app}?
Expand, then match ch1, ch2, app1, app2
% mv info{,.old}
Expands to mv info info.old
% cd ~tom
Change to tom's home directory
Quoting disables a character's special meaning and allows it to be used literally, as itself. The characters in the following table have special meaning to the C shell.
These characters can be used for quoting:
" "
Everything between "
and "
is taken literally, except for the following characters that keep their special meaning:
$
Variable substitution will occur.
`
Command substitution will occur.
"
This marks the end of the double quote.
\
Escape next character.
!
The history character.
newline
The newline character.
' '
Everything between '
and '
is taken literally except for !
(history) and another '
, and newline.
\
The character following a \
is taken literally. Use within ""
to escape "
, $
, `
, and newline. Use within ''
to escape newlines. Often used to escape itself, spaces, or newlines. Always needed to escape a history character (usually !
).
% echo 'Single quotes "protect" double quotes'
Single quotes "protect" double quotes
% echo "Don't double quotes protect single quotes too?"
Don't double quotes protect single quotes too?
% echo "You have `ls|wc -l` files in `pwd`"
You have 43 files in /home/bob
% echo The value of \$x is $x
The value of $x is 100
% nroff file > file.out &
Format in the background
% cd; ls
Execute sequentially
% (date; who; pwd) > logfile
All output is redirected
% sort file | pr -3 | lp
Sort file, page output, then print
% vi `grep -l ifdef *.c`
Edit files found by grep
% egrep '(yes|no)' `cat list`
Specify a list of files to search
% grep XX file && lp file
Print file if it contains the pattern,
% grep XX file || echo XX not found
otherwise, echo an error message
The usual input source or output destination can be changed, as seen in the following sections.
- cmd
>
file
Send output of cmd
to file
(overwrite).
- cmd
>!
file
Same as above, even if noclobber
is set.
- cmd
>>
file
Send output of cmd
to file
(append).
- cmd
>>!
file
Same as above, but write to file
even if noclobber
is set.
- cmd
<
file
Take input for cmd
from file
.
- cmd
<<
text
Read standard input up to a line identical to text
(text
can be stored in a shell variable). Input is usually typed at the terminal or in the shell program. Commands that typically use this syntax include cat
, echo
, ex
, and sed
. If text
is quoted (using any of the shell-quoting mechanisms), the input is passed through verbatim.
% cat part1 > book
% cat part2 part3 >> book
% mail tim < report
% cc calc.c >& error_out
% cc newcalc.c >&! error_out
% grep Unix ch* |& pr
% (find / -print > filelist) >& no_access
% sed 's/^/XX /g' << "END_ARCHIVE"
This is often how a shell archive is "wrapped",
bundling text for distribution. You would normally
run sed from a shell program, not from the command line.
"END_ARCHIVE"
XX This is often how a shell archive is "wrapped",
XX bundling text for distribution. You would normally
XX run sed from a shell program, not from the command line.
|