aboutsummaryrefslogtreecommitdiff
path: root/release/picobsd/tinyware/msh/sh.1
diff options
context:
space:
mode:
Diffstat (limited to 'release/picobsd/tinyware/msh/sh.1')
-rw-r--r--release/picobsd/tinyware/msh/sh.1261
1 files changed, 261 insertions, 0 deletions
diff --git a/release/picobsd/tinyware/msh/sh.1 b/release/picobsd/tinyware/msh/sh.1
new file mode 100644
index 000000000000..f19bce02cb7a
--- /dev/null
+++ b/release/picobsd/tinyware/msh/sh.1
@@ -0,0 +1,261 @@
+.TH SH 1
+.SH NAME
+sh, ., break, case, cd, continue, eval, exec, exit, export, for, if, read, readonly, set, shift, trap, umask, wait, while \- shell
+.SH SYNOPSIS
+\fBsh\fR [\fB\-eiknqstvxu\fR] [\fB\-c \fIstr\fR] \fB[\fIfile\fR]\fR
+.br
+.de FL
+.TP
+\\fB\\$1\\fR
+\\$2
+..
+.de EX
+.TP 20
+\\fB\\$1\\fR
+# \\$2
+..
+.SH OPTIONS
+.FL "\-c" "Execute the commands in \fIstr\fR"
+.FL "\-e" "Quit on error"
+.FL "\-i" "Interactive mode; ignore QUIT, TERMINATE, INTERRUPT"
+.FL "\-k" "Look for name=value everywhere on command line"
+.FL "\-n" "Do not execute commands"
+.FL "\-q" "Change qflag from sig_ign to sig_del"
+.FL "\-s" "Read commands from standard input"
+.FL "\-t" "Exit after reading and executing one command"
+.FL "\-v" "Echo input lines as they are read"
+.FL "\-x" "Trace"
+.FL "\-u" "Unset variables"
+.SH EXAMPLES
+.EX "sh script" "Run a shell script"
+.SH DESCRIPTION
+.PP
+.I 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.
+.LP
+Some of the more common notations are:
+.PP
+.in +2.45i
+.ta 2i 2.2i
+.ti -2.2i
+date # Regular command
+.ti -2.2i
+sort <file # Redirect \fIstdin\fR (standard input)
+.ti -2.2i
+sort <file1 >file2 # Redirect \fIstdin\fR and \fIstdout\fR
+.ti -2.2i
+cc file.c 2>error # Redirect \fIstderr\fR
+.ti -2.2i
+a.out >f 2>&1 # Combine standard output and standard error
+.ti -2.2i
+sort <file1 >>file2 # Append output to \fIfile2\fR
+.ti -2.2i
+sort <file1 >file2 & # Background job
+.ti -2.2i
+(ls \-l; a.out) & # Run two background commands sequentially
+.ti -2.2i
+sort <file | wc # Two-process pipeline
+.ti -2.2i
+sort <f | uniq | wc # Three-process pipeline
+.ti -2.2i
+ls \-l *.c # List all files ending in \fI.c\fR
+.ti -2.2i
+ls \-l [\fIa-c\fR]* # List all files beginning with \fIa\fR, \fIb\fR, or \fIc\fR
+.ti -2.2i
+ls \-l ? # List all one-character file names
+.ti -2.2i
+ls \e? # List the file whose name is question mark
+.ti -2.2i
+ls \(fm???\(fm # List the file whose name is three question marks
+.ti -2.2i
+v=/usr/ast # Set shell variable \fIv\fR
+.ti -2.2i
+ls \-l $v # Use shell variable \fIv\fR
+.ti -2.2i
+PS1=\(fmHi! \(fm # Change the primary prompt to \fIHi!\fR
+.ti -2.2i
+PS2=\(fmMore: \(fm # Change the secondary prompt to \fIMore:\fR
+.ti -2.2i
+ls \-l $HOME # List the home directory
+.ti -2.2i
+echo $PATH # Echo the search path
+.ti -2.2i
+echo $? # Echo exit status of previous command in decimal
+.ti -2.2i
+echo $$ # Echo shell's pid in decimal
+.ti -2.2i
+echo $! # Echo PID of last background process
+.ti -2.2i
+echo $# # Echo number of parameters (shell script)
+.ti -2.2i
+echo $2 # Echo second parameter (shell script)
+.ti -2.2i
+echo "$2" # Echo second parameter without expanding spaces
+.ti -2.2i
+echo $* # Echo all parameters (shell script)
+.ti -2.2i
+echo $@ # Echo all parameters (shell script)
+.ti -2.2i
+echo "$@" # Echo all parameters without expanding spaces
+.in -2.45i
+.LP
+The shell uses the following variables for specific purposes:
+.PP
+.in +2.25i
+.ta 2i
+.ti -2i
+SHELL the path of the current shell
+.ti -2i
+HOME the default value for the cd(1) command
+.ti -2i
+PATH the directories to be searched to find commands
+.ti -2i
+IFS the internal field separators for command strings
+.ti -2i
+PS1 the primary shell prompt
+.ti -2i
+PS2 the secondary shell prompt
+.in -2.25i
+.LP
+There are various forms of substitution on the shell command line:
+.PP
+.in +2.25i
+.ta 2i
+.ti -2i
+`...` Command string between back-quotes is replaced by its output
+.ti -2i
+"..." Permits variable substitution between quotes
+.ti -2i
+\&'...' Inhibits variable substitution between quotes
+.ti -2i
+$VAR Replaced by contents of variable VAR
+.ti -2i
+${VAR} Delimits variable VAR from any following string
+.in -2.25i
+.LP
+The expressions below depend on whether or not VAR has ever been set.
+If VAR has been set, they give:
+.PP
+.in +2.25i
+.ta 2i
+.ti -2i
+${VAR-str} Replace expression by VAR, else by str
+.ti -2i
+${VAR=str} Replace expression by VAR, else by str and set VAR to str
+.ti -2i
+${VAR?str} Replace expression by VAR, else print str and exit shell
+.ti -2i
+${VAR+str} Replace expression by str, else by null string
+.in -2.25i
+.LP
+If a colon is placed after VAR, the expressions depend on whether or not
+VAR is currently set and non-null.
+.LP
+The shell has a number of built-in commands:
+.PP
+.in +2.25i
+.ta 2i
+.ti -2i
+: return true status
+.ti -2i
+\&. fn execute shell script fn on current path
+.ti -2i
+break [n] break from a for, until or while loop; exit n levels
+.ti -2i
+continue [n] continue a for, until or while loop; resume nth loop
+.ti -2i
+cd [dir] change current working directory; move to $HOME
+.ti -2i
+eval cmd rescan cmd, performing substitutions
+.ti -2i
+eval rescan the current command line
+.ti -2i
+exec cmd execute cmd without creating a new process
+.ti -2i
+exec <|> with no command name, modify shell I/O
+.ti -2i
+exit [n] exit a shell program, with exit value n
+.ti -2i
+export [var] export var to shell's children; list exported variables
+.ti -2i
+pwd print the name of the current working directory
+.ti -2i
+read var read a line from stdin and assign to var
+.ti -2i
+readonly [var] make var readonly; list readonly variables
+.ti -2i
+set -f set shell flag (+f unsets flag)
+.ti -2i
+set str set positional parameter to str
+.ti -2i
+set show the current shell variables
+.ti -2i
+shift reassign positional parameters (except ${0}) one left
+.ti -2i
+times print accumulated user and system times for processes
+.ti -2i
+trap arg sigs trap signals sigs and run arg on receipt
+.ti -2i
+trap list trapped signals
+.ti -2i
+umask [n] set the user file creation mask; show the current umask
+.ti -2i
+wait [n] wait for process pid n; wait for all processes
+.in -2.25i
+.LP
+The shell also contains a programming language, which has the following
+operators and flow control statements:
+.PP
+.in +3.50i
+.ta 2i 3.25i
+.ti -3.25i
+# Comment The rest of the line is ignored
+.ti -3.25i
+= Assignment Set a shell variable
+.ti -3.25i
+&& Logical AND Execute second command only if first succeeds
+.ti -3.25i
+|| Logical OR Execute second command only if first fails
+.ti -3.25i
+(...) Group Execute enclosed commands before continuing
+.in -3.50i
+.PP
+.in +2.25i
+.ta 2i
+.ti -2i
+for For loop (for ... in ... do ... done)
+.ti -2i
+case Case statement ((case ... ) ... ;; ... esac)
+.ti -2i
+esac Case statement end
+.ti -2i
+while While loop (while ... do ... done)
+.ti -2i
+do Do/For/While loop start (do ... until ...)
+.ti -2i
+done For/While loop end
+.ti -2i
+if Conditional statement (if ... else ... elif ... fi)
+.ti -2i
+in For loop selection
+.ti -2i
+then Conditional statement start
+.ti -2i
+else Conditional statement alternative
+.ti -2i
+elif Conditional statement end
+.ti -2i
+until Do loop end
+.ti -2i
+fi Conditional statement end
+.in -2.25i
+.SH "SEE ALSO"
+.BR echo (1),
+.BR expr (1),
+.BR pwd (1),
+.BR true (1).