[comp.sources.amiga] v91i032: CShell 5.00 - alternative command interface, Part06/06

amiga-request@ab20.larc.nasa.gov (Amiga Sources/Binaries Moderator) (03/04/91)

Submitted-by: <umueller@iiic.ethz.ch>
Posting-number: Volume 91, Issue 032
Archive-name: shells/cshell-5.00/part06

#!/bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 6 (of 6)."
# Contents:  shell.doc.aa
# Wrapped by tadguy@ab20 on Sun Mar  3 16:56:02 1991
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'shell.doc.aa' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'shell.doc.aa'\"
else
echo shar: Extracting \"'shell.doc.aa'\" \(34966 characters\)
sed "s/^X//" >'shell.doc.aa' <<'END_OF_FILE'
X
X		INSTRUCTIONS FOR SHELL VERSION: 5.00 17-Feb-91
X		==============================================
X
X  Contents
X  --------
X
X	O.	Installation
X	I.	Description
X	II.	Overview of Major features
X	III.	Restrictions
X	IV.	PIPES
X	V.	Command Pre-processor
X	VI.	Command Line Editing
X	VII.	Function Keys
X	VIII.	Shell Commands
X	IX.	Special Set Variables
X	X.	Functions
X	XI.	Miscellaneous
X	XII.	Example source files
X	XIII.	Default values
X	XIV.	Object oriented features
X	XV.	Keymaps
X
X
X
XO.  Installation
X----------------
X
XYou  can  simply  invoke  csh  from  the command line or at the end of your
Xstartup-sequence,  because csh is, from the AmigaDOS standpoint, not a true
Xshell  like  l:shell-seg.  Nevertheless, csh is 'pure', so if your archiver
Xforgot  to  set  the  'p'  bit,  do  it right now. 
X
XIn order to run simple AmigaDOS batch files, you must make sure that they
Xdon't use arguments (.key, .bra stuff), and you must replace ';' by ';#',
Xso comments are comments both to AmigaDOS and CShell.
X
XProposed final setup:  If you want to make csh resident, do the following:
X
XKickstart 1.3
X1. Copy csh anywhere on your (hard)disk, e.g. dh1:tools
X2. Make sure your s:startup-sequence contains:
X	Resident CLI L:Shell-Seg SYSTEM PURE ADD
X	Resident dh1:tools/csh ADD
X	NewCLI FROM s:csh-startup
X	EndCLI
X3. Put the following in s:csh-startup
X	csh -r s:firstlogin.sh
X4. In s:firstlogin.sh, put any commands to be called only once, like setmap,
X   assign, setclock. This is a shell script, use # for comments, and don't
X   use .key type commands. At the end of this file, add
X	source s:login.sh
X5. In s:login.sh, you put any commands that need to be invocated on every
X   invocation, like 'alias', 'set' and so on.
X6. Put the following the s:cli-startup and s:shell-startup, so csh will be
X   started in any window opened by NewCLI or from workbench.
X	csh s:login.sh
X
XKickstart 2.0
X1. Copy csh anywhere on your (hard)disk, e.g. dh1:tools
X2. Make sure your s:startup-sequence contains:
X	Resident dh1:tools/csh ADD
X	csh s:firstlogin.sh
X3. Proceed from step 4 in kickstart 1.3
X
X
X
XI.  DESCRIPTION
X---------------
X
XThis version of Shell is the follow of:
X	Shell V2.04 (C)Copyright 1986, Matthew Dillon, All Rights Reserved
X	Shell V2.04M-V2.07M by Steve Drew
X	Shell V2.08MI, V3.xxA and V4.xxA by Carlo Borreo & Cesare Dieni
X	Shell V5.0x (and V4.9x) by Urban Mueller
X
XIf you have any wishes, bug reports or beer bottles, send them to:
X
X	   FIDONET: AUGL BBS, 2:302/906
X	   USENET:  umueller@iiic.ethz.ch
Xor
X	   Urban Mueller
X	   Schulhausstrasse 83
X	CH-6312 Steinhausen
X	   SWITZERLAND
X
XPlease   check  the  'restrictions'  and  'known  bugs'  paragraphs  before
Xreporting  any  bugs.  The support BBS is AUGL, +41 75 8 20 19, +41 75 8 20
X18,   +41   75   2   15  87  (all  lines  USRobotics  HST)  login='cshell',
Xpassword='support'
X
XFor versions prior to 4.9 send suggestions/criticism/anything else to Carlo
XBorreo or Cesare Dieni at:
X
X	   BITNET:  PERUGIA@ICNUCEVM.BITNET
X	   FIDONET: 2:332/602.0@FIDONET
Xor
X	   Carlo Borreo			Cesare Dieni
X	   Via G. Berio 34		Via G. Taddei 3
X	   I-18100 Imperia		I-56100 Pisa
X	   Italy			Italy
X
XYou may distribute this program unmodified and for non-profit only.
X
X*** YOU MAY NOT MODIFY THIS PROGRAM AND REDISTRIBUTE IT ***
X
XIf  everyone  writes his own version of Shell and distributes it, we would be
Xcovered  by  Shell  versions.   If  you make a modification to Shell that you
Xwould  like  to  share  with  other users, please send us a DIFF output, or a
Xdescription of what you need.
X
XACKNOLEDGEMENTS
X---------------
X
XArexx is a program by William Hawes.
XCygnus Ed Professional (C) 1988 CygnusSoft Software.
X
X
XII. OVERVIEW
X------------
X
XShell  provides a convenient AmigaDos alternative command interface.  All its
Xcommands  are  internal  and  thus  does not rely on the c:  commands for any
Xfunctionality.
X
XMajor features include:
X	- command line editing
X	- simple history
X	- piping
X	- aliases with arguments
X	- variables & variable handling (embedded variables)
X	- file name expansion via wild carding ('?', '*' and more)
X	- conditionals (if/else etc..)
X	- source files  (w/ gotos and labels)
X	- tab file name completion
X	- object oriented features (file classes, actions)
X	- many built in commands to speed things up
X	- full functionality on VT terminals
X	- freely programmable command line editing
X
XShell  runs  on  minimum stack, for recursive aliases and source files better
Xincrease stack to 8K or more.
X
XIf you use CShell for the first time, remember the following:
X	- CShell internal commands must be lowercase & can be abbreviated
X	- AmigaDOS command 'Execute' does not work, sorry. Use 'Newcli FROM',
X	  'run Execute' or slightly rewrite your scripts, so you can 'source'
X	  them. Besides the '.'-Commands (.key,.bra), 'source' is downward
X	  compatible to 'Execute'.
X	- You can always get more information on a command if shell.doc is
X	  in the current directory (you will be able to modify this) and
X	  you enter 'man <command>'
X
X
XIII. RESTRICTIONS
X-----------------
X
XResident AmigaDOS 2.0 CLI commands currently shouln't be started, even if you
Xmake them resident yourself.  According to a commodore official, this problem
Xshould  be  fixed in the final kickstart 2.0 release.  All INTERNAL residents
Xare  disabled  for  that reasons.  If you have a kickstart version newer than
X37.21, you might try to use the startup option -i, which enables the internal
Xresidents.  All other AmigaDOS residents can be started under DOS 2.0.
X
XUnder  1.3,  you  can't  start  AmigaDOS  residents.   But you can use the -r
Xstartup  option,  which  will  copy  the  AmigaDOS  resident  list to the arp
Xresident  list  once (and make those residents unremovable).  I try to find a
Xbetter solution.
X
XThe  best  choice  is  to  make  only csh itself AmigaDOS resident, all other
Xcommands,  if  any, ARP resident.  Under 1.3, you can start the shell (as all
Xother  commands)  from resident only after you did 'resident CLI l:Shell-seg'
Xand 'newcli'.
X
XVDK  handler has a bug with setting file dates so when using the copy command
Xand  VDK  you should use the -d switch otherwise your file date in vdk:  will
Xbe bad.  (This is not a shell bug)
X
XIf using with conman it you may consider starting shell with the -a switch to
Xturn  off shell's command line editing and use conmans instead.  You'll lose,
Xhowever, many shell features like TAB file name completion.
X
XCB-handler  (a  tool that installs a scrollbar in the CLI window) is not 100%
Xcompatible with the shell.  The log will not always represent the true screen
Xcontents.
X
X
X
XIV. NOTES ON PIPES
X------------------
X
X    PIPES
X	PIPES  have  been implemented using temporary T:  files.  Thus, you
X	should be  careful  when  specifying  a 't:*' expansion as it might
X	include the temporary files. These files are deleted on completion
X	of the pipe segment.
X
X	The file names used are completely unique, even with multiple shell
X	running simultaneously.
X
X	My  favorite  new  feature is the fact that you can now redirect to
X	and  from,  and pipe internal commands.  'echo charlie >ram:x', for
X	instance.  Another favorite:
X
X	echo "echo mem | csh" | csh
X
X	NO BCPL program should be output-append redirected (>>).
X
X
XV.  COMMAND PRE-PROCESSOR
X-------------------------
X
X    PREPROCESSING
X	Preprocessing is done on the command line before it is passed on to
X	an internal or external routine:
X
X	^c	where c is a character is converted to that control character.
X		Thus, say '^l' for control-l.
X
X	\233	insert character code 233 octal. Do not use values between
X		200o and 232o, as they have special meanings. \240 is the
X		word separator.
X
X	$name	where name is a variable name.  Variable names can consist of
X		0-9, a-z, A-Z, and underscore (_).  The contents of the
X		specified variable is used.  If the variable doesn't exist,
X		the specifier is used.  That is, if the variable 'i' contains
X		'charlie', then '$i' -> 'charlie'.  If the variable 'i' doesn't
X		exist, then '$i'->'$i' .
X
X	;	delimits commands.   echo charlie ; echo ben.
X
X	' '	(a space). Spaces delimit arguments.
X
X	"string" a quoted string. Trailing quotes are optional. For instance,
X		if you want to echo five spaces and an 'a':
X
X		echo      a       -> a
X		echo "    a"      ->      a
X
X	\c	overide the meaning of special characters.  '\^a' is a
X		circumflex and an a rather than control-a.  To get a backslash,
X		you must say '\\'.
X
X		also used to overide alias searching for commands.
X
X	>file	specify output redirection.  All output from the command is
X		placed in the specified file.
X
X	>>file	specify append redirection (Does not work with BCPL programs).
X
X	<file	specify input redirection. The command takes input from the
X		file rather than the keyboard (note: not all commands require
X		input; it makes no sense to say 'echo <charlie' since
X		the 'echo' command only outputs its arguments).
X
X	|	PIPE specifier.  The output from the command on the left becomes
X		the input to the command on the right.  The current SHELL
X		implimentation uses temporary files to store the data.
X
X	!!	execute the previously executed command.
X	!nn	(nn is a number).  Insert the history command numbered n (see
X		the HISTORY command)
X	!partial search backwards through the history list for a command which
X		looks the same as 'partial', and execute it.
X
X	#	Enter comment.  The rest of the line is discarded (note: \#
X		will, of course, overide the comment character's special
X		meaning)
X
X
XVI. COMMAND LINE EDITING
X------------------------
X
X	o Command line can be up to 255 chars.
X	o Inserts  and  deletes  are handled correctly over multiple screen
X	  lines.
X	o Shell  will  keep  track  of the line width should the window get
X	resized.
X
X    EDITING
X
X	-- MOVING --
X	Left Arrow	  One character left
X	Right Arrow	  One character right
X	Shift-Left Arrow  One word left
X	Shift-Right Arrow One word right
X	ESC-Left Arrow	  Beginning of line (^A) (^Z)
X	ESC-Right Arrow	  End of line       (^E)
X	-- DELETING --
X	Backspace	  Previous character
X	Del		  Character under cursor
X	ESC-Backspace	  Previous word     (^W)
X	ESC-Del		  Next word    
X	ESC-x-Backspace	  To start of line  (^B)
X	ESC-x-Del	  To end of line    (^K)
X	ESC-d		  Entire line       (^X)
X	-- HISTORY --
X	Up Arrow	  Recall previous commands
X	Down Arrow	  Recall commands
X	Shift-Up Arrow	  Get start of history
X	Shift-Down Arrow  Get end of history
X	ESC-!		  Get history from partial (or number)
X	^T		  Insert tail (all but first word) of previous line
X	-- COMPLETION --
X	TAB		  Inserts first matching file name
X	Shift-TAB	  Inserts longest common substring
X	ESC-TAB		  Inserts all matching file names
X	ESC-c		  Does a quick cd on left word (TAB for cycling)
X	ESC-~		  Inserts the last current directory
X	-- EXECUTING LINE --
X	Return		  Executes line
X	ESC-Return	  Executes this line of history & brings up next one
X	^N		  Next line. Don't exec this one but store history
X	^\		  EOF (directly exits)
X	-- MISCELLANEOUS --
X	^L		  Retype current line.
X	^O		  Echo a ^O
X	^R		  Repeat last command (don't play with this)
X	^U		  Undo/Redo last edit 
X	ESC-i		  Toggle Insert/Overwrite
X	f1-f10		  Execute command if variable exists.
X	F1-F10		  More commands (Shifted f keys).
X	Help		  Invokes help command
X
XWhenever  the cursor is placed on or directly after an incomplete file name
Xand   you  press  TAB,  CShell  inserts  for  the  first  filename  (sorted
Xalphabetically)  that  matches  the name part already typed.  Any wildcards
Xare allowed here, if none are given, '*' is appended.  Immediately pressing
XTAB  again  brings  up  the  next  file  name  that  matched the substring.
XShift-TAB  will  only  insert  the  as  much as is common to all files that
Xmatched  you  abbreviation.   If  pressed  again,  behaves  just  like TAB.
XESC-Tab  inserts  the  name  of the directory where you would have ended up
Xwith a quick cd to that substring.
X
XNote  that  ^D  now  means  'quit  batchfile' like under AmigaDOS and is no
Xlonger used for quitting CShell. If you want it back, enter 'keymap 0 4=41'
X
XThe  CTRL  keys FGPVY are unset, feel free to map them to any function (see
Xchapter XV).  You can also remap all preset keys.
X
XVII. FUNCTION KEYS
X------------------
X
X    FUNKEY
X	Function keys now insert text to the current position on the command
X	line. They maybe terminated with a ^M (return). f1 would be non shifted
X	where as F1 is shifted.
X	Most of functions key have a default definition, but it may be changed.
X
X		$ set f1 dir df0:^M
X
X	will add the text 'dir df0:<return>' to the current line.
X
X		$ set f1 dir
X
X	would only add 'dir' you could then enter ' df0:<return>'
X
X
XVIII. SHELL COMMANDS
X--------------------
X
X    STARTUP OPTIONS
X	First to start shell from a CLI:
X
X	shell [-abkntv] [-c command;command]
X
X	 -a AUX: mode. No command line editing and text highlighting
X	 -b starts shell in background, which means only task priority -1.
X	 -c allows execution of one command line and then exits out
X	    of  shell.   This  is  useful for running an internal shell
X	    commands in the background or from an external application:
X		Run csh -c dir df0:; copy -r df0: df1: >nil:; echo Done
X	 -f starts shell in foreground, which means only task priority 1.
X	    you should reset this prioritiy to 0 at the end of your .login
X	 -k sets _nobreak before doing anything
X	 -n suppresses starting of s:.login
X	 -r copies the amiga resident list to the arp resident list. You
X	    can't remove them anymore. INTERNAL residents can't be copied.
X	    This option will be ignored under kickstart 2.0
X	 -t terminal mode. You can use command line editing and text high-
X	    lighting on a VT100 compatible terminal.
X	 -v sets _verbose before doing anything.
X
X	Under 1.3, the best thing you can do is to make csh resident using
X	the AmigaDOS Resident command in the startup-sequence, then start
X	it with the option -r, so you can start another resident csh from
X	inside csh. NOTE: Residents copied using -r cannot be removed! I
X	advise you to use the internal resident command for all but csh
X	itself.
X
X    COMMAND EXECUTION
X
X	Internal shell commands are case sensitive and may be abreviated.
X
X   The first argument is the command-name... here is (in order) how Shell
X   tries to execute it:
X
X	1)  Alias list is searched for an alias exactly matching name.
X	2)  Internal commands list is scanned for a command even partially
X	    matching name (so you can, for instance, say resi for resident;
X	    however, you should specify enough of a command to be unique).
X	3)  Then, the list of functions is scanned for a command that
X	    matches completely. If one is found, the result of the function
X	    is echoed to stdout.
X	4)  AmigaDOS and ARP resident list are scanned (you can use Shell's
X	    resident command to add/remove a file in the ARP list).
X	5)  At this point, command is supposed to be external (disk).
X	6)  If the file is a directory, a 'cd' is performed to it.
X	7)  If the file is in the current directory and it's executable, it
X	    is started. If not executable but has the 's' bit set, it's
X	    'source'd.
X	8)  Then it is searched in the AmigaDOS path and c:
X	9)  Now, the shell path ($_path) is searched. If it's found and 
X	    executable, it's be started. If it has the 's' bit set, it will
X	    be 'source'd.
X	10) Next, AUTOMATIC SOURCING is tried, first in current directory,
X	    then in Shell path.
X	11) Then the variable _rxpath is examined. If it exists, and the
X	    current file with the suffix .rexx exists in one of the
X	    directories specified in _rxpath, 'RX <file>' is executed.
X	12) If all failed, an 'exec' action is sent to the file. See chapter
X	    XIV for more info on classes and actions.
X
X	To enforce that the external 'dir'-command is used, enter 'Dir'. Tt
X	is a good habit to uppercase the first letter of all external com-
X	mands, even if this is not necessary.
X
X	AUTOMATIC SOURCING may be accomplished by naming shell scripts with
X	a  .sh  suffix.   Thus,  if you say 'stuff' and the file 'stuff.sh'
X	exists in your current or anywhere in Shell search path (NOTE: won't
X	be found in the AmigaDOS path), it will be SOURCED  with all arguments
X	you  have given placed  in  the  $_passed variable. This is equivalent
X	to typing 'source stuff.sh'
X
X    WILD CARD EXPANSION
X	Most shell commands will accept multiple arguments that can
X	be as a result of wild card expansion.  Also when calling
X	an external command shell will first expand any wild cards
X	to separate arguments.  If you wish to have the external command
X	handle it's own wild carding you will need to insert quotes
X	around the special wild card characters or use an alias (see
X	explanation of 'alias')
X
X	eg.
X		arc a new.arc *.txt	- shell will expand and pass to arc
X		arc a new.arc "*.txt"	- let arc expand the wild cards.
X		alias arc "*a Arc $a"	- now shell will never expand
X
X	Wildcards allowed:
X
X	?	match any single character
X	*	match any string
X	.../*	recursive search down ALL sub directories from current level
X	~	exclude pattern matching specifier
X	!	synonim for ~, supported for compatibility
X	&	prefixed to patterns, ask confirmation for each file
X	[]	character class
X	~	the previous current directory
X	Note that a pattern must contain a '?' or a '*', otherwise the other
X	special characters are not recognized. Furthermore, you cannot spe-
X	cify a single '?' as a pattern in the first argument to a command,
X	as this will show you the usage of that command.
X
X	Examples:
X
X	df0:.../*		all files in all directories on df0:
X	df0:.../!*.info 	full directory tree of df0: but exclude
X				any ugly .info files.
X	!*.o !*.c		will result in ALL files matching since what
X				doesn't match the !*.o will match the !*.c
X	df1:&*			all files in root of df1:, but ask 
X				confirmation for each
X	*.[co]			all files ending in .c or .o
X	~*.[co]			all files NOT ending in .c nor in .o
X	~/readme		the readme from your last current directory
X
X	Note that some commands prevent wild card expansion. These are:
X	  - dir, rpn, whereis, window
X	Those commands will expand the wild cards themselves. This is why
X	  dir @without( *.? , *.o )
X	will not work. Instead use:
X	  set arg @without( *.? , *.o );dir $arg
X
X	There is one exception to the rules given above: A single '?' as
X	the first argument will *not* expand in order to allow you to get
X	the usage of CLI and csh commands easily.
X
X	The   following   symbols  are  not  yet  supported  by  wild  card
X	expansions, but are accepted in search -w:
X
X	( | )	OR matching
X	#	0 or more times the pattern following
X
X	Examples:
X
X	"k#a"		matches ka, kaa, kaaa, etc.
X	"hel(lo|p)"	matches hello or help.
X
X
XLIST OF COMMANDS:
X-----------------
X
X    ABORTLINE
X	Usage	: abortline
X	Example	: echo a;abort;echo b
X	Results	: a
X
X	Causes the rest of the line to be aborted. Intended for use in
X	conjunction with exception handling.
X
X    ACTION
X	Usage	: action [-a] actionname file [arguments]
X
X	Sends an action to a file. See chapter XIV CLASSES
X	Options:
X	 -a (abort) returns 0 if failed and 1 if successful. Otherwise,
X	            normal error codes (10 or 11) are returned
X
X    ADDBUFFERS
X	Usage	: addbuffers drive buffers [drive buffers ...]
X	Example	: addbuffers df0: 24
X
X	Just like AmigaDOS addbuffer command, causes new buffers to be
X	allocated for disk I/O. Each buffer costs 512 bytes of memory,
X	CHIP memory if a disk drive.
X
X    ALIAS
X	Usage	: alias [name [command string] ]
X	Example	: alias vt "echo Starting VT100;run sys:tools/vt100"
X
X	Sets a name to be a string. You can alias a single name to a set
X	of commands if you enclose them in quotes as above. By simply
X	typing vt, the command line above would be executed.
X
X	Argument Passing to an Alias:
X
X	Usage	: alias name "%var[%var...] [ command_string ]"
X		  alias name "*var[%var...] [ command_string ]"
X	Example	: alias xx "%q%w echo hi $q, you look $w
X		  xx Steve great today
X	Results	: hi Steve, you look great today
X
X	The second form of the alias command allows passing of arguments
X	to any position within the command string via use of a variable
X	name. To pass arguments to the end of a command string this method
X	is actually not necessary. Note that these variables are not (yet)
X	local, so make sure don't destroy another variable.
X	If you specify multiple arguments, every argument will be assigned
X	one word, and the last one will be assigned the rest of the command
X	line.
X
X	Using a '*' instead of the first '%' prevents wild card expansion:
X		alias zoo "*a zoo $a
X	To expand the wild cards after you got them, use
X		exec set a $a
X
X	By typing "alias name", you will get the alias for that name, while
X	with "alias" you get a list of all alias.
X
X    ASCII
X	Usage	: ascii
X		  ascii string
X
X	If called without arguments, ascii outputs a complete ascii table.
X	Given a string, shows each character in ascii. Options:
X	  -h shows numbers in hexadecimal
X	  -o shows numbers in octal
X
X    ASET
X	Usage	: aset name value
X	Example	: aset INCLUDE include:
X
X	Set a variable in a way that is compatible with ARP/old Aztec set
X	command; this is completely different from ENV: Shell variable.
X
X    ASSIGN
X	Usage	: assign
X		  assign logical
X		  assign [-ln] logical1 physical1 [logical2 physical2 ... ]
X
X	The first form shows all assigns.
X	The second form kills one assign.
X	The third form assigns logical1 to physical1 and so on. Options:
X	 -l creates a late-binding assign under kick 2.0, ignored otherwise
X	 -n creates a non-binding assign under kick 2.0, ignored otherwise
X	For definition of late/nonbinding, refer to your AmigaDOS manual.
X
X    BASENAME
X	Usage	: basename var path
X	Example	: basename x df0:c/Dir	# sets x to "Dir"
X
X	Sets var specified to basename of path.
X
X    CAT
X	Usage	: cat [-n][file file....]
X	Example	: cat foo.txt
X
X	Type the specified files onto the screen.  If no file is specified,
X	STDIN in used (note: ^\ is EOF).  CAT is meant to output text files
X	only. Specifying -n option you will get numbered lines.
X
X    CD
X	Usage	: cd [path]
X		  cd -g device1 [device2 [device3 ...]]
X
X	Change your current working directory.  You may specify '..' to go
X	back one directory (this is a CD specific feature, and does not
X	work with normal path specifications).
X
X	In most cases, you'll no more have to use the CD command. Just type
X	the desired directory at the prompt (very handy in conjunction with
X	file name completion). Typing a ~ alone on a command line cd's
X	to prevous current directory.
X
X	There are two situations left when you still need it:
X
X	Entering 'cd *tem' will cd to the first name matched.
X
X	The second form generates a list (an ascii file) of all direc-
X	tories on the given devices. It will be stored in the file given
X	in $_qcd (default: 'S:csh-qcd'). Note that this ascii file  will
X	not be merged but overwritten. Once you have generated this file,
X	you can cd to any directory on your harddisk(s) even if it's not
X	in the current directory.
X	If you have two directories of the same name and you use one of
X	them more, move the more important one to the beginning of the
X	qcd file. You might also sort the file.
X	It is legal to type just an abbreviation of the directory name
X	you want to cd to. No asterisk '*' necessary. If you end up in
X	the wrong directory, cd to the same directory again (best done
X	by Cursor-Up + RETURN). You will cycle through all directories
X	that matched the given abbreviation. The other possibility is to
X	specify the full name of the parent directory: cd devs/keym
X	You may also add devices and assigns, so if 'PageStream:' is one
X	line in the qcd-file, a cd to 'page' is successful.
X
X	CD without any arguments displays the path of the directory you
X	are currently in.
X
X    CLASS
X	Usage	: [-n] name {type=param} [ "actions" {action=command} ]
X	Example : class zoo offs=20,dca7c4fd ext=.zoo actions view="zoo l"
X
X	Defines a new class of files and the actions to be taken on them
X	in various cases, or shows old definitions if given no arguments.
X	See section XIV: OBJECTS
X	Options:
X	  -n (new)  forgets old definitions
X
X
X    CLOSE
X	Usage	: close [filenumber]
X
X	Close the specified file opened by open. Without filenumber, closes
X	all open files. See open and flist for more info.
X
X    CLS
X	Usage	: cls
X
X	This is an alias. It only clears the screen, but also works on a
X	terminal (e ^L doesn't).
X
X    COPY (CP)
X	Usage	: copy [-udfp]  file file
X	or	: copy [-udfp]  file1 file2...fileN dir
X	or	: copy [-rudfp] dir1...dirN file1...fileN dir
X
X	Options	:
X	  -r recursive, copy all subdirectories as well.
X	  -u update, if newer version exists on dest, don't copy
X	  -f freshen, if file doesn't exist on dest or newer, don't copy
X	  -d don't set destination file date to that of source.
X	  -p don't set destination protection bits to those of source.
X
X	Example	: copy -r df0: df1:
X
X	Copy files or directories. When copying directories, the -r option
X	must be specified to copy subdirectories as well.  Otherwise, only
X	top level files in the source directory are copied.
X
X	All files will be displayed as they are copied and directory's
X	displayed as they are created. This output can be suppessed by
X	redirecting to nil: eg. copy -r >nil: df0: df1:
X
X	Copy will abort after current file on Control-C.
X
X	Copy by default sets the date of the destination file to that of
X	the source file. To overide this feature use the -d switch.
X
X	Similarly, it sets protection bits (flags) to those of source and
X	any file comment will be copied. To avoid this use -p. The archive
X	bit is always cleared.
X
X	Another useful option is the -u (update) mode were copy will not
X	copy any files which exists already in the destination directory
X	if the destination file is newer or equal to the source file.
X	This is useful when developing code say in ram: eg. 'copy *.c ram:'
X	when done you can copy -u ram: df1: and only those modules you have
X	modified will be copied back.
X
X	Copy command will now create the destination directory if it does
X	not exist when specified as 'copy [-r] dir dir'. If you specify
X	copy file file file dir, then 'dir' must already exist.
X
X    CP
X	Equivalent to copy.
X
X    DATE
X	Usage	: date [-sr] [new date and/or time]
X	Example	: date Wednesday  # this refers to NEXT wed, of course
X
X	Used to read or set system date and/or time. All standard options
X	may be used (yesterday, tomorrow, monday, etc.).
X	Leading zero's are not necessary.
X	Without parameters shows Dddddd DD-MMM-YY HH:MM:SS.
X	Options:
X	  -s stores the current time
X	  -r shows time relative to last stored in secs and hunderths
X
X    DEC
X	Usage	: dec varname [value]
X	Example	: dec abc
X
X	Decrement the numerical equivalent of the variable with specified
X	value (default: 1) and place the ASCII-string result back into
X	that variable.
X
X    DELETE (RM)
X	Usage	: delete [-p][-r] file file file...
X	Example	: delete foo.txt test.c
X
X	Remove (delete) the specified files.  Remove always returns
X	errorcode 0.  You can remove empty directories.  The '-r' option
X	will remove non-empty directories by recursively removing all sub
X	directories.
X	You can remove delete-protected files specifying -p option.
X	If you specify any wildcard deletes the files will be listed as
X	they are deleted. This can be suppressed by redirecting to nil:
X
X    DIR     (LS)
X	Usage	: dir [-abcdfhiklnoqstuv] [path path ... ]
X	Example	: dir -ts downloads:
X
X	Options:
X	 -d list directories only
X	 -f list files only
X	 -h list only files which not start with a dot, end with '.info' or
X	    have the h-flag set.
X	 -s short multi(4) column display.
X	 -c don't change colors for directories
X	 -q quiet display. does not show length in blocks
X	 -o display file nOtes
X	 -n display names only
X	 -a shows the age of all files in the format  days hours:minutes
X	 -i identifies every file, shows the type instead of the date.
X	    See chapter XIV CLASSES
X	 -v (viewdir) recursively sums up lengths of the files in a dir
X	 -l sorts the files by their length, longest first.
X	 -t sorts the files by their time, most recent first.
X	 -k sorts the files by their class (klass)
X	 -b sorts the files backwards.
X	 -u must be given exactly two directories. Shows files only in
X	    the first directory, files in both and files in the second.
X
X	Displays a directory of specified files. Default output shows
X	date, protection, block size, byte size and total space used.
X	Protections flags include new 1.2/1.3 flags (see under protect),
X	plus a 'c' flag which indicates that this file has a comment.
X	Files are alphabetically sorted, without case sensitivity, and
X	directories are in red pen (unless you use -c). Dir takes in
X	account the width of your window.
X
X    DISKCHANGE
X	Usage	: diskchange drive
X
X	Like AmigaDOS diskchange.
X
X    ECHO
X	Usage	: echo [-en] string
X	Example	: echo hi there
X	Results	: hi there
X
X	Echo the string given. If -n switch given no newline is
X	appended. If -e is on, echo to stderr.
X
X    ELSE
X	Usage	: else ; command
X	Usage	: if -f foo.c ; else ; echo "Not there" ; endif
X
X	Else clause, must follow an IF statement.
X
X    ENDIF
X	Usage	: endif
X
X	The end of an if statement.
X
X	Note: if you return from a script file with unterminated IF's
X	and the last IF was false, prompt will be changed to an
X	underscore ('_') and no commands will be executed until
X	'endif' is typed.
X
X    EXEC
X	Usage	: exec command [args]
X	Example	: set util SYS:sytem/utilities
X		  exec $util/make	# would not work without exec
X
X	Execute the command specified; exec command is equivalent to
X	command, only you can use variables to specify command name.
X	Note that the command line is parsed TWICE, so the commands
X	   set a dir ram:; exec $a              # right
X	works fine, but
X	   set a mkdir; exec $a "My directory"  # wrong!
X	would create two directories. Also note that exec always has
X	the return value 0.
X
X    FAULT
X	Usage	: fault error1 .. errorN
X	Example	: fault 205 212
X
X	Like AmigaDOS fault, prints specified error messages.
X
X    FILENOTE
X	Usage	: filenote file1 .. fileN  note
X		  filenote -s file1...fileN
X
X	The first form sets AmigaDOS comment of the specified file.
X	The second form display the file notes of the given files.
X
X    FLIST
X	Usage	: flist
X
X	Lists the filenumbers of files opened by open.
X	See open and close for more info.
X
X    FLTLOWER
X	Usage	: fltlower
X	Example	: dir | fltlower
X	Or	: fltlower <readme
X
X	This is a filter command, i.e. it reads from stdin and writes to
X	stdout. The more natural way to use it is a pipe, or it can be
X	redirected.
X	Its purpose is to convert all alphabetic to lower case.
X
X    FLTUPPER
X	The same of fltlower, only this converts to upper case.
X
X    FOREACH
X	Usage	: foreach [-v] varname ( strings ) command
X	Example	: foreach i ( a b c d ) "echo -n $i;echo \" ha\""
X	Result	: a ha
X		  b ha
X		  c ha
X		  d ha
X
X	'strings' is broken up into arguments.  Each argument is placed in
X	the variable 'varname' in turn and 'command' executed.  To execute
X	multiple commands, place them in quotes.
X
X	Foreach is especially useful when interpreting passed arguments in
X	an alias.
X
X	eg.
X		foreach i ( *.pic ) viewilbm $i
X	assuming a.pic and b.pic in current directory the following commands
X	will occur:
X		viewilbm a.pic
X		viewilbm b.pic
X
X	Flag -v causes arguments to be displayed every time command is
X	executed.
X
X    FOREVER
X	Usage	: forever command
X	or	: forever "command;command;command..."
X
X	The specified commands are executed over and over again forever.
X
X	-Execution stops if you hit ^C
X	-If the commands return with an error code.
X
X    FORLINE
X	Usage	: forline var filename command
X	or	: forline var filename "command;command..."
X	Example	: forline i RAM:temp "echo line $_linenum=$i"
X
X	For each ASCII line of file specified commands are executed and
X	var points to line content. You can check system variable _linenum
X	to find the number of the line currently read.
X
X    FORNUM
X	Usage	: fornum [-v] var n1 n2 command
X	or	: fornum [-v] -s var n1 n2 step command
X	Example	: fornum -v x 1 10 echo $1
X	or	: fornum -s x 10 1 -1 echo $i # counts backwards
X
X	Executes  command(s)  for  all numerical values of x between n1 and
X	n2.   If  more  than  one  command  is  specified,  or  command  is
X	redirected, include command(s) in quotes.
X	Switch -v (verbose) causes printing of progressive numbers.
X	Switch  -s  allows  you to specify a step; if this is negative, the
X	count will be backwards.
X
X    GETENV
X	Usage	: getenv [shellvar] envvar
X
X	Gets the value of an ARP or ENV: variable (ARP list searched first)
X	and stores it in the shell variable 'shellvar'. If shellvar is
X	omitted, the value of the ENV: variable is printed to stdout.
X
X    GOTO
X	Usage	: goto label
X	Example	:
X		  label start
X			echo "At start"
X			dir ram:
X			goto start
X
X	Goto  the specified label name.  You can only use this command from
X	a  source  file.   Labels  may  be  forward or reverse from current
X	position. It is legal to jump out of if's.
X
X    HEAD
X	Usage	: head filename [num]
X	Example	: head readme 20
X
X	Display  first "num" lines of "filename".  If num is not specified,
X	10 is assumed.
X
X    HELP
X	Usage	: help
X	Example	: help
X
X	Simply  displays  all  the  available  commands.   The commands are
X	displayed in search-order.  That is, if you give a partial name the
X	first  command  that  matches  that  name  in  this list is the one
X	executed.   Generally,  you  should  specify enough of a command so
X	that it is completely unique.
X
X    HISTORY
X	Usage	: history [partial_string]
X	Example	: history
X
X	Displays  the  enumerated  history  list.   The size of the list is
X	controlled  by  the  _history  variable.   If you specify a partial
X	string, only those entries matching that string are displayed.
X
X    HOWMANY
X	Usage	: howmany
X
X	This  command  tells you how many instances of Shell are running in
X	your system.
X
X    HTYPE
X	Usage	: htype file1 .. filen
X
X	Displays the specified files in hex and ASCII, just like the system
X	command Type file opt h.  Especially suitable for binary files.
X
X    IF
X	Usage	: if [-n] argument conditional argument ;
X	or	: if [-n] argument
X	or	: if [-n] -f file
X	or	: if [-n] -d file/dir
X	or	: if [-n] -m
X	or	: if [-n] -t file file1 .. fileN
X	or	: if [-n] -r rpnexpression
X	or	: if [-n] -v varname
X
X	If a single argument is something to another argument.  Conditional
X	clauses allowed:
X
X	<, >, =, and combinations (wire or).  Thus <> is not-equal, >=
X	larger or equal, etc...
X
X	If arguments are not numeric, they are compared as strings.
X
X	Usually the argument is either a constant or a variable ($varname).
X
X	The second form if IF is conditional on the existance of the argument.
X	If the argument is a "" string, then FALSE, else TRUE.
X
X	The third form of IF used by -f switch checks for existance of
X	the specified file.
X
X	Switch -d tests the type of the object specified: if it is a
X	directory, then TRUE; if it is a file (or it doesn't exist)
X	then FALSE.
X
X	Switch -m is used to test if FAST memory is present.
X	Example (to be included in a login.sh file):
X	if -m; resident -d lc1 lc2 blink; endif
X
X	Using -t form compares the date and time of the first file with
X	all the others; if the first is younger than ALL the others, then
X	FALSE, else TRUE. If a file doesn't exists, it is considered as
X	being older.
X	This feature is especially useful for building makefiles without
END_OF_FILE
if test 34966 -ne `wc -c <'shell.doc.aa'`; then
    echo shar: \"'shell.doc.aa'\" unpacked with wrong size!
fi
# end of 'shell.doc.aa'
fi
echo shar: End of archive 6 \(of 6\).
cp /dev/null ark6isdone
MISSING=""
for I in 1 2 3 4 5 6 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 6 archives.
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0
-- 
Mail submissions (sources or binaries) to <amiga@uunet.uu.net>.
Mail comments to the moderator at <amiga-request@uunet.uu.net>.
Post requests for sources, and general discussion to comp.sys.amiga.misc.