8.3. Syntax
This section
describes the many symbols used by tcsh. The topics are arranged as follows:
-
Special files
-
Filename metacharacters
-
Quoting
-
Command forms
-
Redirection forms
8.3.1. Special Files
Filename
|
Description
|
~/.tcshrc or ~/.cshrc
|
Executed at each instance of shell startup. If no
~/.tcshrc is found, tcsh uses ~/.cshrc if
present.
|
~/.login
|
Executed by login shell after .tcshrc at login.
|
~/.cshdirs
|
Executed by login shell after .login.
|
~/.logout
|
Executed by login shell at logout.
|
/etc/passwd
|
Source of home directories for ~name abbreviations.
|
8.3.2. Filename Metacharacters
Characters
|
Meaning
|
*
|
Match any string of 0 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.
|
8.3.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
8.3.3. Quoting
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 tcsh.
Characters
|
Description
|
;
|
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 that follow can be used for quoting:
- " "
-
Everything between " and " is taken literally except for the following
characters, which keep their special meaning:
- $
-
Variable substitution will occur.
- `
-
Command substitution will occur.
- "
-
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).
- \
-
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 !).
8.3.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
8.3.4. Command Forms
Command
|
Action
|
cmd &
|
Execute cmd in background.
|
cmd1 ;
cmd2
|
Command sequence; execute multiple cmds 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; run cmd2 first and use its
output as arguments to cmd1.
|
cmd1 ||
cmd2
|
OR; execute either cmd1 or (if
cmd1 fails) cmd2.
|
cmd1 &&
cmd2
|
AND; execute cmd1 and then (if
cmd1 succeeds) cmd2.
|
8.3.4.1. Examples
% 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 Echo an error message if XX not found
8.3.5. Redirection Forms
File descriptor
|
Name
|
Common abbreviation
|
Typical default
|
0
|
Standard input
|
stdin
|
Keyboard
|
1
|
Standard output
|
stdout
|
Screen
|
2
|
Standard error
|
stderr
|
Screen
|
The
usual input source or output destination can be changed with
redirection commands listed in the following sections.
8.3.5.1. Simple redirection
Command
|
Action
|
cmd >
file
|
Send output of cmd to file
(overwrite).
|
cmd >!
file
|
Same as preceding, even if noclobber
is set.
|
cmd >>
file
|
Send output of cmd to file
(append).
|
cmd>>!
file
|
Same as preceding, 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 usually is 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.
|
8.3.5.2. Multiple redirection
Command
|
Action
|
cmd >&
file
|
Send both standard output and standard error to
file.
|
cmd >&!
file
|
Same as preceding, even if noclobber
is set.
|
cmd >>& file
|
Append standard output and standard error to end of
file.
|
cmd >>&! file
|
Same as preceding, even if noclobber
is set.
|
cmd1 |&
cmd2
|
Pipe standard error together with standard output.
|
(cmd> f1) >& f2
|
Send standard output to file f1 and standard
error to file f2.
|
cmd | tee
files
|
Send output of cmd to standard output (usually
the screen) and to files. (See the example in
Chapter 3 under tee.)
|
8.3.5.3. Examples
% cat part1 > book Copy part1 to book
% cat part2 part3 >> book Append parts 2 and 3 to same file as part1
% mail tim < report Take input to message from report
% cc calc.c >& error_out Store all messages, including errors
% cc newcalc.c >&! error_out Overwrite old file
% grep Unix ch* |& pr Pipe all messages, including errors
% (find / -print > filelist) >& no_access Separate error messages from list of files
% sed 's/^/XX /' << "END_ARCHIVE" Supply text right after command
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"
| | | 8.2. Invoking the Shell | | 8.4. Variables |
Copyright © 2003 O'Reilly & Associates. All rights reserved.
|