This subsection describes the many symbols peculiar to the C shell. The topics are arranged as follows:
Special files
Filename metacharacters
Quoting
Command forms
Redirection forms
~/.cshrc | Executed at each instance of shell. |
~/.history | History list saved from previous login. |
~/.login | Executed by login shell after .cshrc at login. |
~/.logout | Executed by login shell at logout. |
/etc/passwd | Source of home directories for ~name abbreviations. |
* | Match any string of zero or more characters. |
? | Match any single character. |
[abc ...] | Match any one of the enclosed characters; a hyphen can be used to specify a range (e.g., a-z, A-Z, 0-9). |
{abc ,xxx ,...} | Expand each comma-separated string inside braces. |
~ | Home directory for the current user. |
~name | Home directory of user name . |
%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. %cd ~tom
Change totom
's home directory.
Quoting disables a character's special meaning and allows it to be used literally, as itself. The following characters have special meaning to the C shell:
; | Command separator. |
& | Background execution. |
( ) | Command grouping. |
| | Pipe. |
* ? [ ] ~ | Filename metacharacters. |
{ } | String expansion characters. Usually don't require quoting. |
> < & ! | Redirection symbols. |
! ^ | History substitution, quick substitution. |
" ' \ | Used in quoting other characters. |
` | Command substitution. |
$ | Variable substitution. |
newline space tab | Word separators. |
The characters below can be used for quoting:
" " | Everything between |
$
Variable substitution will occur.
`
Command substitution will occur.
"
This marks the end of the double quote.
\
Escape next character.
!
The history character.
' ' | Everything between |
\ | The character following a \ is taken literally. Use within " " to escape ", $, and `. 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 "Well, isn't that \"special\"?"
Well, isn't that "special"? %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
cmd & | Execute cmd in background. |
cmd1 ; cmd2 | Command sequence; execute multiple cmd s on the same line. |
(cmd1 ; cmd2 ) | Subshell; treat cmd1 and cmd2 as a command group. |
cmd1 | cmd2 | Pipe; use output from cmd1 as input to cmd2 . |
cmd1 `cmd2 ` | Command substitution; use cmd2 output as arguments to cmd1 . |
cmd1 && cmd2 | AND; execute cmd1 and then (if cmd1 succeeds) cmd2 . |
cmd1 || cmd2 | OR; execute either cmd1 or (if cmd1 fails) cmd2 . |
%nroff file &
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.
File | Common | Typical | |
---|---|---|---|
Descriptor | Name | Abbreviation | Default |
0 | Standard Input | stdin | Keyboard |
1 | Standard Output | stdout | Terminal |
2 | Standard Error | stderr | Terminal |
The usual input source or output destination can be changed as follows:
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 create 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
|
cmd >& file | Send both standard output and standard error to file . |
cmd >&! file | Same as above, even if noclobber is set. |
cmd >>& file | Append standard output and standard error to end of file . |
cmd >>&! file | Same as above, but create file even if noclobber is set. |
cmd1 |& cmd2 | Pipe standard error together with standard output. |
(cmd > f1 ) >& f2 | Send standard output to file f1 ; standard error to file f2 . |
cmd | tee files | Send output of |
%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.