home *** CD-ROM | disk | FTP | other *** search
- Overview
-
- The new CShell 4.9 is no longer adequate to low end systems, it's too large
- and consumes too much memory. I advise everybody who doesn't own a hard
- drive to stick with the old versions. For those who can afford to run it,
- however, this version is a practical tool in command mode and a powerful
- language for writing scripts while remaining compatible with its old
- scripts. As the version number 4.9 suggests, I'm note quite done yet, and
- there might be bugs left. I count on you to report them to me. The source
- is not included this time, but still available.
-
- Some of the new features:
-
- - works fine on an Amiga 3000 and under Kickstart 2.0
- - is residentable
- - file name completion with TAB
- - freely programmable command line editing keys
- - many new editing functions
- - jump scrolling (three lines scrolled in one step, useful in interlace)
- - automatic cd (type 'system' instead of 'cd system')
- - quick cd (cd knows about all directories on your HD and jumps directly)
- - ~ stands for previous current directory
- - special support for the closing kickstart 2.0 gadget
- - you can 'rback' programs by adding a single '&' to the command line
- - it is possible to install menus to the console window
- - some internal functions csh have become faster
- - runs on VT terminals again, even command line editing works now
- - many builtin functions now like 'echo @strleft( hello 3 )'
- - you can finally use foreign character sets
- - any letter can be coded using backslash: echo \101 ouputs 'A'
- - more startup options: -b (priority -1) -t (terminal) -k (no ^C) etc.
- - automatic rx-ing: you can 'rx' .rexx files by typing their name
- - ^D now aborts batchfiles like under AmigaDOS
- - will 'source' files with script bit set
- - limit of 256 arguments removed
- - limit of 20 commands per line removed
- - limit of 256 bytes per source line extended to 512
-
- New commands (and options):
-
- - 'addbuffers' accepts any number drive/buffer pairs
- - 'action' sends a action request to a file class
- - 'alias'es can have more than one argument
- - 'alias'es can prevent wild card expansion
- - 'ascii' shows an ascii table
- - 'assign' accepts any number logical/physical pairs
- - 'assign' can create late/nonbinding assigns under kick 2.0
- - 'cd' has an option to generate the list of all your directories
- - 'class' defines a class of files and the actions allowed on them
- - 'close' without arguments closes all open files
- - 'cls' clears the screen, but now also works on a vt terminal
- - 'copy' now copies the protection bits but clears archive bit
- - 'copy -f' now 'freshens' like zoo. NOTE: *incompatible* with 4.02
- - 'date' has a stopwatch built in
- - 'dir' can sort forwards and backwards by name, size or time.
- - 'dir' can hide .info files and files with the h-bit set
- - 'dir' can show differences between directories
- - 'dir' can show filenotes and file types
- - 'echo' has an option to print to stderr
- - 'exec' works better now
- - 'filenote' can display filenotes, too
- - 'getenv' reads a ARP or ENV: environment variable
- - 'head', a filter, displays the first n lines of stdin
- - 'input' can get characters in single character mode (!)
- - 'info' also gives information on a single device
- - 'linecnt', a filter, counts number of lines
- - 'man' gets documentation to a shell command
- - 'mem' can show only chip, only fast or bytes used sinc last mem -s
- - 'menu' adds a menu
- - 'mv' now clears the archive bit
- - 'path' can also be used to set the path, not only to list it
- - 'protect' can clear and set bits without disturbing the others
- - 'ps' by default only shows the basenames of the started commands
- - 'qsort' quicksorts from stdin to stdout
- - 'readfile' completely reads a file and stores it in a variable
- - 'rxsend' can receive results (now it's useful!)
- - 'search' is much faster and has new output
- - 'setenv' is used to set ENV: variables
- - 'tail', a filter, prints the last lines of a file
- - 'tee' copies stdin to stdout and stderr
- - 'truncate' cuts the width of an ascii file
- - 'touch' now clears the archive bit
- - 'uniq' removes consecutive identical lines
- - 'usage' shows the usage of a command
- - 'waitforport' waits for an (arexx) port
- - 'whereis' looks for a file on your hard drive
-
- New system variables:
-
- - '_every' contains a command to be executed before the prompt appears
- - '_hilite' holds the highlighting attributes
- - '_history' now can be set to 0, which disables history
- - '_kick2x' indicates whether V36 dos.library could be opened
- - '_lcd' is the last current directoy
- - '_minrows' is the minimum number of rows a window must have to quickscroll
- - '_nobreak', if set, disables ^C
- - '_noreq' disables system requesters
- - '_path' no more need slashes at the end of directories
- - '_prompt' now has many special symbols like %t for current time
- - '_qcd' holds the name of the file where the directoy list for cd is stored
- - '_rxpath' stores the list of directories where .rexx files reside
- - '_scroll' contains the scroll jump or 0 for no quick scrolling
- - '_terminal' indicates wheter or not shell was started in terminal mode
- - '_titlebar' can have special %-symbols like _prompt
- - '_tool_xxx' holds default tools for file ending .xxx
- - '_version' is the current shell version number
-
- Functions:
-
- - @abbrev is true if the str1 is an abbreviation of str2
- - @abs returns absolute value of <num>
- - @appext appends an extension to a string
- - @availmem returns free 'chip', 'fast' or otherwise total memory
- - @basename returns the file name without path
- - @center centers a string
- - @checkport indicates if given port exists
- - @clinum returns the number of the given process
- - @complete returns the first word an abbreviation matches
- - @concat concats all args in one blank separated string
- - @confirm gets confirmation for all its arguments
- - @dectohex returns a string representing number in hex
- - @delword returns a string with the n-th word deleted.
- - @delwords deletes the next m words from the n-th.
- - @dirs returns the directories among the given file names
- - @drive outputs the drive ( device ) name associated to path
- - @drives outputs all available drives
- - @exists tells whether a file exists or not
- - @fileblks returns the # of blocks needed for the files
- - @filelen count the total number of bytes of the given files
- - @fileprot returns a string like ---arwed
- - @filereq brings up the arp file requester and returns the selected file
- - @files gives you the files among those names, no directories
- - @freebytes the number of free bytes on the given path
- - @freeblks the number of free blocks on the given path
- - @freestore the amount of free store on that path, given in K, M and G
- - @getenv returns the value of the named env: variable
- - @howmany indicates the # of shells running
- - @index returns the index of str2 in str1 (starting at 1)
- - @info the corresponding line from the 'info' command
- - @intersect returns all words which are in both lists
- - @lookfor looks for a file in the current directory and the given paths
- - @lower lowercases its arguments
- - @match returns the words in the that match the arp-pattern
- - @max computes the maximum of all given numbers
- - @megs expresses a number in K, M and G (-bytes)
- - @member tells you if the first arg is among the remaining
- - @min computes the minimum of all given numbers
- - @nameext returns all after the last dot of filename.
- - @nameroot returns all before the LAST dot of filename.
- - @union returns all names that are in either list
- - @pathname strips the base name from a path
- - @pickargs picks of its arguments those which don't start with a '-'
- - @pickopts picks of its arguments those which start witch a '-'
- - @rpn computes the rpn expression. See rpn command
- - @sortargs sorts its arguments alphabetically
- - @split makes each blank separated part of @string a word
- - @strcmp returns -1, 0 or 1 depending of alphabetical comparison
- - @strhead see strhead command
- - @strleft see strleft command
- - @strmid see strmid command
- - @strright see strright command
- - @strtail see strtail command
- - @subword returns the n-th word of the given list
- - @subword returns the next m words word of the given list starting from n
- - @tackon see tackon command
- - @unique sorts the arguments and makes each of them unique
- - @upper upper cases the given words
- - @volume returns the volume name in that path or "" if no disk present
- - @without returns all names of list 1 that are not in list 2
- - @word same as @subword
- - @words returns the number of args
-
- Bug fixes:
-
- - recursive wild card expansion does not crash the Amiga 3000 anymore
- - recursive wild card expansion does not lose memory anymore
- - now works on AUX:
- - trying to start a non-object-file now properly prints 'Command Not Found'
- - automatic sourcing now also works if you already add .sh to the file name
- - files longer than 999999 bytes no longer misalign 'dir'
- - exec does not discard the rest of the command line ('exec echo hi;echo ho')
- - all memory trashing fixed. Thanks to C= for their great debugging tools!
- - source doesn't forget last character if batchfile was not CR terminated
- - run & rback also search AmigaDOS path now
- - division by zero does not crash rpn anymore
- - temporary pipe files are now written to t: instead of ram:
- - shift-tab does not cause a lockup anymore
- - running the shell via aux: no longer crashes the machine
- - 'history partial' now numbers the lines correctly
- - strleft, strright and strmid no longer crash on strings > 256 bytes
- - source with no arguments now prints correct error message
- - 'input' now cuts down lines longer than 256 bytes instead of crashing
- - cursor-up no more deletes lines if there's an invalid entry in the history
- - if history fails, no empty history entry is generated
- - 'echo "---"' and even 'echo ---' work, but 'echo "-a"' still doesn't
- - international character sets can be used
- - 'copy -u' won't copy a file with identical date stamp but in uppercase
- - 'copy -u' will no longer access low memory
- - 'echo "echo mem | shell" | shell' now works, not only every second time
- - starting from workbench now prevented
- - editing lines longer than 256 bytes is now correctly prevented
- - word-right cursor movement works correclty with multiple blanks
- - 'if'-stack will be adjusted when a batch file is exited
- - relabel occasionally crashed in Syquest drives. should be okay now
-
- New to 4.02A:
-
- - Fixed bug that caused loss of memory on exit.
- - cp now copies protection bits; use -f switch if you want to avoid this.
- - Added commands: man (and alias manlist), uniq, head, tail, tee.
- - This doc has been reformatted to work with man.
-
- New to 4.01A:
-
- - This version features mostly bug fixes and corrections:
- * Window title is restored after quitting.
- * rxrec now answers to the 'bye' message.
- * rpn can now be redirected and piped; however, this causes
- some problem (see rpn for info).
- * resident list now works with ARP 1.3. To recompile source, you must
- modify include file "libraries/arpbase.h".
- Change definition of rpn_Usage in struct ResidentProgramNode from LONG
- to WORD.
- * pri no more assumes 20 CLI maximum.
- * you can now split long lines in source files even into more than 2 lines.
- - Added much info in this doc about source files (chapter XI)
- - Added copyright notice (see under restrictions).
-
- New to 4.00A:
-
- - This version is called 4.00A because it is not 100% compatible with
- previous versions. We choose to accept this in order to better support
- the new ARP.library 1.3.
- - External commands are searched in a different order than before; Shell
- path is now searched AFTER current directory, AmigaDOS path and C:.
- - ARP pattern matching has been implemented (in part for line arg expanding,
- fully for search -w).
- - Internal changes for various optimizations.
- - Search command has been improved in several ways.
- - New commands: basename, tackon.
- - New options: if -v, resident -d, fornum -v -s, dir -n.
- - Fixed bugs with dir (some dirs remained locked), foreach -v, htype
- (blanks were treated as binary), info (for devices > 32M).
- - rback command now works ok (run, however, doesn't).
- - Oh, I forgot: it also has an AREXX port... And you don't even have to get
- AREXX to use it. See new commands rxsend, rxrec
-
- New to 3.03A:
-
- - New filter commands fltlower, fltupper.
- - Added configuration file feature: now if you have a file named S:.login,
- it will be sourced for every Shell you start.
- - New option dir -c.
- - New editing feature: shift-left(right) arrow move cursor to previous(next)
- word.
- - Bugs fixed: alias command wasn't listed in help; typing a number as a
- command was interpreted like 'alias'.
-
- New to 3.02A:
-
- - New commands: fornum, forline, strleft, strright, strmid, strlen, exec.
- - Improved commands: foreach, pri.
- - New system variable _clinumber.
- - You can now split long lines in source files (see source for details).
- - window -q now lists also position of screens/windows, not only dimension.
- - Since strings are handled directly from Shell with new commands,
- rpn is now used only for calculations; string commands are gone.
- However, now RPN is really usable.
- - Changed rawgets() to fix some problems with function keys, multi-line
- editing and window resizing; also, fixed bug with ^E.
- - cat now warns you if it can't find any file matching your pattern.
- - Now uses DOS packets to get ptr to CLI window; this fixes a bug that
- caused problems if Shell was run on unactive windows.
- - Fixed minor bugs (htype printed some more ASCII bytes, some commands
- returned random values, history didn't print CR's).
- - Heavy mods to this file.
-
-