start page | rating of books | rating of authors | reviews | copyrights

UNIX in a Nutshell: System V Edition

UNIX in a Nutshell: System V EditionSearch this book
Previous: 5.1 Overview of Features Chapter 5
The C Shell
Next: 5.3 Variables
 

5.2 Syntax

This subsection describes the many symbols peculiar to the C shell. The topics are arranged as follows:

5.2.1 Special Files

~/.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.

5.2.2 Filename Metacharacters

* 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 .

5.2.2.1 Examples

% 

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 to
 
tom

's home directory.

5.2.3 Quoting

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 " 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.

' '

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 ` . Often used to escape itself, spaces, or newlines. Always needed to escape a history character (usually ! ).

5.2.3.1 Examples

% 

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

5.2.4 Command Forms

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 .

5.2.4.1 Examples

% 

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.

5.2.5 Redirection Forms

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:

5.2.5.1 Simple Redirection

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 text ( text can be stored in a shell variable).Input is usually typed on the screen or in the shell program. Commands that typically use this syntax include cat , echo , ex , and sed . If text is enclosed in quotes, standard input will not undergo variable substitution, command substitution, etc.

5.2.5.2 Multiple Redirection

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 cmd to standard output (usually the terminal) and to files . (See the example in Section 2 under tee .)

5.2.5.3 Examples

% 

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.


Previous: 5.1 Overview of Features UNIX in a Nutshell: System V Edition Next: 5.3 Variables
5.1 Overview of Features Book Index 5.3 Variables

The UNIX CD Bookshelf Navigation The UNIX CD BookshelfUNIX Power ToolsUNIX in a NutshellLearning the vi Editorsed & awkLearning the Korn ShellLearning the UNIX Operating System