home *** CD-ROM | disk | FTP | other *** search
Text File | 1987-05-27 | 39.4 KB | 1,057 lines |
-
-
-
-
-
-
- ASH V0.70
-
- Copyright (c) 1986,1987 CSL/jdn
-
-
- INTRODUCTION:
-
- This is Version 0.70 of the ASH document file. If the program you're using
- isn't V0.70 there's a good chance some of the features won't work as
- documented in this file.
-
- ASH is an acronym for 'A SHell'. It has some of the features I like best
- from the shell I use the most. This is the only formal documentation for
- ASH. The HELP key also provides a few screens of information that are
- helpful if pressed while ASH is running. That information is contained in
- the 'ash.hlp' file.
-
- ASH is shareware and you're welcome to copy it and pass it along to as many
- people as you want. Please include the copyright notice above in all
- associated files. To contact me about ASH use the following address:
-
- CSL, ATTN: ASH
- Jerry Nowlin
- 318 N. Center Street
- Plano, IL 60545
-
- ASH may never be really 'finished' so any and all comments are welcome.
- It's something that some of us (me), who prefer typing to clicking, needed
- to be productive. It isn't perfect so please report any problems. If you
- like ASH, you can report that too. If you like it enough to use it on a
- regular basis please send along a few bucks. This will put your name on
- the registered ASH user list and will enable me to notify you of any major
- bug fixes or new releases. It will also help my wife appreciate the hours
- I spend in front of my ST.
-
- CONTENTS
-
- INTRODUCTION ........................................................ 1
- QUICK COMMANDS ...................................................... 2
- BUILT-IN COMMANDS ................................................... 4
- COMMAND HISTORY ..................................................... 8
- HISTORY EDIT COMMANDS ............................................... 8
- I/O REDIRECTION ..................................................... 11
- COMMAND LINES ....................................................... 11
- SET VARIABLES ....................................................... 12
- ASH INITIALIZATION .................................................. 13
- COMMAND SELECTION ................................................... 13
- ASH SCRIPTS ......................................................... 14
- LIMITATIONS ......................................................... 14
- MISCELLANEOUS ....................................................... 15
- V0.70 NOTES ......................................................... 15
-
-
-
-
- - 1 -
-
-
-
-
-
-
-
- ASH V0.70
-
-
-
- QUICK COMMANDS:
-
- The following list describes the ASH quick or single keystroke commands.
- NOTE: these commands DO NOT go into the command history buffer.
-
- ESC The escape key (ESC) puts ASH into history edit mode. In this
- mode the current command line can be edited or previous commands
- in the history buffer can be pulled back and edited. The editing
- commands are explained in a later section of this document.
-
- ^L The control-L key (^L) will cause a listing of the command
- history buffer to be displayed on the screen. There can be up to
- 23 command lines in the history buffer. The number preceding a
- command line in the history buffer can be used with the ^R
- command (see below) to repeat execution of the line.
-
- ^R [n-m] The control-R (^R) key will cause either the previous command
- line, the 'n'th command line or the 'n'th through 'm'th command
- lines to be re-executed. Unlike the other quick commands, a ^R
- has to be followed by a carriage return. Due to the way the
- history buffer is numbered, a sequence of command lines can be
- repeated by repeating ^R's with the same value of 'n'. For
- example, in the develop/debug cycle for the Icon language you
- edit, translate and execute. The beginning of the history
- listing generated with a ^L might look like this:
-
- history list:
- 1 - iconx mortgage loan.dat
- 2 - icont mortgage.icn
- 3 - vix mortgage.icn
- ...
-
- To repeat these three steps after completing the first cycle you
- just keep invoking ^R with an 'n' of 3.
-
- An alternative method would be to invoke ^R with the range '3-1'.
- This would automatically execute command lines 3 through 1 in
- that order. Due to the way command lines are numbered in
- history, the high number in a range should be first if you want
- the commands to be executed in the same order as they were
- originally. If you want the commands to execute in reverse order
- you can use '1-3'. Both orders are acceptable as long as the
- history numbers in the range are valid.
-
- ^W The control-W (^W) key causes a what and who message about ASH to
- be displayed on the screen. This information is similar to the
- initial section of this document.
-
- ^P The control-P (^P) key causes the prompt to toggle back and forth
- between simply displaying the current drive and displaying the
- current drive and the current directory path. For example if you
-
-
-
- - 2 -
-
-
-
-
-
-
-
- ASH V0.70
-
-
-
- were in the AUTO folder on drive A you could toggle your prompt
- back and forth between:
-
- [A:\AUTO]
-
- and
-
- [A:]
-
- The default is to display the drive and path.
-
- ^V The control-V (^V) key makes the cursor visible. Some programs
- that can be invoked from ASH cause the cursor to become
- invisible. For instance MicroEMACS 3.7 and ASH itself assume
- you're going back to the desktop when they exit so the cursor is
- turned off. The ^V is a simple way to make it reappear.
-
- BS/^H The backspace and control-H (^H) keys will cause the last
- character typed to be erased.
-
- ^X/^U The control-X (^X) and the control-U (^U) keys will cause the
- line currently being typed to be aborted. The aborted command
- will NOT be included in the history buffer.
-
- ^C The control-C (^C) key will SOMETIMES cause the current running
- command or program to abort. This doesn't always work and
- repeated ^C's will sometimes cause ASH itself to abort. When a
- program does abort its exit code is frequently munged into a
- GEMDOS error that causes the 'Invalid Function' message to be
- printed. ASH scripts can be aborted by typing a ^C after a pause
- command has suspended a script.
-
- ^D/^Z The control-D (^D) and the control-Z (^Z) keys will cause ASH to
- exit to the desktop fast with no looking back.
-
- UNDO The UNDO key will cause ASH to ask the user if they want to exit
- to the desktop. A 'y' will cause the program to exit. Any other
- character will abort the exit.
-
- CLR/HOME The CLR/HOME key will clear the screen and move the cursor to the
- upper left corner of the screen.
-
- HELP The HELP key will cause one of two different help messages to be
- displayed. When in normal command mode a summary of the quick
- and the built-in commands is displayed. When in the history edit
- mode a list of the history editing commands is displayed.
-
- Any other control characters typed to ASH are considered an error. You'll
- be beeped and the character will be ignored. In addition TAB characters
- (^I) typed as part of an ASH command line are automatically changed to
- spaces.
-
-
-
- - 3 -
-
-
-
-
-
-
-
- ASH V0.70
-
-
-
- BUILT-IN COMMANDS:
-
- The following commands are ASH built-in commands. They are very similar to
- equivalent UN*X commands where that comparison applies. This version of
- ASH has I/O redirection built into the built-in commands. See the I/O
- REDIRECTION section for details.
-
- Invoking any of the built-in commands with a '-?' argument will result in a
- usage message for that command. These usage messages are more informative
- than the simple HELP summary but not as detailed as this document. All
- built-in commands are lower case. They will not be recognized if typed as
- upper case. This is a trap door to let you execute external commands that
- might have the same name as a built-in command.
-
- date [mm/dd/yy] [hh:mm:ss]
- This command will display the current date and time. If a new date or
- time specification or both are included as parameters, the new values
- are used to set the date and/or time. Both the GEMDOS clock and the
- intelligent keyboard clock are set by this command. The GEMDOS clock
- is used to display the date and time.
-
- set [var=value ...]
- This command lists all the defined set variables when invoked with no
- parameters. If it's invoked with one or more 'var=value' parameters,
- they're added to the list of defined set variables.
-
- unset var [var ...]
- The unset command deletes variables from the list of defined set
- variables.
-
- echo [-n] [arg ...]
- This command echos its arguments back to the screen. The default is
- to terminate the display of arguments with a carriage return and a
- line feed. The '-n' flag will cause the arguments to be echoed
- without a CR/LF.
-
- Echo recognizes the sequence of a backslash (\) followed by three
- octal digits in its arguments and will replace that sequence with the
- corresponding ASCII character. For example, the ASCII BELL character
- is \007 and the ASCII TAB character is \011. The escape sequence to
- home the cursor and clear the screen is ESC-H-ESC-J. To generate this
- sequence with echo you would use:
-
- echo "\033H\033J"
-
- This same method of generating ASCII characters is used for the
- pattern argument of the find command, the OPRINIT set variable and the
- F1-F10 function key set variables.
-
- pause
- The pause command is mainly for use inside ASH scripts. It will cause
-
-
-
- - 4 -
-
-
-
-
-
-
-
- ASH V0.70
-
-
-
- ASH to suspend execution until a carriage return is typed. If you
- respond with a ^C instead of a CR all currently running scripts will
- be aborted and you'll be left at the interactive level of ASH. This
- is a handy trap door to abort scripts that have had problems.
-
- find [-n] pat file [file ...]
- The find command takes a pattern as its first argument. Upper and
- lower case letters in the pattern are unique. A pattern can contain
- no special characters to signify regular expressions, but it can
- contain backslash ASCII character sequences like those explained in
- the description of the echo command. Find searches for lines in the
- files given as arguments that contain the pattern. The lines that
- match are printed to the screen with the file name prepended to them.
- If the '-n' flag is used the line numbers of any matching lines are
- inserted between the file name and the line.
-
- rez {-l | -m}
- The rez command changes the screen resolution to medium or low. Since
- you can't change to high resolution from medium or low there's no
- option for changing to high and if you're in high resolution you won't
- be allowed to change to low or medium.
-
- There is a possibly confusing side effect of this command. When you
- change resolution the color pot that's used to paint the foreground
- color changes too. In low resolution pot 15 is the foreground. In
- medium it's pot 3. If you aren't satisfied with the foreground color
- after changing resolutions use the color command (see below) to change
- it.
-
- One last caveat. There are some programs that check the system
- resolution and work fine after ASH has changed resolution. There are
- others that don't detect the fact that the resolution has changed and
- continue to complain about the system being in medium even when it's
- obvious that the screen is in low. Any hints as to how I can make ASH
- convince everyone the resolution has changed are welcome.
-
- color {-f | -b} [RGB]
- The color command is used to report or change the foreground and
- background colors of the screen. The '-f' and '-b' screen section
- flags stand for foreground and background respectively. When invoked
- with only a screen section flag this command reports the current color
- mix for that section. You can select a new color mix for the
- foreground and background color pots by including a 'RGB' parameter in
- the color command.
-
- The 'RGB' parameter must be a 3 digit number with each digit ranging
- from 0 to 7. The first digit is the intensity level of RED used to
- compose the new color. The second digit is the GREEN intensity level
- and the third is the BLUE. This gives you access to 512 possible
- colors. A value of 000 will generate BLACK, 777 will generate WHITE,
- 070 will be intense GREEN and so on. It can be interesting mixing
-
-
-
- - 5 -
-
-
-
-
-
-
-
- ASH V0.70
-
-
-
- your foreground and background colors but be careful not to make them
- identical or you'll be flying blind.
-
- ls [-s] [-l] [-h] [d:][file]
- The ls command lists directory information about the files specified
- or about all files on the current drive and directory if no files or
- any other type of file specification is given. You can use drive
- specifications or directories as arguments to ls and the entire
- contents of that drive or directory will be listed.
-
- The '-s' flag causes the sizes of the files to be listed in addition
- to the file names. The '-l' flag causes a long listing with the
- names, sizes, times and dates of the last modification, etc. included
- in the output. The '-h' flag causes hidden files to show up in the
- listing. The order of the files is exactly their order in the
- directory. At this time there is no option to sort the files listed
- by name, extension, size or time stamp.
-
- df [-t] [d: ...]
- The df command will display the free space remaining on the drives
- specified. If no drives are specified then the free space on the
- current drive is given. The '-t' flag will cause the total amount of
- space on a drive to be listed as well.
-
- cat [-n] file [file ...]
- The cat command will cause the files specified to be sent to the
- screen in a paginated form. You will be prompted to hit a key after
- every screen full of output. When using output redirection, or if cat
- is invoked from a script, pagination is turned off. The '-n' flag
- will cause line numbers to be included in the display.
-
- opr [-n] [-oN] file [file ...]
- The opr command will print the specified files on the printer. The
- '-n' flag will cause line numbers to be included in the output. The
- '-oN' flag will cause the left margin to be offset or padded by 'N'
- spaces. The set variable OPRINIT can be used to initialize the
- printer for a given invocation of opr. See the section on SET
- VARIABLES below for details.
-
- cp file1 file2
- The cp command will copy 'file1' to 'file2' if there are only two
- arguments and both are files.
-
- cp file1 ... filen dir
- This invocation of the cp command will copy the first through the next
- to last arguments, which must be files, to the last argument, which
- must be a directory or drive specification. New files created with cp
- have a time stamp corresponding to the time they were copied.
-
- WARNING: Unlike the desktop copy routine (dragging to another window),
- the cp command does not care if there are conflicting file names. It
-
-
-
- - 6 -
-
-
-
-
-
-
-
- ASH V0.70
-
-
-
- will copy over a file with the same name in the target directory or
- drive without any warning.
-
- mv file1 file2
- The mv command will move or rename 'file1' to 'file2' if there are
- only two arguments and both are files.
-
- mv file1 ... filen dir
- This invocation of the mv command will move the first through the next
- to last arguments, which must be files, to the last argument, which
- must be a directory or drive specification. Files moved with mv
- retain their original time stamp even when physically created on a new
- drive.
-
- WARNING: Unlike the desktop rename routine (SHOW INFO), the mv command
- does not care if there are conflicting file names. It will move over
- a file with the same name in the target directory or drive without any
- warning.
-
- rm [-i] file [file ...]
- The rm command removes or erases the files specified. If you're the
- cautious type the '-i' flag will cause rm to work interactively. In
- this mode rm will prompt you with each file name and wait for you to
- respond with a 'y' or 'n' before removing the file. If you respond
- with a 'q' the rm is aborted but the files already removed are gone.
-
- WARNING: Unlike the desktop remove routine (dragging to the TRASH),
- the rm command does not prompt you to verify if you got the file name
- right. It will remove your files with no remorse if asked to do so.
- If you want to verify the expansion of a wildcard argument before
- using it with rm, try it with echo first and make sure you aren't
- specifying some files you want to keep.
-
- attr {-w | -r} file [file...]
- The attr command allows you to set the read and write or read only
- attributes of a file. Most files default to read and write. For
- example, if you execute an ls command with the '-l' flag on a file
- with read and write permission you'll see the attributes as 'R/W'. A
- file with read only permission will have 'R/O' in the attributes
- column. A file with read and write attributes can be removed or
- modified. A read only file is protected. It can be copied or printed
- but it can't be removed or modified.
-
- cd dir
- The cd command is used to change the current working directory. You
- can change to directories on the same drive or you can change to
- directories that cross drive boundaries. Don't confuse the latter
- with changing the current drive. To change drives you simply type the
- drive specification of the drive you want to change to. For example
- to change to drive A you would type:
-
-
-
-
- - 7 -
-
-
-
-
-
-
-
- ASH V0.70
-
-
-
- a:
-
- If you had previously been in the AUTO folder on A you would then be
- back in A:\AUTO. If you executed the command:
-
- cd a:
-
- you would be placed in the base directory of the A drive. In general,
- to get to A:\AUTO you should explicitly execute:
-
- cd a:\auto
-
- Remember that directory paths on the ST use backslashes (\) instead of
- slashes (/).
-
- pwd
- The pwd command will display the current working directory. This can
- be redundant if the default of having the current directory included
- in your prompt is on. (See the ^P command above.)
-
- mkdir dir [dir ...]
- The mkdir command is used to create new directories. Directory names
- have the same restrictions as file names.
-
- rmdir dir [dir ...]
- The rmdir command is used to remove EMPTY directories. Notice the
- EMPTY. You must remove the contents of a directory before you can
- remove the directory itself.
-
-
- COMMAND HISTORY:
-
- ASH uses a command history buffer that holds up to the last 23 command
- lines typed from the keyboard. The command lines in this buffer can be
- listed (^L), repeated (^R) and edited (ESC) with a set of simple line
- editing commands. The command lines in the history buffer are numbered
- from 1 to 23 with the most recent command line being number 1 and the
- oldest being number 23. Each new command line causes the lines already in
- the buffer to age by one. Once a command line has aged past 23 it's gone
- for good.
-
-
- HISTORY EDIT COMMANDS:
-
- When you've put ASH in the history edit mode with the escape (ESC) key,
- there are a number of single key commands available with which you can call
- back previous commands and modify them. You have to be in history edit
- mode for these commands to work. I've abbreviated the up, down, left and
- right arrow keys as UA, DA, LA and RA respectively.
-
-
-
-
-
- - 8 -
-
-
-
-
-
-
-
- ASH V0.70
-
-
-
- UA/-/k These three keys let you browse backwards through the commands in
- the history buffer. When you get to the end you'll be beeped.
-
- DA/+/j These three keys let you browse forwards through the commands in
- the history buffer. When you get to the beginning you'll be
- beeped.
-
- LA/BS/h Any of these three keys cause the cursor to move backwards or
- left one character on the current command line. You can't move
- past the first character of the command line.
-
- RA/SP/l Any of these three keys cause the cursor to move forwards or
- right one character on the current command line. You can't move
- past the last character of the command line.
-
- 0 This key (zero) causes the cursor to move to the first character
- of the currently displayed command line.
-
- ^ This key causes the cursor to move to the first visible character
- of the currently displayed command line. If there are spaces at
- the beginning of the command line this will skip over them.
-
- $ This key causes the cursor to move to the last character of the
- currently displayed command line.
-
- In the next three commands the distinction is made between a word and a
- WORD. For this discussion a word is delimited by any non-alphanumeric
- characters like punctuation marks, spaces or other special symbols. A WORD
- is delimited by only white space.
-
- w/W These two keys cause the cursor to move right or forward to the
- beginning of a word or a WORD respectively.
-
- e/E These two keys cause the cursor to move right or forward to the
- end of a word or a WORD respectively.
-
- b/B These two keys cause the cursor to move left or back to the
- beginning of a word or a WORD respectively.
-
- ~ This key will change the case (if alphabetic) of the current
- character from upper to lower case or from lower to upper case.
- The cursor moves forward past the character changed. Non-
- alphabetic characters are simply skipped over.
-
- r This key will cause the current character to be replaced with
- another single character. The next character typed will be used
- as the replacement.
-
- x This key will cause the current character to be crossed out or
- deleted.
-
-
-
-
- - 9 -
-
-
-
-
-
-
-
- ASH V0.70
-
-
-
- d This key will cause the current character to be deleted. It's
- functionally the same as the 'x' command.
-
- D This key will cause the rest of the command line including the
- current character to be deleted.
-
- The next seven keys cause the history editor to go into insert mode where
- you can add multiple characters to the command line. To stop adding
- characters you must hit the ESC key. You will then be back in history edit
- command mode.
-
- s This key lets you substitute multiple characters for the current
- character.
-
- c This key lets you change the current character for multiple new
- characters. It's functionally the same as the 's' command.
-
- C This key will cause the rest of the command line including the
- current character to be changed for multiple new characters.
-
- i This key lets you start inserting characters before the current
- character on the command line. The INSERT key, in the group with
- the arrow keys, works just like 'i'.
-
- I This key lets you start inserting characters before the first
- character in the command line.
-
- a This key lets you start appending characters after the current
- character in the command line.
-
- A This key lets you start appending characters after the last
- character in the command line.
-
- CR/LF These keys cause the history editor to be exited and the
- currently displayed command line to be executed.
-
- ^C/^U/^X These keys cause the history editor to be aborted without
- executing the currently displayed command line.
-
- HELP This key will cause a brief summary of all the history editing
- commands to be displayed.
-
- There has to be a caveat to history editing. The history editing commands
- will work on lines that wrap around the screen but the display is not
- adjusted in any way. In other words, editing command lines that are longer
- than one physical line can be interesting.
-
-
-
-
-
-
-
-
- - 10 -
-
-
-
-
-
-
-
- ASH V0.70
-
-
-
- I/O REDIRECTION:
-
- This version of ASH has I/O redirection built into the built-in commands.
- The standard '<file', '>file' and '>>file' arguments will cause standard
- input to be redirected from file, standard output to be redirected to
- overwrite or create file and standard output to be redirected to append to
- or create file respectively. There can be NO SPACE between the redirection
- characters and the redirection file name. The redirection arguments to
- built-in commands can appear anywhere in the list of command arguments.
- The redirection of standard input is of dubious value since none of the
- built-in commands currently use standard input. NOTE: standard error is
- not redirectable at this time.
-
- Redirection for external commands that get executed by ASH depends entirely
- on how those commands were created. If they were created with most of the
- standard C development packages they should support similar redirection
- arguments. Megamax, Lattice, Mark Williams and the Developers Kit all
- support I/O redirection for programs that are built with them. Some
- require that the main() function be declared with argc and argv as
- arguments and some require the redirection arguments to be the first
- arguments on the command line. You'll have to refer to the documentation
- that comes with the programs you use or try them to see how they work.
-
-
- COMMAND LINES:
-
- Command lines can be up to 255 characters long. Built-in commands can use
- the entire 255 characters. External commands that are invoked by the
- Pexec() GEMDOS call are limited to a command tail of 127 characters. The
- command name itself isn't included in this 127 characters so the effective
- length of an external command is over 127 characters but not too much. If
- the command tail limit is exceeded ASH will print an error message and
- ignore the command.
-
- You can enter multiple ASH commands on one command line by separating them
- with semi-colons (;). Everything on a command line after a pound sign (#)
- is treated as a comment. Command separators and comment characters can be
- quoted with apostrophes (') or double quotes (") if they're needed as part
- of a command's arguments. If you want a double quote or apostrophe to be
- included in an argument you must quote it with the other quoting character.
- For example, this echo command will generate an error:
-
- echo this won't work
-
- The apostrophe is parsed as a mismatched quote. The following command
- works because the apostrophe is quoted:
-
- echo "this won't work (yes it will)"
-
- The same quoting mechanism is applicable to the wildcard characters * and
- ?. ASH expands all arguments containing wildcards before passing them on
-
-
-
- - 11 -
-
-
-
-
-
-
-
- ASH V0.70
-
-
-
- to external programs. If you want an external program to do the expansion
- then you must quote ambiguous file specifications like '*.NEO' or
- 'BUFF?.TMP'.
-
-
- SET VARIABLES:
-
- The number of set variables is limited to 32 and the size of a single
- 'variable=value' string is limited to 255 characters. Set variables can be
- used in command lines by putting a dollar sign in front of them. Some set
- variables have special meanings to ASH.
-
- The ECHO set variable is used to turn command echoing on in scripts. If
- ECHO is set to 'ON' or 'on' commands will be echoed before they're
- executed. If ECHO isn't set, or is set to any other value, scripts run
- silently. Scripts are silent by default.
-
- The set variable OPRINIT can be defined with a printer initialization
- sequence that will be sent to the printer before any other output when the
- opr command is executed. The expansion of backslash ASCII character
- sequences, like those explained in the description of the echo command, is
- done on the OPRINIT value before sending it to the printer. This allows
- escape sequences and other control characters to be used. For example, I
- have an Epson FX80 and I frequently set OPRINIT like this:
-
- set OPRINIT=\033M
-
- This backslash sequence is converted to ESC-M and sets the printer to elite
- or 12 character per inch mode.
-
- The set variables F1, F2, ... F9 and F10 can be used to program the
- corresponding function keys. For example, if the F2 set variable were set
- to 'ls -l' then that string would be added to the command line when you hit
- function key F2. Since there's no CR or LF in that string you would have
- to hit a CR after hitting F2 in order to execute the 'ls -l'. To terminate
- a function key set variable with a CR or LF use the backslash sequence for
- it. For example, if F2 were set to 'ls -l\012' then hitting function key
- F2 would execute the 'ls -l'. The backslash sequence for CR is \015 and
- the backslash sequence for LF is \012.
-
- The PATH set variable is used to decide where ASH looks for commands that
- aren't built-in, for the ASH initialization file and for the ASH help file.
- The same syntax is used as in the MS-D*S PATH, where semi-colons (;)
- separate the various drives and directories in a PATH. When setting PATH
- semi-colons must be quoted so they're not interpreted as command
- separators.
-
-
-
-
-
-
-
-
- - 12 -
-
-
-
-
-
-
-
- ASH V0.70
-
-
-
- ASH INITIALIZATION:
-
- When ASH is first invoked interactively PATH is set to the base of all the
- installed drives on the system. This setting is then used to look for the
- ASH initialization file. The ASH initialization file is named 'ash.ini'
- and must be in the current directory or on one of the drives in the initial
- PATH. Since GEMDOS considers both the A and B floppies to be installed,
- even if there's only one floppy drive physically attached to the computer,
- it's a good idea to have your 'ash.ini' file on the floppy from which you
- invoke ASH. If you invoke ASH from a folder on a hard disk you should have
- your 'ash.ini' file in that folder.
-
- The ASH initialization file can contain any valid ASH commands. It's handy
- for redefining the PATH value or adding to the initial PATH. For example,
- you can avoid having to keep a floppy in your floppy drive by defining the
- floppy drives out of PATH. The following 'ash.ini' file will modify PATH,
- display it, define some function keys and turn on echoing in scripts:
-
- set PATH="c:\bin;$PATH"
- echo "PATH=$PATH"
- set F1='ls -l\012' # F1 executes a 'ls -l'
- set F2='df -t\012' # F2 executes a 'df -t'
- set F3='set ECHO=off\012' # F3 turns off echoing
- set F4='set ECHO=on\012' # F4 turns on echoing
- set ECHO=on
-
- Notice the quotes used with PATH to override the interpretation of semi-
- colons as command separators.
-
-
- COMMAND SELECTION:
-
- ASH initially checks each command it parses to see if it's built-in. If
- it's built-in ASH executes it. If a command isn't built-in ASH checks for
- a file suffix. If there's no suffix it will try each of the four standard
- command suffixes (.prg, .ttp, .tos and .ash) in that order. It first
- checks for a command in the current directory. If it's not found in the
- current directory it then looks in the directories specified with the PATH
- set variable as explained above.
-
- As an example, say the command 'FORMAT' was parsed by ASH. It would first
- check to see if there was a built-in command 'FORMAT'. Since there isn't
- it would then search for the command 'FORMAT.PRG' in the current directory.
- If that failed it would look for a command 'FORMAT.TTP' in the current
- directory. If that failed it would look for 'FORMAT.TOS' and 'FORMAT.ASH'
- in that order in the current directory. If all these failed it would then
- look for the same commands in the same order in the first directory
- specified in PATH. If all the directories in PATH were exhausted and a
- command that fit this name had still not been found ASH would give up and
- state that the command wasn't found.
-
-
-
-
- - 13 -
-
-
-
-
-
-
-
- ASH V0.70
-
-
-
- ASH SCRIPTS:
-
- Commands with the .ash suffix are ASH scripts. They're invoked by
- executing ASH on the script recursively. Scripts can also be used with ASH
- by invoking it with the name of a script as the first argument. Up to 9
- arguments can be included on a script command line. They're parsed inside
- the script the way positional arguments are parsed in UN*X; $0 through $9.
- Since that's 10 arguments I should explain that $0 is set to the name of
- the script that's executing. Scripts that call other scripts cause ASH to
- recurse and use up memory in the process stack. I've tested V0.70 to 9
- levels deep with no problems. After that the results are undetermined but
- probably not what you want.
-
- Because of the recursive nature of scripts, the set variables from the
- calling invocation of ASH are available to scripts. Scripts can make
- changes to the set variables or change the current drive and directory but
- those changes are only in effect during the life of the script. If you
- want a script to make lasting changes you must invoke it with the dot
- command. For example to run the script 'clean.ash' you have two options.
- If you want the current set variables and the current drive and directory
- to be unchanged when it exits invoke it like this:
-
- clean
-
- If you want any changes to the set variables or the current drive and
- directory to stick around after 'clean.ash' exits, invoke it like this:
-
- . clean
-
-
- LIMITATIONS:
-
- Some of the limits in ASH are listed below. If your normal use of ASH
- exceeds them please let me know. The program can allocate more memory for
- some of these values while others are fixed by the underlying Atari ST
- operating system.
-
- 23 - commands in the history buffer
- 127 - characters per external (Pexec) command tail
- 255 - characters per built-in command
- 255 - characters per command line
-
- 64 - arguments per command line including the command name
- 127 - characters per argument
-
- 32 - possible set variables
- 255 - characters per set variable
-
-
-
-
-
-
-
- - 14 -
-
-
-
-
-
-
-
- ASH V0.70
-
-
-
- MISCELLANEOUS:
-
- Any time you're confronted with the '[more...]' prompt at the bottom of the
- screen you can type a 'q' to avoid seeing whatever there's more of.
-
- In some instances after switching floppy disks you may have to execute a df
- or ls on the drive to make the system recognize the change. You should
- also be careful about changing floppies when the current working directory
- on the floppy being removed isn't the base directory.
-
- The mouse cursor is normally hidden while ASH is running. If you jiggle
- the mouse a block of background color and a busy bee will show up but they
- will scroll off the screen with normal use. The mouse is kept alive for
- any GEM programs that need it and don't turn it on themselves.
-
- The ASH help file is called 'ash.hlp'. When help is requested ASH first
- looks for the help file in the current directory and then in each of the
- directories in PATH. If you want to save disk space ASH will run without
- the help file.
-
-
- V0.70 NOTES:
-
- Version 0.70 of ASH was compiled with the Megamax C Language Development
- System. It now has dynamic memory allocation and several other
- improvements that weren't in V0.52. Some of the more noticeable changes
- are:
-
- - I/O redirection is supported for built-in commands.
-
- - The . and .. files are ignored in rm commands whether they're
- explicitly specified on the command line or generated through wildcard
- expansion. They can't be removed so there isn't much point in trying.
- They're also ignored at appropriate times in cp and mv commands.
-
- - The intelligent keyboard clock is now set by the date command.
-
- - The mv command doesn't change a file's time stamp.
-
- - The arrow keys and the INSERT key are now active for history editing.
-
- - The 'ash.ini' initialization file handling has improved since any
- valid ASH commands are now allowed.
-
- - Script speed and memory usage has improved since ASH recurses now.
-
- - Scripts inherit the calling ASH's set variables and can modify them if
- called with the dot command.
-
- - The cp command works much faster now. It's comparable to desktop
- drags.
-
-
-
- - 15 -
-
-
-
-
-
-
-
- ASH V0.70
-
-
-
- - The ls command now has a -h option for hidden/system files.
-
- - The opr command now has a -oN option to offset the left margin.
-
- - The opr command now has a way to initialize the printer with the
- OPRINIT set variable.
-
- - The mkdir and rmdir commands now take multiple directory arguments.
-
- - If you ever wondered what to do with those slanty function keys ASH
- now gives you the ability to program them using set variables. See
- the SET VARIABLES section above.
-
- - There is a new attr command which allows you to change the read and
- write attributes of a file to read only and back again. This
- implements file protection as requested by several people.
-
- - There is a new unset command which allows you delete variables from
- the defined list of set variables.
-
- - You now have the ability to repeat (^R) a range of command lines from
- the command history buffer.
-
- I plan to add several more features to ASH in the future. Aliasing of
- command names and some type of flow control commands like IF/FOR/WHILE are
- on my list. I'm willing to consider suggestions for other improvements.
- Please mail your suggestions to the address in the beginning of this
- document. Thanks.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - 16 -
-
-
-
-
- əəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəə