SH.1
上传用户:jnzhq888
上传日期:2007-01-18
资源大小:51694k
文件大小:9k
- SH(1) Minix Programmer's Manual SH(1)
- NAME
- sh, ., break, case, cd, continue, eval, exec, exit, export, for, if,
- read, readonly, set, shift, trap, umask, wait, while - shell
- SYNOPSIS
- sh [-eiknqstvxu] [-c str] [file]
- OPTIONS
- -c Execute the commands in str
- -e Quit on error
- -i Interactive mode; ignore QUIT, TERMINATE, INTERRUPT
- -k Look for name=value everywhere on command line
- -n Do not execute commands
- -q Change qflag from sig_ign to sig_del
- -s Read commands from standard input
- -t Exit after reading and executing one command
- -v Echo input lines as they are read
- -x Trace
- -u Unset variables
- EXAMPLES
- sh script # Run a shell script
- DESCRIPTION
- Sh is the shell, which forms the user's main interface with the system.
- On startup, the shell reads /etc/profile and $HOME/.profile, if they
- exist, and executes any commands they contain. The Minix shell has most
- of the features of the V7 (Bourne) shell, including redirection of input
- and output, pipes, magic characters, background processes, and shell
- scripts. A brief summary follows, but whole books have been written on
- shell programming alone.
- Some of the more common notations are:
- date # Regular command
- sort <file # Redirect stdin (standard input)
- sort <file1 >file2 # Redirect stdin and stdout
- 1
- SH(1) Minix Programmer's Manual SH(1)
- cc file.c 2>error # Redirect stderr
- a.out >f 2>&1 # Combine standard output and standard error
- sort <file1 >>file2 # Append output to file2
- sort <file1 >file2 & # Background job
- (ls -l; a.out) & # Run two background commands sequentially
- sort <file | wc # Two-process pipeline
- sort <f | uniq | wc # Three-process pipeline
- ls -l *.c # List all files ending in .c
- ls -l [a-c]* # List all files beginning with a, b, or c
- ls -l ? # List all one-character file names
- ls ? # List the file whose name is question mark
- ls '???' # List the file whose name is three question
- marks
- v=/usr/ast # Set shell variable v
- ls -l $v # Use shell variable v
- PS1='Hi! ' # Change the primary prompt to Hi!
- PS2='More: ' # Change the secondary prompt to More:
- ls -l $HOME # List the home directory
- echo $PATH # Echo the search path
- echo $? # Echo exit status of previous command in
- decimal
- echo $$ # Echo shell's pid in decimal
- echo $! # Echo PID of last background process
- echo $# # Echo number of parameters (shell script)
- echo $2 # Echo second parameter (shell script)
- echo "$2" # Echo second parameter without expanding
- spaces
- echo $* # Echo all parameters (shell script)
- echo $@ # Echo all parameters (shell script)
- echo "$@" # Echo all parameters without expanding spaces
- The shell uses the following variables for specific purposes:
- SHELL the path of the current shell
- HOME the default value for the cd(1) command
- PATH the directories to be searched to find
- commands
- IFS the internal field separators for command
- strings
- PS1 the primary shell prompt
- PS2 the secondary shell prompt
- There are various forms of substitution on the shell command line:
- `...` Command string between back-quotes is replaced
- by its output
- "..." Permits variable substitution between quotes
- '...' Inhibits variable substitution between quotes
- $VAR Replaced by contents of variable VAR
- ${VAR} Delimits variable VAR from any following
- 2
- SH(1) Minix Programmer's Manual SH(1)
- string
- The expressions below depend on whether or not VAR has ever been set. If
- VAR has been set, they give:
- ${VAR-str} Replace expression by VAR, else by str
- ${VAR=str} Replace expression by VAR, else by str and set
- VAR to str
- ${VAR?str} Replace expression by VAR, else print str and
- exit shell
- ${VAR+str} Replace expression by str, else by null string
- If a colon is placed after VAR, the expressions depend on whether or not
- VAR is currently set and non-null.
- The shell has a number of built-in commands:
- : return true status
- . fn execute shell script fn on current path
- break [n] break from a for, until or while loop; exit n
- levels
- continue [n] continue a for, until or while loop; resume
- nth loop
- cd [dir] change current working directory; move to
- $HOME
- eval cmd rescan cmd, performing substitutions
- eval rescan the current command line
- exec cmd execute cmd without creating a new process
- exec <|> with no command name, modify shell I/O
- exit [n] exit a shell program, with exit value n
- export [var] export var to shell's children; list exported
- variables
- pwd print the name of the current working
- directory
- read var read a line from stdin and assign to var
- readonly [var] make var readonly; list readonly variables
- set -f set shell flag (+f unsets flag)
- set str set positional parameter to str
- set show the current shell variables
- shift reassign positional parameters (except ${0})
- one left
- times print accumulated user and system times for
- processes
- trap arg sigs trap signals sigs and run arg on receipt
- trap list trapped signals
- umask [n] set the user file creation mask; show the
- current umask
- wait [n] wait for process pid n; wait for all processes
- 3
- SH(1) Minix Programmer's Manual SH(1)
- The shell also contains a programming language, which has the following
- operators and flow control statements:
- # Comment The rest of the line is ignored
- = Assignment Set a shell variable
- && Logical AND Execute second command only if
- first succeeds
- || Logical OR Execute second command only if
- first fails
- (...) Group Execute enclosed commands
- before continuing
- for For loop (for ... in ... do ... done)
- case Case statement ((case ... ) ... ;; ... esac)
- esac Case statement end
- while While loop (while ... do ... done)
- do Do/For/While loop start (do ... until ...)
- done For/While loop end
- if Conditional statement (if ... else ... elif
- ... fi)
- in For loop selection
- then Conditional statement start
- else Conditional statement alternative
- elif Conditional statement end
- until Do loop end
- fi Conditional statement end
- SEE ALSO
- echo(1), expr(1), pwd(1), true(1).
- 4