home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 106 / EnigmaAmiga106CD.iso / indispensabili / console / zshell29 / zshell.guide (.txt) < prev    next >
Amigaguide Document  |  1996-03-07  |  141KB  |  2,763 lines

  1. @DATABASE "$VER: ZShell.doc 2.9 (4-Mar-96)"
  2. @NODE MAIN "ZShell-Documentation 2.9 (4-Mar-96)"
  3.                     ________   ___         ___
  4.                    /____   /\\ (___' |___| |__ '|    |
  5.                    \\___/  / / ,___) |   | |___,|___,|___,
  6.                       /  / /____________    _____   _____
  7.                      /  / / \\__________ \\  /_____\\ /__ _/
  8.                     /  / /__           \\ \\// /___/_\\__ \\
  9.                    /  /_____\\           \\_/  \\_________/
  10.                    \\________/
  11.        _________________________________________________________
  12.      _|                                                         |_
  13.     | |   ZShell V1.30 is Copyright 
  14.  1990,91 by Paul Hayter    | |
  15.     | | Update to V2.9 is Copyright 
  16.  1993-95 by Martin Gierich | |
  17.     | |________________________________________________________ | |
  18.     |__\\|                                                     |/__|
  19.      \\|                                                         |/
  20.              Titlepage created by Timothy D. Cochran (XMR)
  21. Under OS1.3/2.0/2.1 all backslashes in this document will appear twice !
  22. See @{" Changes " Link Changes 161} for notes about this release.
  23. @{" For those who never read the whole Documentation" Link For_those}
  24. @{" Introduction, Features and Concepts " Link Introduction}
  25. @{" Starting ZShell " Link Starting}
  26. @{" General Usage " Link General_Usage}
  27. @{" Command Overview " Link Index}
  28. @{" Builtin Commands for Disk Management " Link BUILTIN1}
  29. @{" Builtin Commands for Scripts and Controlling " Link BUILTIN2}
  30. @{" Builtin Commands for Advanced Users " Link BUILTIN3}
  31. @{" Past, Present and Future " Link Past}
  32. @{" Distribution, Copyright and Disclaimer " Link CopyDis}
  33. @{" Credits " Link Credits}
  34. @{" Authors " Link Authors}
  35. @ENDNODE
  36. @NODE General_Usage "General Usage"
  37. @{" History and Command Line Editing " Link History}
  38. @{" Command Line Parser " Link Parser}
  39. @{" Executing Commands " Link Executing}
  40. @{" Using Numbers " Link Numbers}
  41. @{" Wild Cards " Link Wild_Card}
  42. @{" Options " Link Option}
  43. @{" Redirecting Input/Output " Link Redirect}
  44. @{" Anonymous Pipes " Link Pipes}
  45. @{" Filename Completion " Link Filenamecompletion}
  46. @{" Tips and Hints " Link Tips}
  47. @ENDNODE
  48. @NODE Past "Past, Present and Future"
  49. @{" Changes " Link Changes 161}                               ->Past
  50. @{" Known Problems " link Problems}                        ->Present
  51. @{" Possibilities for Future Improvements " Link Future} ->Future
  52. @ENDNODE
  53. @NODE CopyDis "Copyright & Disclaimer"
  54. Some boring but neccessary things:
  55. @{" Distribution " Link Distribution}
  56. @{" Copyright " Link Copyright}
  57. @{" Disclaimer " Link Disclaimer}
  58. @ENDNODE
  59. @NODE Index "Command Overview"
  60. @{" AddBuffers " Link AddBuffers} drive [number_of_buffers]
  61. @{" Alias " Link Alias} [variable] [definition]
  62. @{" Ask " Link Ask} [question]
  63. @{" Assign " Link Assign} [logical name:] [directory] [ADD|DEFER|PATH|REMOVE]
  64. @{" Avail " Link Avail} [-C]
  65. @{" Border " Link Border} ON|OFF [number]
  66. @{" Break " Link Break} task_description [signalmask|C|D|E|F]
  67. @{" Cd " Link Cd} [destination]
  68. @{" Cls " Link Cls}
  69. @{" Comments " Link Comments}
  70. @{" Compare " Link Compare} source dest [offset1 offset2]
  71. @{" Config " Link Ctrl} CTRLKEYS|MOREKEYS|DOT|HIDE|COLOR|COPYSIZE|FNCSIZE|LOGFILE
  72. @{" Copy " Link Copy} [-R] [-S] source1 [source2] ... [destination]
  73. @{" Date " Link Date} [hh:mm:ss|dd.mm.yy|mm-dd-yy]
  74. @{" Delete " Link Delete} [-R] [-Q] source1 [source2] [source3] ... [FORCE]
  75. @{" Delete Disk " Link Delete2} devicename [name [filesystem]]
  76. @{" Dir " Link Dir} [-R] [-Q] [source1] [source2] ...
  77. @{" DiskChange " Link DiskChange} device
  78. @{" Echo " Link Echo} [string]
  79. @{" Else " Link Else}
  80. @{" EndCLI " Link EndCLI} [-C]
  81. @{" EndIf " Link EndIf}
  82. @{" Eval " Link Eval} expression
  83. @{" Execute " Link Execute} [ZSHELL] source
  84. @{" FailAt " Link FailAt} [failat_level]
  85. @{" Fault " Link Fault} [error_number]
  86. @{" FileNote " Link FileNote} file|directory comment
  87. @{" Flags " Link Flags} [CHECK|MATCH|ICON|WILD|ERRORS|DEBUG|CUT|ALL|HIDE|PIPE|RAW|CONFIRM|HBIT] [ON|OFF]
  88. @{" GetMsg " Link GetMsg} [portname]
  89. @{" Help " Link Help1} [topic]
  90. @{" HType " Link HType} source [offset]
  91. @{" If " Link If} [NOT][WARN][ERROR][FAIL][EXISTS file]
  92. @{" Info " Link Info}
  93. @{" Join " Link Join} [-R] [-S] source1 [source2] ... destination
  94. @{" Kill " Link Kill} device|taskdescription
  95. @{" Lab " Link Lab} label
  96. @{" List " Link List} [-R] [-Q] [source1] [source2] ...
  97. @{" Locate " Link Locate} [-C] [bptr|name] [READ|WRITE]
  98. @{" Lock " Link Lock} device ON|OFF
  99. @{" M " Link M} [start_address] [end_address]
  100. @{" MakeDir " Link MakeDir} directory1 [directory2] ...
  101. @{" MakeIcon " Link MakeIcon} filename [icontype]
  102. @{" MakeLink " Link MakeLink} linkname filename [SOFT]
  103. @{" MemClk " Link MemClk} ON|OFF|ALARM
  104. @{" Menu " Link Menu} TITLE|ITEM|SUBITEM|BAR|SUBBAR|END name [action [shortcut]] ...
  105. @{" More " Link More} source [line_count]
  106. @{" Move " Link Move} [-R] [-S] source1 [source2] ... [destination]
  107. @{" NewCLI " Link NewCLI} [-Wnew_window] [-Sstart_script] [-Ccommand] [-N] [-Hhelpfile] [-E]
  108. @{" Path " Link Path} [-C] [path1] [path2] [path3] ...
  109. @{" Prompt " Link Prompt} [string]
  110. @{" Protect " Link Protect} [-R] [-S] [file/dir1] [file/dir2] ... [+|-|=|h|s|p|a|r|w|e|d]
  111. @{" PutMsg " Link PutMsg} port_description [number1|string1] [number2|string2] ...
  112. @{" Quit " Link Quit} [error_code]
  113. @{" Relabel " Link Relabel} drive newname
  114. @{" Rename " Link Rename} source destination
  115. @{" Resident " Link Resident} [command1] [command2] ...
  116. @{" Review " Link Review} [bytesize|-C|-Sfilename]
  117. @{" Run " Link Run} commandline
  118. @{" Search " Link Search} [-R] file search_string
  119. @{" SetClock " Link SetClock} LOAD|SAVE
  120. @{" SetDate " Link SetDate} file|directory [date/time]
  121. @{" Show " Link Show} D|I|L|M|P|R|S|T|V
  122. @{" Skip " Link Skip} label
  123. @{" Split " Link Split} [-Q] source dest length [offset]
  124. @{" Stack " Link Stack} [size]
  125. @{" Strings " Link Strings} sourcefile [count]
  126. @{" UnAlias " Link UnAlias} [alias1] [alias2] [alias3] ...
  127. @{" Wait " Link Wait} timeout
  128. @{" TaskPri " Link TaskPri} priority [task_description]
  129. @{" Type " Link Type} source
  130. @ENDNODE
  131. @NODE For_those "For those who never read the whole Documentation"
  132. Click on the following gadget to start ZShell, then have a look at
  133. the menus (^L means CTRL+L keys):
  134.              @{"  OS2.0 , OS2.1  " System "ZShell -sZStart.OS2 -d"}
  135.              @{" OS3.0 or better " System "ZShell -sZStart.OS3 -d"}
  136. This should explain most things, especially @{" command line editing " link History}.
  137. Things somewhere hidden in the documentation:
  138. * To avoid using an internal command or an alias, you can put a point
  139.   before it, eg. ".list libs:".
  140. * To @{" complete " Link Filenamecompletion} a filename, type in a bit then press TAB.
  141. * If you use "config hide *.info", DIR and Filenamecompletion ignore Icons.
  142. * Try to drag Workbench-Icons into the ZShell window
  143. * To start buffering output, use "review 20000"; press Shift+TAB to see it.
  144.   With it you can use ">m" to @{" redirect " Link Redirect} to MORE, a bit like piping to MORE.
  145. * If you have OS3.0+ see @{" CONFIG COLOR " link ctrl} for faster scrolling.
  146. * @{" Aliases " link Alias} work different to them in normal Shell.
  147. * Use "prompt %n.%p>" to get a full path prompt with process number.
  148. * See @{" FLAGS " link Flags} and @{" CONFIG " link ctrl} on how to configure some things you need.
  149. * Try "flags debug on" to debug your script-files and your aliases.
  150. * See @{" Features " link Features} and @{" Tips and Hints " link Tips} for more.
  151. Some older text following:
  152. @{" Start " link Starting} the file called ZShell from Workbench or CLI (SHELL), or even
  153. better: Put the file ZShell in the C: directory and start the file ZSH.
  154. (Click @{" here " System "copy ZShell C:"} to copy ZShell to C: )
  155. Now press the HELP key. Among lots of other information you see "TYPE HELP
  156. ? ...". Make sure that ZShell.doc is in the @{" current directory " link CD} or in S:
  157. and try that. You will see how to use the @{" ONLINE HELP " Link HELP1}. Try to type
  158. "HELP HISTORY" to see how @{" command line editing " link History} works. @{" Execute " link Execute} the
  159. example startup file "ZStart" or @{" put " link Copy} it into the S: drawer and
  160. @{" have a look " link More} at it.
  161. Please send @{" me " Link Authors 9} your comment; @{" my " Link Authors 9} Internet-Adress is:
  162. uj3w@rz.uni-karlsruhe.de (Martin Gierich).
  163. Click & Play buttons:
  164. Normal start      -> @{" ZShell " System "ZShell -d"}
  165. Showing help      -> @{" ZShell -cHELP " System "ZShell -chelp -d"}
  166. Try ZStart-script -> @{" ZShell -sZStart " System "ZShell -sZStart -d"}
  167. Directory lister  -> @{" ZShell -cLIST " System "ZShell -cLIST -d"}
  168. @ENDNODE
  169. @NODE Introduction "Introduction"
  170. ZShell is a small, fast and powerful Shell.
  171. Have a look at @{" Features " Link Features} to see the advantages.
  172. ZShell is tested with Kickstart 1.3 , 2.04 and 3.0 and should
  173. run also with other Kickstarts. There are no special requirements,
  174. but some things can only be used with Kickstart 2.0 or better.
  175. I tried to made usage similar to AmigaDOS. If you did not
  176. understand something, have a look at your AmigaDOS usermanual.
  177.    @{" Concepts " Link Concepts}                        @{" Features " Link Features}
  178. Used Abbreviations:
  179. OS2.0+ means Kickstart and Workbench versions are 2.0 or better
  180. OS1.3- means Kickstart and Workbench versions are 1.3 or older
  181. FNC means filename completion
  182. @ENDNODE
  183. @NODE Concepts "Concepts"
  184. I have heard that there is a Shell called "zsh" on UNIX-systems. ZShell
  185. has nothing to do with it, because it tries to be AmigaDOS compatible,
  186. not just another UNIX shell clone. The compatibility is, of course, not
  187. 100%, if you need that use the original AmigaDOS Shell. So ZShell has some
  188. differences, that give the special feeling of it.
  189. The first main advantage of ZShell is its power/size ratio. In just 32K
  190. there are all often needed commands (like list,copy etc.) and some not
  191. so often needed, which do not increase size much.
  192. The second main advantage is the Filename completion (short: FNC) and the
  193. review buffer. FNC is like those shells on UNIX and can therefore be
  194. controlled fully with the keyboard. No annoying filerequesters pop up,
  195. that make it neccessary to change from keyboard to mouse.
  196. Nevertheless you can use ZShell with (memory hungry and slow) console
  197. handlers like @{" KingCON " link StartKCON}.
  198. Third, I tried to make using ZShell as easy to use as possible. Not like
  199. UNIX shells which have thousands of options you will never keep in mind.
  200. Fourth thing is script file execution. ZShell itself supports only the
  201. basic stuff to execute scripts, because if you need a more complex
  202. construction you can use ARexx or another programming language.
  203. ZShell was never intended to be a substitute for a programming language !
  204. You can use scripts made for AmigaDOS shell without problems, because
  205. the command EXECUTE uses AmigaDOS to execute it.
  206. See @{" Future " link Future} for the future concepts.
  207. @ENDNODE
  208. @NODE Features "Features"
  209. * @{" Freeware " Link Copyright}, no payment required.
  210. * Usage is similar (or better) to the standard AmigaDOS shell.
  211. * About 36K small (pure assembler code, source included).
  212. * Supports the standard housekeeping commands which are builtin,
  213.   so no disk access is necessary.
  214.   eg. list, dir, cd, rename, makedir, delete, copy, path, info, type
  215. * A total of 68 builtin commands.
  216. * @{" Starting " Link Starting} from Workbench (!) or CLI/Shell. No Installation required.
  217. * Fast @{" Filename completion " Link Filenamecompletion} by simply pressing TAB.
  218. * @{" Anonymous pipes " link Pipes}. You can choose between real and pseudo pipes.
  219. * @{" Review buffer " Link Review} to see again what scrolled out of the window.
  220. * Some @{" commands " Link BUILTIN3} and features for programmers.
  221. * @{" Menus " link Menu} for convenient usage.
  222. * @{" Online Help " Link Help1} function and @{" AmigaGuide-Documentation " link Guide.lib} with examples.
  223. * @{" Command line editing " Link history} better than OS2.0/3.0 Shell.
  224. * Support of OS2.0+ and OS3.0+ specific features
  225. * @{" Wild cards " Link wild_card} and @{" recursive " link Option} processing.
  226. * Real @{" RUN " Link Run} and @{" NEWCLI " Link Newcli} command that reenters ZShell quickly.
  227. * @{" DIR " Link DIR} and @{" LIST " Link LIST} both sort (by default) and show filesize.
  228. * Inbuild Amigaguide-/Multi-viewer
  229. * Application-Window/-Icon
  230. * Can open window on own @{" screen " Link ScreenStart}.
  231. * 100% @{" script " Link Execute} compatibility.
  232. * Can @{" create " Link MakeLink} and @{" show " Link List} Hard- and Softlinks.
  233. * Command and Function key @{" aliasing " Link alias}.
  234. * Can @{" iconify " Link FLAGS} itself.
  235. * Most things are localized if locale.library is available.
  236. * Colorful output (or fast scrolling with OS3.0+, see @{" CONFIG COLOR " Link CTRL})
  237. * Simple @{" MORE " Link MORE} type text viewer.
  238. * Makes itself @{" resident " Link resident} for quicker @{" starting " Link starting} and memory saving.
  239. @ENDNODE
  240. @NODE Starting "Starting ZShell"
  241. There are three ways of starting ZShell:
  242.  1. The easiest way:
  243.     Start the file called "ZShell" from Workbench or CLI/Shell.
  244.  2. Put the file called "ZShell" in the C: directory and
  245.     start the file called "ZSH" from Workbench or CLI/Shell.
  246.  3. A bit complicated and only for starting from Workbench:
  247.     Make a startup script (see below) or an empty file with a PROJECT
  248.     icon. Change the default tool to "ZSH" or "ZShell" (better ZSH,
  249.     but then put ZShell in C: ) with the right path. Doubleclicking on
  250.     this project icon will start ZShell and execute this script.
  251.     You can also shift-doubleclick a startup script with ZSH/ZShell.
  252. The first way is recommended for having a quick glance at ZShell,
  253. but if you use ZShell sometimes, the second way is better, because "ZSH"
  254. is about 800 Bytes long and starts the ZShell-resident if possible.
  255. So loading "ZShell" is only necessary the first time you use ZShell
  256. after booting up. Anyway using "ZSH" is fully optional.
  257. Click on the following gadget for a quick glance at ZShell.
  258. Do not forget to have a look at the menus (^L means CTRL+L keys):
  259.              @{"  OS2.0 , OS2.1  " System "ZShell -sZStart.OS2 -d"}
  260.              @{" OS3.0 or better " System "ZShell -sZStart.OS3 -d"}
  261. @{" Starting from CLI/Shell " Link CLIStart}
  262. @{" Starting from Workbench " Link WBStart}
  263. @{" Opening window on own screen " Link ScreenStart}
  264. @{" Starting using console handlers like KingCON " Link StartKCON}
  265. @{" Starting using AUX: and a terminal " Link StartAUX}
  266. @{" Starting from Hotkey-/Directory-Utilities " Link UtilStart}
  267. @{" How to use CON: " Link Conuse}
  268. @{" Errormessages during starting " Link ErrorStart}
  269. @{" Several notes " Link Notes}
  270. @ENDNODE
  271. @NODE CliStart "Starting from CLI"
  272. If starting from CLI/Shell you can specify the name of a script file
  273. (see @{" EXECUTE " Link EXECUTE}) as an argument which will be executed after starting.
  274. Precede the name with "-s". If there is no name given, ZShell will try
  275. to execute S:ZStart . After "-w" you can specify a window-description.
  276. See @{" NEWCLI " link NewCLI} for more details, it is exactly the same.
  277. eg.     ZSH -sram:hello     {will try to execute ram:hello}
  278.         ZShell              {will try to execute S:ZStart}
  279.         ZSH -sram:hello "-wCON:10/10/90/90/Hi there" {opens this window}
  280. All CLI-Options:
  281.  -Sname (Script): Start script named "name" (default: S:ZStart)
  282.  -Wdesc (Window): Open window with window-description "desc"
  283.  -Ccmd (Command): Start command named "cmd"
  284.  -D     (Detach): Creates its own process (must be last option)
  285.  -N      (Noraw): Switches off the internal command-line-editing
  286.  -Edepth/diplayID/overscan/title (scrEEn): Opens @{" Public Screen " Link ScreenStart}, OS2.0+
  287.  -Hfile   (Help): Determine the file (with path) of the online help (default: S:ZShell.doc)
  288.  -r (not Resident): Testing-stuff (must be first option and lowercase)
  289. @ENDNODE
  290. @NODE WBStart "Starting from Workbench"
  291. If starting from Workbench you can specify the window-description
  292. and the startup script (default S:ZStart , see above) with ToolTypes:
  293. eg.     WINDOW=con:20/50/400/100/Moin
  294.         SCRIPT=ram:hello
  295.         WINDOW=             {this would not open a window}
  296. Make sure that WINDOW and SCRIPT are in capital letters.
  297. (You can edit the ToolTypes by selecting an icon and then choosing
  298. "Information" from the Workbench-Menu.)
  299. All ToolTypes:
  300.  SCRIPT=name : Start script named "name" (default S:ZStart)
  301.  WINDOW=desc : Open window with window-description "desc"
  302.  COMMAND=cmd : Start command named "cmd"
  303.  NORAW=      : Switches off the internal @{" command-line-editing " Link History}
  304.  ICONNAME=name : Specify name of the icon for @{" iconifying " link Flags 20} (OS2.0+)
  305.  XPOS=number : Give the position of the icon (OS2.0+)
  306.  YPOS=number : Give the position of the icon (OS2.0+)
  307.  ICONIFY=    : Start in iconifyed mode (OS2.0+)
  308.  SCREEN=depth/displayID/overscan/title : Opens a @{" Public Screen " Link ScreenStart} (OS2.0+)
  309.  HELPMAN=file: Determine the file (with path) of the online help (default: S:ZShell.doc)
  310. These two are handled by Workbench 2.0+:
  311.  DONOTWAIT   : Use this if you put ZShell in the WBStartup-drawer
  312.                (preferably together with the ICONIFY ToolType)
  313.  TOOLPRI=pri : Sets the @{" priority " Link Taskpri} of the process
  314. @ENDNODE
  315. @NODE ScreenStart "Opening window on own screen"
  316. OS2.0+
  317. You can open a Public Screen using the CLI-Option "-e" or the
  318. Tooltype "SCREEN". Optionally you can pass some arguments:
  319. depth: (default 2) Number of Bitplanes being used
  320. displayID: (default $8000) DisplayID looked up in sys:WBStartup/Mode_Names
  321. overscan: (default 1) Overscan type. 1=text, 2=standard, 3=maximum
  322. title: (default ZShell) Case sensitive name of Public Screen
  323. To get your window open there, you have to add ".../SCREEN ZShell" to your
  324. window-description.
  325. Examples for CLI-Start:
  326. ZShell "-wCON:////Shell/CLOSE/SCREEN ZShell" -e                  @{" Try it " System "ZShell -wCON:////Shell/CLOSE/SCREENZShell -e -s -d"}
  327. ZShell "-wCON:1/10/640/390/Shell/CLOSE/SCREEN ZShell" -e1/$8004  @{" Try it " System "ZShell -wCON:1/10/640/390/Shell/CLOSE/SCREENZShell -e1/$8004 -s -d"}
  328. ZShell "-wCON:////Shell/CLOSE/SCREEN Super" -e3/$8000/2/Super    @{" Try it " System "ZShell -wCON:////Shell/CLOSE/SCREENSuper -e3/$8000/2/Super -s -d"}
  329. Example for Workbench-Start:
  330. SCREEN=3/$8000/1/ZShell-Screen
  331. WINDOW=CON:1/10/640/190/Shell/CLOSE/SCREEN ZShell-Screen         @{" Try it " System "ZShell -wCON:1/10/640/190/Shell/CLOSE/SCREENZShell-Screen -e3/$8000/1/ZShell-Screen -s -d"}
  332. Example for a fullsize ZShell on its own PAL-screen:
  333. SCREEN=
  334. WINDOW=CON:1/4/640/253//NOBORDER/NOSIZE/BACKDROP/SCREEN ZShell   @{" Try it " System "ZShell -wCON:1/4/640/253//NOBORDER/NOSIZE/BACKDROP/SCREENZShell -e -s -d"}
  335. @ENDNODE
  336. @NODE UtilStart "Starting from Hotkey-Utilities or Directory-Utilities"
  337. In most cases you have to use a template like @{" starting from CLI " Link CLIStart}
  338. when configuring the utility.
  339. If the utility does not open a window, you have to use the "-w" option.
  340. If the utility seems to hang up after starting ZShell, try the "-d" option.
  341. With "-d" you do not need a "-w" option.
  342. Example:  zshell -wCON:1/10/640/100/ZShell -d
  343. Some special programs:
  344. YAK: Use "zshell -d" as argument of a hotkey-definition.
  345. MachV: EXECMD"zshell -d"
  346. MTool: Define a program with "zshell" as program and "-d" as parameters.
  347. @ENDNODE
  348. @NODE StartKCON "Starting ZShell using KingCON"
  349. KingCON is a Console-Handler with some GUI-Features.
  350. If you do not use KingCON, you can skip this chapter.
  351. The CLI-Option "-n" and the ToolType "NORAW" switch off the internal
  352. command-line-editor, so you could make use of the command-line-
  353. editing facilities of KingCON.
  354. If you like ZShell's command-line-editor you do not need any special
  355. treatment.
  356. Starting from CLI/Shell:
  357.   Use option -n, and you can optionally use option -w.
  358.   Examples:  @{" ZShell -n " System "ZSHell -n -s -d"}
  359.              @{" ZShell -wKCON: -n " System "ZSHell -wKCON: -n -s -d"}
  360. Starting from Workbench:
  361.   Use the ToolTypes NORAW and optionally WINDOW=KCON:
  362. Using KingCON's iconify feature can be dangerous. To be on the safe side
  363. simply press RETURN after waking KingCON up.
  364. @ENDNODE
  365. @NODE StartAUX "Starting ZShell using AUX"
  366. When starting ZShell use the Tooltype WINDOW=AUX: or (from CLI) something
  367. like:        @{" ZShell -wAUX: " System "ZSHell -wAUX: -s -d"}
  368. It works quite fine with ANSI terminal emulations on other Amigas
  369. (NanoTerm is great, it can be found on Aminet), but VT100 emulations
  370. do not allow to use the cursor keys.
  371. If things look weird or if you have a non-Amiga terminal then put these
  372. lines in your ZStart script:
  373.              flags hide off cut off
  374.              config color 3031030104040703
  375.              prompt "^[[1m%p> "
  376. Requesters will be disabled for your convenience.
  377. @ENDNODE
  378. @NODE Conuse "How to use CON:"
  379. CON: stands for Console-Handler. This is a program which handles
  380. keypresses and textual outputs on its window similar to a file.
  381. You have to pass several things when opening a CON: window:
  382. CON:leftpos/upperpos/width/height/title
  383. leftpos,upperpos are the position of the left top edge in pixels.
  384.   Both need to be 1 or more.
  385. width,height are the window's dimensions in pixels.
  386. title is a string
  387. With OS2.0+ you can pass some more things and you can drop some things.
  388. So "CON:" alone is valid and opens with the default settings.
  389. To get a close gadget you have to append "/CLOSE", eg.
  390.     CON:1/1/600/100/Great/CLOSE
  391. "/SCREEN screenname" opens on a public screen
  392. "/WAIT" stays till you click the close gadget or press CTRL-\\
  393. "/ALT" gives an alternative size with the zoom gadget
  394. ... there are some more but I do not know much of them
  395. @ENDNODE
  396. @NODE ErrorStart "Errors during starting"
  397. If there is an error during starting, a recoverable alert will appear
  398. and show a number. Here is a list what these numbers mean:
  399. Workbench-Start:
  400. 1: No memory for CLI-Structure
  401. 2: CLI-Table 20 limit
  402. 3: No current directory
  403. 4: No icon.library
  404. 5: No icon
  405. OpenWindow:
  406. 10: Already opened
  407. 11: Cannot open output
  408. 12: Not interactive
  409. 13: Cannot open input
  410. Newcli:
  411. 15: Cannot copy CurrentDir
  412. 16: Cannot set up pipe process
  413. Input:
  414. 20: Input failed
  415. 21: Unexpected window closure (harmless)
  416. 22: Forbid or Disable state (bug in external command)
  417. @ENDNODE
  418. @NODE Notes "Several notes"
  419. * You can start ZShell from within the Startup-Sequence. After ending
  420.   ZShell the Startup-Sequence will continue. If you use "ZShell -d" in
  421.   the Startup-Sequence, it will continue and a ZShell will pop up.
  422. * If you would like a scrollbar, try CB (ConBuffer) from
  423.   Aminet/util/shell/conbuffer11.lha . A bit old, but it works.
  424. * You can rename "ZSH" as what you like, but do not rename "ZShell"
  425. * If you start ZShell from the Workbench-Menu "Execute Command",
  426.   you can close the window after ending ZShell with CTRL-\\  or
  427.   doubleclick the close-gadget.
  428. * ZShell and ZSH are PURE (see @{" RESIDENT " Link RESIDENT},@{" PROTECT " Link PROTECT}).
  429. @ENDNODE
  430. @NODE History "History and Command Line Editing"
  431. ZShell has a 1024 byte circular history buffer. It works similar
  432. to most other shells, the NEWCON: handler in Workbench V1.3 and
  433. the standard console handler in OS2.0+.
  434. You can change the edit keys with @{" CONFIG CTRLKEYS " Link CTRL}.
  435. These are the default keys:
  436.   UP ARROW        - go back one line in the history buffer
  437.   DOWN ARROW      - go forward one line in the history buffer
  438.   SHIFT UP ARROW  - go to the 1st line in the history buffer if nothing
  439.                     was typed. Otherwise the string left of the cursor
  440.                     will be searched in history buffer (like in OS2.0+)
  441.   SHIFT DOWN ARROW- go to the last line in the history buffer, which
  442.                     holds the last modified line
  443.                     This is some kind of undo.
  444.   LEFT ARROW      - move cursor left
  445.   RIGHT ARROW     - move cursor right
  446.   SHIFT LEFT ARROW- move cursor to left end
  447.   SHIFT RIGHT ARROW move cursor to right end
  448.   CTRL R          - move cursor to start of previous word
  449.   CTRL T          - move cursor to start of next word
  450.   CTRL S          - delete to start of line
  451.   CTRL E          - delete to end of line
  452.   CTRL W          - delete one word right of cursor
  453.   CTRL Q          - delete one word left of cursor
  454.   CTRL X          - delete whole line
  455.   TAB             - see @{" FILENAME COMPLETION " Link FILENAMECOMPLETION} (that is great !)
  456.   SHIFT TAB       - read @{" review-buffer " Link review} with @{" MORE " Link MORE}
  457.   CTRL V          - read history-buffer with @{" MORE " Link MORE}
  458.   CTRL F          - pop up a filerequester (needs asl.library)
  459.                     See @{" FILENAME COMPLETION " Link FILENAMECOMPLETION} for more.
  460.   CTRL L          - clear the ZShell window
  461.   CTRL P          - clear the Filename completion buffer. This is useful
  462.                     with CrossDOS, because it does not notice changes.
  463.   RETURN          - put commandline in history-buffer and execute it
  464.   SHIFT RETURN    - put commandline in history-buffer without executing
  465.                     (Use CTRL RETURN with OS3.0+ instead.)
  466.   ESC (Escape)    - quit ZShell like @{" ENDCLI " Link ENDCLI} (I like this very much !)
  467. Words are delimited by space, point, slash and colon ( ./:).
  468. Again, command line editing is similar to most shells. Backspace,
  469. delete and return do what they are supposed to do.
  470. If you have defined (using @{" ALIAS " Link Alias}) some Function keys,
  471. you can use them, too.
  472. OS2.0+:
  473. You can drop Workbench-Icons into the ZShell's window. Then the name of
  474. the icon will be inserted into the commandline.
  475. When in @{" iconifyed " Link Flags 20} mode, you can drop an icon on that
  476. Application-Icon with the same effect.
  477. @ENDNODE
  478. @NODE Parser "Command Line Parser"
  479. After entering a command line and pressing RETURN, it will be analyzed.
  480. Characters that have a special meaning:
  481.  ; separates multiple commands
  482.  | separates multiple commands with @{" piping " link pipes} output/input
  483.  > output @{" redirection " link redirect}
  484.  < input @{" redirection " link redirect}
  485.  " quote
  486. If you want to use one of these characters in a normal way, like in a
  487. filename, you have to precede it by \\ (backslash) or you have to enclose
  488. the whole argument in quotes. If you want to have a \\ (backslash) before
  489. these special characters, you have to type \\\\ (two backslashes).
  490. Note that under OS1.3/2.0/2.1 you will see all backslashes in this document
  491. twice ! This is due to a change in OS3.0 amigaguide.library.
  492. Example:                   a\\;b\\\\|c\\<d
  493. This will be converted to  a;b\\|c<d
  494. The ; is for multiple commands in one command line. Example:
  495.   dir ram:;info;echo Done^J
  496. Quotes can be used to surround arguments. Inside the quotes no parsing
  497. is done. This way you can have arguments which contain spaces. Every
  498. opening quote must be followed by a closing quote. Example:
  499.   dir "ram disk:"
  500.   echo "one; two; three"
  501. @ENDNODE
  502. @NODE Executing "Executing Commands"
  503. Most commands can be aborted by depressing Control-C.
  504. Nearly everything is case independent.
  505. To use a disk command simply type its name after the prompt, the
  506. same way as you would do in other shells. The first part of the input
  507. up to the first space is interpreted as commandname. It is searched
  508. for (in this order) :
  509.  1. in the @{" alias " Link alias} list
  510.  2. in the internal (builtin) command list (see @{" COMMAND OVERVIEW " Link Index})
  511.  3. in the @{" resident " Link resident} command list
  512.  4. in the current directory (see @{" CD " Link CD})
  513.  5. in the @{" command search path " Link path}
  514. and, if it is found, it is executed. The part after the first space
  515. is taken as arguments, also called parameters. The arguments are
  516. separated by spaces. ZShell will allow up to 25 arguments.
  517. If the commandname was found on disk, it will be analyzed:
  518.  1. If the commandname is a directory, the current directory will be
  519.     changed (see @{" CD " Link CD}) to it.
  520.  2. If the script flag is set, it will be @{" executed " Link Execute} eighter
  521.     as ZShell script or as ARexx script.
  522.  3. If the execute flag is set (and it is set in most cases), it will be
  523.     tried to treat it as normal executable command. 
  524.  4. If the command is not executable, it will be shown using
  525.     @{" amigaguide.library " Link Guide.lib} (This is an easy way to view Guides).
  526. eg.     addbuffers df0: 15
  527. "addbuffers" is the command, that will be found as a internal command.
  528. "df0:" is the first argument. "15" is the second argument. The third
  529. argument does not exist.
  530. You can avoid using an @{" alias " Link alias} or an internal (builtin) command or
  531. changing the current directory by typing a point before the
  532. commandname (this is called "force disk").
  533. To abbreviate internal or @{" resident " Link resident} commands put a point behind it.
  534. If you use just a point, the current directory will be set to the
  535. last current directory ("dir back").
  536. To get to the parent directory, you have to use a slash ( / ).
  537. eg.     .addbuffers df0: 20
  538. {This uses the disk command or if available the resident addbuffers}
  539.         ad. df0: 20   {uses the internal addbuffers command}
  540.         .add. df0: 20 {if available this uses the resident addbuffers}
  541.         .             {go back to old current dir}
  542. BEWARE of other matching commands! The first matching will be taken!
  543. "as." can mean ASK or ASSIGN, but ASK will be taken !
  544. There is no abbreviation for disk commands, use @{" Filename  Completion " Link FileNameCompletion}
  545. ( TAB-Key ) instead.
  546. A textual error message will be displayed if an AmigaDOS error occurs.
  547. @ENDNODE
  548. @NODE Guide.lib "amigaguide.library"
  549. For those who do not know:
  550.  amigaguide.library is Commodore's great hypertext system that can
  551.  easily be used to view documentations or to implement online-help into
  552.  own applications.
  553.  It needs Kickstart 1.3 or better.
  554.  You can get it from Fish Disk 920 or from Aminet as text/hyper/aguide34.lha
  555. amigaguide.library V34+ can show AmigaGuide documents and ASCII documents.
  556. V39+ that comes with OS3.0+, can show all kinds of files that are supported
  557. by your datatypes including AmigaGuide and ASCII texts.
  558. So, with OS3.0+, you can enter the name of a picture in ZShell just like
  559. a command to view it.
  560. @ENDNODE
  561. @NODE Numbers "Using Numbers"
  562. Various internal commands need numbers as arguments. Usually you simply
  563. give a decimal number, but you also can use these prefixes:
  564.   + Positive number
  565.   - Negative number
  566.   % Binary number
  567.   $ Hexadecimal number
  568.   & Hexadecimal APTR converted to BPTR
  569.   ! Hexadecimal BPTR converted to APTR
  570.   ^ Filename containing number
  571. See @{" EVAL " link Eval} for more.
  572. @ENDNODE
  573. @NODE Wild_Card "Wild Cards"
  574. ZShell supports wild card file descriptions on some commands
  575. (@{" DIR " Link DIR},@{" LIST " Link LIST},@{" DELETE " Link DELETE},@{" COPY " Link COPY},@{" CONFIG " Link CTRL},@{" JOIN " Link JOIN},@{" MOVE " Link MOVE},
  576. @{" PROTECT " Link PROTECT},@{" SEARCH " Link SEARCH})
  577. Important: If you want to use | as part of a wild card, you have to
  578.   precede it by \\ (backslash) or enclose the wild card by quotes. This
  579.   is to avoid to be treated as an @{" pipe " link pipes}. Example:
  580.               dir ram:(*.info\\|*.bak)
  581.   or          dir "ram:(*.info|*.bak)"
  582.   instead of  dir ram:(*.info|*.bak)
  583. OS2.0+ note: The default is to use AmigaDOS wildcard patternmatching.
  584.   It is localized and has not the limitations of the internal matcher.
  585.   But you have to be careful when looking at the examples in this
  586.   documentation, because they are made for the internal matcher.
  587.   (You can even use * instead of #? with the AmigaDOS matcher, because the
  588.   wildstar flag is set by ZShell in the system for all programs. Please
  589.   tell @{" me " link Authors 9} if this makes problems.)
  590.   To switch back to the internal matcher use: @{" FLAGS WILD OFF " link Flags}
  591.   AmigaDOS patternmatcher:
  592.     ?       Matches a single character.
  593.     #       Matches the following expression 0 or more times.
  594.     (ab|cd) Matches any one of the items seperated by '|'.
  595.     ~       Negates the following expression.  It matches all strings
  596.             that do not match the expression (aka ~(foo) matches all
  597.             strings that are not exactly "foo").
  598.     [abc]   Character class: matches any of the characters in the class.
  599.     [~bc]   Character class: matches any of the characters not in the
  600.             class.
  601.     a-z     Character range (only within character classes). 
  602.     %       Matches 0 characters always (useful in "(foo|bar|%)").
  603.     *       Synonym for "#?", not available by default in OS2.0,
  604.             but is switched on by ZShell.
  605.     "Expression" in the above table means either a single character
  606.     (ex: "#?"), or an alternation (ex: "#(ab|cd|ef)"), or a character
  607.     class (ex: "#[a-zA-Z]").
  608. The following refers to the internal patternmatcher:
  609. Wild cards are like those supported on MessyDOS or UNIX systems, and not
  610. the same as the ones on AmigaDOS. So use * instead of #? .
  611. NOTE: You can only effectively put one * character in a wild card.
  612. Character       Meaning
  613.   *         Match zero or more characters.
  614.   ?         Match one character.
  615.   ~         Negates the following wildcard.
  616.  [  ]       Specifies a class of characters to match.
  617.             (One of the characters in the brackets must match)
  618.   |         Separate multiple filenames (can be wildcards)
  619.             (One of the file descriptions separated by | must match)
  620. To get that just try the examples following and try it out with @{" DIR " Link DIR}.
  621. eg.    list *.info      {lists all files ending in .info}
  622.        dir z*.s         {lists all files starting z, ending in .s}
  623.        delete df0:*.info   {deletes all .info files from df0:}
  624.        copy *.s ram:    {copies all .s files to ram:}
  625.        copy 1? df0:     {copies all two char files beginning with 1}
  626.        dir ~*.s         {lists all files NOT ending in .s}
  627.        list ~*.info     {lists all files except for .info files}
  628.        dir *.[co]       {lists files ending in .c or .o}
  629.        list [abcd]*     {lists files beginning with a,b,c or d}
  630.        list c:mount|version {lists the files Mount and Version}
  631.         {OS2.0+ this would be: list c:(mount|version)  }
  632.        list ram:env/a*|*b   {lists all files starting with a or
  633.                              ending with b from RAM:env (environment)}
  634.        copy ~*.info|*.bak   {copies all files NOT ending in .info
  635.                              and NOT ending in .bak}
  636. @ENDNODE
  637. @NODE Option "Options"
  638. As nearly everything, options are also case independent.
  639. The internal commands support only four options, because this is
  640. easier to remember. These options start with a dash (-) followed by
  641. one character.
  642.   1. -C (means Clear) , used by @{" AVAIL " Link AVAIL},@{" ENDCLI " Link ENDCLI},@{" LOCATE " Link LOCATE},@{" MENU " Link MENU},@{" PATH " Link PATH},
  643.         @{" RESIDENT " Link RESIDENT}
  644.   2. -R (means Recursive) , used by @{" COPY " Link COPY},@{" DELETE " Link DELETE},@{" DIR " Link DIR},@{" LIST " Link LIST},@{" JOIN " Link JOIN},
  645.         @{" MOVE " Link MOVE},@{" PROTECT " Link PROTECT},@{" SEARCH " Link SEARCH}
  646.   3. -Q (means Quick) , used by @{" DIR " Link DIR},@{" JOIN " Link JOIN},@{" LIST " Link LIST},@{" DELETE " Link DELETE}
  647.   4. -S (means Sort)  , used by @{" COPY " Link COPY},@{" MOVE " Link MOVE},@{" PROTECT " Link PROTECT}
  648. Instead of -R you could also use ALL , if @{" FLAGS ALL ON " Link Flags 49} is set.
  649. For some special cases there are longer options used: "delete bla force"
  650. FORCE is here an option. You can abbreviate this by a point
  651. (see @{" CONFIG DOT " link CTRL}), so "delete bla f." is the same.
  652. To avoid a filename, that is equal to an option, to be treated as an
  653. option you have to surround it with quotes:
  654.       copy "-r" ram:     {to copy the file -r to ram:}
  655.       delete "force"     {to delete the file named force}
  656. @ENDNODE
  657. @NODE Redirect "Redirecting Input/Output"
  658. The standard redirection operators are supported for all internal
  659. commands, as well as disk based and resident programs. (Redirection only
  660. affects those programs which use the dos.library's Input() and Output()
  661. functions.)
  662.     >filename   redirect std output
  663.     <filename   redirect std input
  664.     >>filename  append redirect output (tacks output onto the end of file)
  665.     <>filename  redirect input and output, "filename" must be interactive
  666.                 like CON:, NEWCON:, NIL: and AUX:
  667.     >M          view output with @{" MORE " link MORE} after the command has ended,
  668.                 you need a @{" review-buffer " link REVIEW} for that which is big enough,
  669.                 otherwise some of the output will be swallowed.
  670.     <W >W <>W   opens a window and inputs/outputs there.
  671.     <* >* <>*   redirection to current window (rarely used)
  672.     If you do not give a filename, input/output will be redirected to NIL:
  673. Redirection can be placed before, between and after arguments and has
  674. the same effect for all three cases.
  675. Note that @{" pipes " link Pipes} are some kind of redirection.
  676. eg.    dir >"ram disk:directory" df0:c
  677.        type zshell.doc <raw:0/0/100/100/input >raw:0/0/640/100/output
  678.        sortfile things >>df0:things.log
  679.        list >m df0:             {view output with more}
  680.        copy > df0: ram:         {redirects to NIL: , no output !}
  681.        type S:Startup-sequence >W    {outputs on own window}
  682. @ENDNODE
  683. @NODE Pipes "Anonymous Pipes"
  684. ZShell supports anonymous pipes with background tasks like those in UNIX
  685. and with temporary files like those in Amiga-csh.
  686. @{" General things about pipes " link GeneralPipes}   What are pipes ?
  687. @{" Real pipes " link RealPipes}                   The real thing.
  688. @{" Pseudo pipes " link PseudoPipes}                 Are better in some cases.
  689. @{" Filters " link Filters}                      Something to use pipes with.
  690. @{" Notes " link PipeNotes}                        What else is interesting.
  691. @ENDNODE
  692. @NODE GeneralPipes "General things about Pipes"
  693. Have you ever tried to view the output of a command with an external
  694. text viewer ? Then you probably have tried something like:
  695.     List >T:listing -r dh0: ; MuchMore T:listing ; delete T:listing
  696. (You do not need spaces before and after semicolons)
  697. Using anonymous pipes you simply have to type:
  698.     List -r dh0: | MuchMore
  699. The "|" character is the pipe symbol. This is why they are called
  700. ANONYMOUS pipes: You do not have to specify a filename.
  701. You can leave out the space before and after "|", I just included them
  702. to make it looking better.
  703. In the above example MuchMore stands RIGHT to the pipe symbol. This means
  704. that it gets its input from the output of the command LEFT to the pipe
  705. symbol. You can simulate this by "MuchMore <T:listing" instead of
  706. "MuchMore T:listing".
  707. Not every command supports reading its input from an input redirection,
  708. so not every command can stand RIGHT to | . All commands can be placed
  709. LEFT to | , but with those having no output it does not make sense.
  710. You can use multiple | in one line like:
  711.     List -r dh0: | UUencode | MuchMore
  712. The List command will pass its output to UUencode, this will modify the
  713. data and outputs it to MuchMore which will display the modified output
  714. of the List command.
  715. Commands, like UUencode, which read data from input, modify it and
  716. output the modified data are called @{" filters " link Filters}. They are usually used
  717. RIGHT to or BETWEEN pipe symbols.
  718. Using pipes and filters it is easy to process streams of data like:
  719.     filter1 <infile | filter2 | filter3 | filter4 >outfile
  720. You cannot put multiple commands between pipe symbols, like
  721.     List|UUencode;MuchMore|MuchMore
  722. This will be interpreted as "List|UUencode" and "MuchMore|MuchMore".
  723. @ENDNODE
  724. @NODE RealPipes "Real Pipes"
  725. Real pipes are switched on by default. You can switch them on by using
  726. @{" FLAGS PIPE ON " Link Flags}.
  727. All commands right to pipe symbols are launched as background tasks.
  728. This allows asynchronous data processing.
  729. Real pipes need the PIPE: device to be mounted:
  730.   Make sure you have pipe-handler (OS1.3) or queue-handler (OS2.0+) in L:,
  731.   check DEVS:Mountlist or DEVS:DOSdrivers (OS2.1+) for an entry called
  732.   PIPE: then type "mount pipe:".
  733. If you type in:
  734.     List | MuchMore
  735. in the current shell the command "List >PIPE:ZShellXX" will be started
  736. (XX is a unique number) and a background shell will be launched similar
  737. to the newcli command, which will execute the command
  738. "MuchMore <PIPE:ZShellXX" (XX is the same number as above).
  739. As long as the List command is executed, both shells will be in system
  740. and you can check this out using "show t" from a third shell.
  741. Output of the List command appears directly on the MuchMore screen, you
  742. do not have to wait till the List command finishes.
  743. After the List command has been finished, it waits for the launched shell
  744. to end, just to not confuse you with a prompt. If you do not want to wait,
  745. you can press CTRL-E and you can go on using the first shell. Nevertheless
  746. you cannot start a new pipe until the old one ends.
  747. A drawback however is, that not all commands are able to handle input
  748. out of the PIPE: device. This means that some external commands cannot
  749. be on the right side of a pipe symbol if real pipes are used.
  750. You can use MuchMore (by Fridtjof Siebert & Christian Stiens), More
  751. from the Workbench Disk (make sure it is in your path, then use ".more"
  752. to access it) and some other text readers and most @{" filters " link Filters}.
  753. Internal commands can be used together with real pipes, too, but if they
  754. are on the right side of a pipe symbol they read the whole output to
  755. memory before they start to do anything with it. This way you will lose
  756. the advantage of asynchronous processing.
  757. See @{" Pseudo Pipes " link PseudoPipes} for more.
  758. @ENDNODE
  759. @NODE PseudoPipes "Pseudo Pipes"
  760. To distinguish this from real pipes, I call them pseudo pipes.
  761. You can switch them on by using @{" FLAGS PIPE OFF " Link Flags}.
  762. Pseudo pipes use temporary files in T:, so they need T: that is usually
  763. assigned in the Startup-Sequence to a directory in Ram Disk.
  764. The commandline
  765.      List | More
  766. (List and More are internal commands) can be simulated with
  767.      List >T:ZShellXXXX ; More <T:ZShellXXXX ; Delete T:ZShellXXXX
  768. (XXXX is a unique number, being the same here). Note that the temporary
  769. file has to be deleted after use. In fact ZShell does not convert the
  770. commandline, because this would cause trouble in case of failure.
  771. First the List command will be started and its output is written to
  772. the file in T:, what means that this needs memory. After the List command
  773. has been finished, More will be started. This is synchronous processing,
  774. you have to wait for the first command to complete. The file in T: cannot
  775. be deleted before the More command ends, so data stays in memory twice.
  776. Internal commands that can be right to the pipe symbol:
  777. @{" MORE " link More}              @{" EXECUTE ZSHELL " link Execute}
  778. @{" TYPE " link Type}              @{" HTYPE " link HType}
  779. @{" STRINGS " link Strings}           @{" SEARCH " link Search}
  780. Additional the same commands that can be used right to real pipes can
  781. also be used right to pseudo pipes.
  782. Comparing pseudo pipes to real pipes:
  783. + Internal commands right to the pipe symbol eat up less memory
  784. + Easier to understand (and, for me, to implement :-)
  785. - Synchronous, so you have to wait
  786. - Needs much memory when handling large quantities of data
  787.   (a background shell needs only about 10KBytes)
  788. Examples:
  789.    dir | more          {view output with MORE}
  790.    info | search dh    {shows the lines for DH0:, DH1: etc.}
  791.    resident|search -3|more   {shows all internal residents using MORE}
  792.    list df0: | htype   {maybe this looks more interesting}
  793. @ENDNODE
  794. @NODE Filters "Filters"
  795. These filters are internal commands:
  796. @{" STRINGS " link Strings}, @{" SEARCH " link Search}, @{" HTYPE " link HType}, @{" TYPE " link Type}
  797. (TYPE is a no effect filter, because data will not be changed.)
  798. A fine collection of filters that support real pipes is available
  799. on Aminet in util/cli/0filters.lha (by Bernd "0" Noll).
  800. @ENDNODE
  801. @NODE PipeNotes "Notes about pipes"
  802. * You can use @{" aliases " link Alias} together with pipes. With these:
  803.     alias mm MuchMore
  804.     alias mdir %1 dir $1 \\|MuchMore
  805.   you can use
  806.     list|mm
  807.     mdir df0:
  808. * To see things happening, try out @{" FLAGS DEBUG ON " link Flags}
  809. * To see all tasks in system, type @{" SHOW T " link Show}
  810. * To see even more things, you can use SnoopDOS (by Eddy Carroll)
  811. @ENDNODE
  812. @NODE Filenamecompletion "Filename Completion"
  813. Filename completion (=FNC) makes typing long filenames and directorynames
  814. easier. It does not matter if you want to type it as command or as
  815. argument. Just type some beginning characters of the desired name
  816. (it also works if you press TAB without typing anything before
  817. or if you give a path) and then press TAB . If there is more than one
  818. possibility that match, it will only be completed as far as all
  819. possibilities match and there are two ways to go further:
  820. 1. Type in the next character(s) then again press TAB .
  821. 2. Press TAB again: The first match will show up. Press TAB again and
  822.    and again to walk through all matches (I call it cycling).
  823.    Press Backtick (`) to cycle backwards (if not in cycling mode Backtick
  824.    will insert a backtick into the commandline).
  825.    To enter a directory shown (indicated by the trailing slash) press
  826.    cursor-right. After you type any other key than TAB, it gets out of
  827.    this cycling mode (cursor-right is the only key that will not cause
  828.    changes to the commandline.).
  829.    To get back how the commandline was before cycling you can press
  830.    shift-cursor-down.
  831. If a filename was fully matched, a space after it will be inserted. If
  832. a directoryname was fully matched, a slash (/) will be inserted after.
  833. If no partial match is found, the screen blinks (display beep).
  834. You can use wildcards with FNC, too. For example you type
  835.   view env:sys/*ilbm
  836. and then press TAB. This will be expanded to
  837.   view env:sys/palette.ilbm
  838. With this you can also check out which files match to a wildcard.
  839. Instead of TAB, you can press CTRL-F, too. This will cause a filerequester
  840. to pop up which shows all matches. Then you can choose one of these
  841. matches or something else.
  842. Maybe you do not want *.info files to be completed. This will avoid
  843. some trouble. Use "config hide *.info" for that or see @{" CONFIG HIDE " Link CTRL}.
  844. If you do not want to see all files that match, you can use
  845. @{" FLAGS MATCH OFF " Link Flags}.
  846. To find out the advantage of FNC it is best to play around with it.
  847. It is really a very convenient and powerful thing !
  848. The contents of the directory last used by FNC is remembered, so it can
  849. be used comfortably on slow floppy disks, too.
  850. See @{" CONFIG FNCSIZE " link ctrl} for more.
  851. For example a directory contains:
  852.   MegaEditExample
  853.   MegaEditExample.info
  854.   MegaViewer
  855.   MoreMegaFiles               {directory}
  856. If you want to change the current directory to MoreMegaFiles you type:
  857.     mo
  858. then press the TAB key. You will see the full name with a slash at the
  859. end. Just press RETURN and you changed it.
  860. To delete MegaViewer you type:
  861.     delete me
  862. and press TAB . You will see "Mega". Now type the V key and
  863. press TAB again. You see "delete MegaViewer ". Press RETURN and
  864. it will be gone.
  865. You want to start MegaEditExample. Type:
  866.     me
  867. and press TAB. Then type E and press TAB. There is no space after the
  868. name. This is because MegaEditExample.info also matches.
  869. Start it by pressing RETURN.
  870. @ENDNODE
  871. @NODE Tips "Tips and Hints"
  872. * Use @{" MORE " Link MORE} instead of @{" TYPE " Link TYPE}.
  873. * Useful @{" aliases " Link alias}:
  874.         alias arexx %1 %2 putmsg $1 0 0 0 0 0 "$2"
  875.   So 'arexx showdvi "tofront"' is the same as the example in @{" PUTMSG " Link PUTMSG}.
  876.   If you want some shortcuts like MessyDOS:
  877.         alias md makedir
  878.         alias ren rename
  879.         alias del delete
  880.         alias dc diskchange
  881.   These are only needed for OS1.3-:
  882.         alias setenv %1 %2 echo >ENV:$1 $2
  883.         alias getenv %1 type ENV:$1
  884.         alias unsetenv %1 delete ENV:$1
  885. * From Workbench assigns are most likely done by clicking an icon:
  886.   For example if you have the assigns below in the script
  887.         failat 10
  888.         assign TEX: dh0:text/pastex
  889.         assign MF: dh0:text/pastex/metafont
  890.         putmsg
  891.   you need to get a PROJECT ICON for that. Now define the default
  892.   tool as ZSH (or ZShell) and a tooltype containing
  893.         WINDOW=
  894.   (case sensitive). That's all. Failat 10 breaks the script if
  895.   an error occurs. Putmsg flashes the screen to indicate that
  896.   everything was successful. No window will be opened.
  897. * CTRL-R and CTRL-T are for moving the cursor one word backwards/forward.
  898.   Probably you would rather like to use Alt-Cursor-Left and
  899.   Alt-Cursor-Right instead. This is not possible to do in ZShell, but
  900.   you can modify your Keymap according to it, because usually Alt-Cursor
  901.   is unused. Get yourself a keymap editor and set it to CTRL-R and to
  902.   CTRL-T (same as hexadecimal 12 and 14).
  903. * A script counting down from 10 to 0 (a bit complicated and slow) :
  904.     failat 11 ; setenv helpenv 11
  905.     lab backtohere
  906.     copy > ENV:helpenv ENV:counter
  907.     eval >ENV:helpenv ^ENV:counter 1 -
  908.     echo "Current number: " ; eval ^ENV:helpenv
  909.     if not error
  910.        skip backtohere
  911.     endif
  912. @ENDNODE
  913. @NODE BUILTIN1 "Builtin Commands for Disk Management"
  914. Following there are descriptions of the standard DOS commands which are
  915. builtin in ZShell (and therefore need not be loaded from disk).
  916. Square brackets [] mean that the argument enclosed in is optional.
  917. A vertical bar | separates multiple possibilities, choose only one.
  918. @{" AddBuffers " Link AddBuffers} drive [number_of_buffers]
  919. @{" Assign " Link Assign} [logical name:] [directory] [ADD|DEFER|PATH|REMOVE]
  920. @{" Cd " Link Cd} [destination]
  921. @{" Compare " Link Compare} source dest [offset1 offset2]
  922. @{" Copy " Link Copy} [-R] [-S] source1 [source2] ... [destination]
  923. @{" Delete " Link Delete} [-R] [-Q] source1 [source2] [source3] ... [FORCE]
  924. @{" Delete Disk " Link Delete2} devicename [name [filesystem]]
  925. @{" Dir " Link Dir} [-R] [-Q] [source1] [source2] ...
  926. @{" FileNote " Link FileNote} file|directory comment
  927. @{" HType " Link HType} source [offset]
  928. @{" Info " Link Info}
  929. @{" Join " Link Join} [-R] [-S] source1 [source2] ... destination
  930. @{" List " Link List} [-R] [-Q] [source1] [source2] ...
  931. @{" Lock " Link Lock} device ON|OFF
  932. @{" MakeDir " Link MakeDir} directory1 [directory2] ...
  933. @{" MakeIcon " Link MakeIcon} filename [icontype]
  934. @{" MakeLink " Link MakeLink} linkname filename [SOFT]
  935. @{" More " Link More} source [line_count]
  936. @{" Move " Link Move} [-R] [-S] source1 [source2] ... [destination]
  937. @{" Protect " Link Protect} [-R] [-S] [file/dir1] [file/dir2] ... [+|-|=|h|s|p|a|r|w|e|d]
  938. @{" Relabel " Link Relabel} drive newname
  939. @{" Rename " Link Rename} source destination
  940. @{" Resident " Link Resident} [command1] [command2] ...
  941. @{" Search " Link Search} [-R] file search_string
  942. @{" SetDate " Link SetDate} file|directory [date/time]
  943. @{" Split " Link Split} [-Q] source dest length [offset]
  944. @{" Type " Link Type} source
  945. @ENDNODE
  946. @NODE AddBuffers "AddBuffers"
  947. ADDBUFFERS drive number_of_buffers
  948. * ADDBUFFERS increases disk access speed on the specified drive by
  949.   adding a number of sector cache buffers. Each additional buffer
  950.   reduces memory by about 560 bytes. Generally, 25-30 buffers per
  951.   floppy drive is optimal.
  952. eg.     addbuffers df0: 25
  953.         addbuffers df1: 30
  954. @ENDNODE
  955. @NODE Assign "Assign"
  956. ASSIGN [logical name:] [directory] [ADD|REMOVE|DEFER|PATH]
  957. * ASSIGN will assign a logical device name to a disk directory.
  958. eg.     assign z: df1:zshell_source
  959.   Now if you do a DIR Z: you will get a directory of df1:zshell_source.
  960.   Similarly, the default device names can be reassigned.
  961. eg.     assign libs: df1:libs
  962. * Typing ASSIGN with no parameters, will list the current device
  963.   assignments.
  964. eg.     assign
  965. * Only for OS2.0+:
  966.  "ASSIGN name: REMOVE" or "ASSIGN name: dir REMOVE" removes that assign
  967.  "ASSIGN name: dir ADD" assigns multiple dirs to name:
  968.  "ASSIGN name: pathname DEFER" will become a normal assign when accessed
  969.   the first time. So you can assign to a path that does not exist yet.
  970.  "ASSIGN name: pathname PATH" assigns to a path. Similar to DEFER, but
  971.   will not converted into a normal assign. If you have "assign bla: df0:
  972.   path" and do "list bla:", you will get the directory of the disk
  973.   inserted NOW (!) in df0:.
  974. @ENDNODE
  975. @NODE Cd "Cd"
  976. CD [destination]
  977. * Changes the current directory to "destination". If no parameter
  978.   is given, the current directory's name is shown. It is easier to
  979.   change the directory by simply typing its name (without CD).
  980. eg.     cd ram:
  981.         ram:t               {same as "cd ram:t"}
  982. @ENDNODE
  983. @NODE Compare "Compare"
  984. COMPARE file1 file2 [offset1 [offset2]]
  985. * Compares two files an gives one of these outputs:
  986.   "Files are equal" -> What it says.
  987.   "Files differ at offset X" -> If you have given offset1 and offset2,
  988.          you have to add X to them to get the offset from the start.
  989.   "Different size" -> The smaller file is contained in the bigger file.
  990. eg.     compare myscript myscript.bak
  991.         compare fred barney 10 15
  992. @ENDNODE
  993. @NODE Copy "Copy"
  994. COPY [-R] [-S] source1 [source2] ... [destination]
  995. * COPY copies all source files or files in the source directories to the
  996.   destination directory. If the destination directory does not exist, it
  997.   will be created. If no destination is given (in this case you can specify
  998.   only one source file/dir ofcourse), the current directory will be taken.
  999. * You can use @{" wild cards " link Wild_card} to specify files.
  1000. * The filedate, filecomment and protection-bits are copied with it.
  1001. * With @{" Option -R " link Option} given, subdirectories and the files and
  1002.   directories in there are also copied (recursive copying).
  1003.   If you have the @{" ALL FLAG " link Flags} set, you can use ALL as last
  1004.   argument instead of -R.
  1005. * A dot (.) as destination means the historically last current directory.
  1006. * With @{" Option -S " link Option} given, it sorts. But who needs that ?
  1007. Note 1: Copying will be done in 50KBytes blocks. This should be a good
  1008.   value. You can change it with @{" CONFIG COPYSIZE " link ctrl}.
  1009. Note 2: You can use @{" option " link option} ALL instead of -R .
  1010. eg.     copy c:dir df1:c
  1011.         copy dir list type cd df1:c
  1012.         copy -r df0:devs df1:devs
  1013.         copy -r source:*.s ram:
  1014.         copy df0: df1:          {only copy the files in df0: to df1:}
  1015. * You can also copy a file to a file. This is like copying to a dir and
  1016.   then renaming. Date, comment and bits are not copyied with it.
  1017. eg      copy df0:fred ram:wilma
  1018.   With that you can print a file etc.
  1019. eg.     copy file PRT:
  1020.         copy CON: barney
  1021. @ENDNODE
  1022. @NODE Delete "Delete"
  1023. DELETE [-R] [-Q] source1 [source2] [source3] ... [FORCE]
  1024. * Deletes one or more files or directories ("source1","source2",...).
  1025. * "source" can be a @{" wild card " link Wild_card} file description.
  1026. * If you specify the -r @{" option " Link option} when deleting a directory,
  1027.   then all subdirectories are recursively deleted also. Otherwise (if the -r
  1028.   option is not given) only the files in the specified directory are deleted.
  1029. * To be safe, delete requests you to really delete a file. You can answer
  1030.   with "Y" (yes) or RETURN if you want this file to be deleted
  1031.        "N" (no) if you do not want this file to be deleted
  1032.        "A" (all) if you do not want to be asked anymore
  1033.        "Q" (quit) if you want to abort deleting.
  1034.   To avoid asking, use option -q or @{" FLAGS CONFIRM OFF " link flags }, but be careful !
  1035. * Ever got the problem with thousands of delete-protected files ?
  1036.   Solution is simple: Use FORCE as last option.
  1037. NOTE 1: "delete RAM:BLA" (BLA is a directory) tries
  1038.   to delete the directory "BLA", not the files in there !
  1039.   Use "delete RAM:BLA/*" (deletes only the files in there)
  1040.   or "delete -r RAM:BLA" (deletes all files and directories inside,
  1041.   then tries to delete BLA itself) for that !
  1042. NOTE 2: You can use @{" option " link option} ALL instead of -R .
  1043. WARNING 1: You can hardly get back what you have deleted !
  1044.   So be careful, especially when using the -r option !
  1045.   (Try DISKSALV for getting lost files back, DO NOT USE DISCDOCTOR!)
  1046. WARNING 2: To delete (hard- or soft-)links you have to use @{" wild cards " link wild_card} !
  1047.   So instead of "delete c:linkname" use with OS1.3- "delete c:linkname|"
  1048.   and with OS2.0+ "delete c:(linkname)".
  1049. eg.     delete fred wilma barney betty dino
  1050.         delete df0:devs df1:c df1:data ram:
  1051.         delete menu/* force
  1052.         delete -r devs:
  1053.         delete -r df1:  {better use "delete device df1:"}
  1054. @ENDNODE
  1055. @NODE Delete2 "Delete Disk"
  1056. DELETE DISK devicename [name [filesystem]]
  1057. OS2.0+ only !
  1058. * Has the same effect as "FORMAT DRIVE device NAME name QUICK NOICONS".
  1059.   devicename is something like DF0: etc., but better not DH0: !
  1060.   The name and the filesystem of the disk will be kept the same, except
  1061.   you specify new ones. See @{" INFO " link Info} on how filesystems look like.
  1062. eg.: You have an Oldfilesystem- (OFS) disk and want to get a Fastfilesystem-
  1063.     (FFS) disk out of it. No need to format the whole disk ! Use
  1064.         delete disk df0: empty ffs
  1065. @ENDNODE
  1066. @NODE Dir "Dir"
  1067. DIR [-Q] [-R] [source1] [source2] ...
  1068. * Lists the directory of the "source" to the screen. Hitting space
  1069.   will pause the listing and backspace will continue it. Files are
  1070.   shown with their size in bytes. DIR lists the current directory
  1071.   if no parameter is given. If "source" is a filename, then only
  1072.   that file is listed. If the @{" option " Link option} "-q" is not given, the filenames
  1073.   will be sorted alphabetically. With the @{" option " Link option} "-R" given
  1074.   it will @{" list " Link List} recursive.
  1075. * All files/dirs with the H-bit (see @{" PROTECT " Link PROTECT}) set, will not be shown.
  1076.   All files that are ignored by @{" FILENAMECOMPLETION " Link FILENAMECOMPLETION} are also hidden.
  1077. * If it is a link, it shows H (for hardlinks) or S (for softlinks) after
  1078.   the filesize. See @{" MAKELINK " link MakeLink}.
  1079. eg.     dir df0:
  1080.         dir -q devs:printers/hp*
  1081. @ENDNODE
  1082. @NODE FileNote "FileNote"
  1083. FILENOTE file|directory comment
  1084. * FILENOTE creates or changes a comment of the file or directory.
  1085.   This comment can be up to 116 characters long and can be displayed
  1086.   using the @{" LIST " Link LIST} command. It is useful if the filename does not say
  1087.   what for this file is. Add a comment to this file and you will
  1088.   forever know what this file does.
  1089. eg.     filenote devs:mountlist "This is used by the mount command"
  1090. @ENDNODE
  1091. @NODE HType "HType"
  1092. HTYPE source [offset]
  1093. * HTYPE outputs a hex listing of the file specified. Output is the
  1094.   same as the M command. SPACE pauses the listing, BACKSPACE
  1095.   gets it going again, and CTRL-C will abort the listing.
  1096. * "HTYPE source offset" starts to display the file after "offset" bytes.
  1097. eg.     htype c:list
  1098. @ENDNODE
  1099. @NODE Info "Info"
  1100. * Lists lots of information about all available volumes (like disks).
  1101.   These columns mean:
  1102.   NAME: Name of the device containing the volume
  1103.   UNIT: Unitnumber, not very interesting
  1104.   SYS:  Filesystem, can be one of:
  1105.         OFS : Oldfilesystem (old fashioned and slow)
  1106.         FFS : Fastfilesystem (needs OS2.0+)
  1107.         INO/INF : International OFS/FFS
  1108.         DCO/DCF : Directory Cache OFS/FFS (needs OS3.0+)
  1109.         ??? : Unknown
  1110.         or something different if you use a non-standard filesystem
  1111.   SIZE: Maximum useable size of the Volume in KBytes (1024 Bytes)
  1112.   FREE: Free/useable size in KBytes
  1113.   FULL: Ratio between used size and maximum size
  1114.   BLOCK: Size of a single block in Bytes
  1115.   STATUS: Says if it is possible to write to that volume
  1116.   ERR:  Number of soft errors, I only saw 0 yet
  1117.   VOLUME: Name of the volume (name of the disk).
  1118. * Note: It would not make sense to show the free size in Bytes,
  1119.   because space can only be allocated in whole blocks and one
  1120.   block is at least 488 Bytes large.
  1121. eg.     info
  1122. @ENDNODE
  1123. @NODE Join "Join"
  1124. JOIN [-R] [-S] [sourcefile1] [sourcefile2] ... destfile
  1125. * JOIN concatenates one or more files to form a new file (destfile).
  1126. * @{" wild cards " link Wild_card} are supported.
  1127. * See  @{" COPY " link Copy} for more.
  1128. eg.     join fred.doc roy.doc dog.doc mydocs.doc
  1129. @ENDNODE
  1130. @NODE List "List"
  1131. LIST [-R] [-Q] [source1] [source2] ...
  1132. * Lists the directory of the "source" to the screen. Hitting space
  1133.   will pause the listing and backspace will continue it.
  1134. * LIST acts similar to @{" DIR " Link DIR}, but outputs more information:
  1135.   - Hidden files will be shown
  1136.   - Shows the date and time of the last change. See @{" DATE " link Date}.
  1137.   - Shows the protection-bits. See @{" PROTECT " Link PROTECT}.
  1138.   - If available, the comment will be shown. See @{" FILENOTE " Link FILENOTE}.
  1139.   - If it is a link, it shows where it is linked to. See @{" MAKELINK " link MakeLink}.
  1140.     (Note:softlinks are resolved by ReadLink(), hardlinks by simply Lock())
  1141. * LIST supports recursive listing. That means the contents of all
  1142.   subdirectories are shown. To use it, specify the @{" -r option " Link option}.
  1143. * With the @{" -q option " Link option} given, it does not sort nor print
  1144.   comments and links.
  1145. eg.     list
  1146.         list sys:system
  1147.         list -q df0:
  1148.         list -r -q *.info    {show all INFO-files in the current and
  1149.                               in the sub-directories}
  1150.         list -r ram:~*.info  {show all except *.info files in RAM:}
  1151. @ENDNODE
  1152. @NODE Lock "Lock"
  1153. LOCK device ON|OFF
  1154. * "LOCK device ON" locks the write-access to a device
  1155. eg.     lock df0: on
  1156.   will make it impossible to write to or change something on the
  1157.   disk inserted in DF0:
  1158. * "LOCK device OFF" makes write-access to a device possible again.
  1159. eg.     lock dh0: on
  1160.         lock dh0: off
  1161. @ENDNODE
  1162. @NODE MakeDir "MakeDir"
  1163. MAKEDIR [directory1] [directory2] ...
  1164. * Creates one or more directories of the names specified.
  1165. eg.     makedir temp
  1166.         makedir c l s libs devs fonts
  1167.         makedir devs/printers ram:c
  1168. @ENDNODE
  1169. @NODE MakeIcon "MakeIcon"
  1170. MAKEICON filename icontype
  1171. OS2.0+ only !
  1172. * Makeicon creates a default icon for the file "filename". "icontype" can
  1173.   be one of: DISK, DRAWER, TOOL, PROJECT, GARBAGE, DEVICE, KICK or APPICON
  1174.   "filename" is without appending .info.
  1175.   Note that DEVICE and APPICON will not be available on most systems.
  1176. eg.     makeicon barney tool
  1177.         makeicon sys:libs drawer  {"makeicon libs: drawer" will not work}
  1178.         makeicon sys:system/format
  1179. @ENDNODE
  1180. @NODE MakeLink "MakeLink"
  1181. MAKELINK linkname filename [SOFT]
  1182. OS2.0+ only !
  1183. * Makelink creates a Hardlink or Softlink to the file or directory
  1184.   "filename". "linkname" must be a filename, that does not exist yet.
  1185.   You can use links like the file/directory itself, but they need nearly
  1186.   no additional diskspace. In most cases you would use Hardlinks.
  1187. * If you delete a file a Hardlink is linked to, the Hardlink will become
  1188.   the file itself. Hardlinks cannnot work accross devices, use Softlinks
  1189.   for that. (Hardlinks are resolved by the filesystem.)
  1190. * Softlinks are links to a path, that is checked every time when accessed,
  1191.   so a link to DF0: depends on the disk inserted in DF0: .
  1192.   (Softlinks are resolved by AmigaDOS)
  1193.   I wonder why Softlinks are not supported by the commands in the C:
  1194.   directory even of Workbench 3.0 ? A bit old fashioned !
  1195. !WARNING: To delete (hard- or soft-)links you have to use @{" wild cards " link wild_card} !
  1196. !  So instead of "delete c:linkname" use with OS1.3- "delete c:linkname|"
  1197. !  and with OS2.0+ "delete c:(linkname)".
  1198. eg.     makelink muchmore ppmore
  1199.         makelink sys:commands c:
  1200.         makelink readme df0:readme soft  {so with "more readme" you will
  1201.     see the readme-file on the disk currently inserted into DF0: }
  1202. @ENDNODE
  1203. @NODE More "More"
  1204. MORE source [line_count]
  1205. * MORE acts as a simple (ANSI) text file viewer. By default, it will
  1206.   show some lines of a text file, then wait for some user input.
  1207. eg.     more readme
  1208.  *After pressing "H" you get some Help information.
  1209.  *To move around in the text, you can use the CURSOR-KEYS:
  1210.     UP        : Go one line up
  1211.     DOWN      : Go one line down
  1212.     LEFT      : Go one page up
  1213.     RIGHT     : Go one page down
  1214.     SHIFT-UP  : Go to the top of the text
  1215.     SHIFT-DOWN: Go to the bottom of the text
  1216.   You can also use the keys 1,2,3,7,8 and 9 of your numeric keypad.
  1217.   SPACE does the same as SHIFT-DOWN, BACKSPACE the same as SHIFT-UP.
  1218.  *The key "S" will prompt you what to Search for. If you just press
  1219.   RETURN, then the last item will be searched for. Searching begins
  1220.   at the second top line shown. If the item is found, the line, it
  1221.   is in, is displayed as the first line.
  1222.  *The key "N" searches for Next occurence of the search string
  1223.  *The key "W" Writes the text to a file. If you enter PRT: as filename,
  1224.   the text is send to the printer. Press just RETURN to cancel.
  1225.  *Press "J" to Jump to a position you can give in %.
  1226.  *Press "R" after you have Resized the window (or to Redraw the window
  1227.   for another reason).
  1228.  *Press "Q" or "ESC" to quit MORE.
  1229.  *Typing any other key will be ignored.
  1230. All keys except the numeric keypad, SPACE, BACKSPACE and ESC can be
  1231. redefined using @{" CONFIG MOREKEYS " link ctrl}.
  1232. * Specifying the optional line count will allow you to show more or
  1233.   less than the default number of lines, that will fit exactly on the
  1234.   window. Useful when using @{" FLAGS CUT OFF " Link Flags}.
  1235. eg.     more contents 12
  1236.         more super.doc 25
  1237. @ENDNODE
  1238. @NODE Move "Move"
  1239. MOVE [-R] [-S] source1 [source2] ... [destination]
  1240. * This is very similar to the @{" copy-command " link copy}, but all files/directories
  1241.   copyied will be deleted afterwards. If an error happens, the source will
  1242.   not be deleted. If it was OK, you will see "... copied"
  1243. * If source and destination are on the same device it uses @{" rename " link rename}
  1244.   instead. This is quicker and needs less disk accesses. Then you will
  1245.   see "...moved".
  1246. * Note the difference between "move dir" and "move dir/*".
  1247. eg.     move ram:a ram:b
  1248.         move -r df0:* df1:
  1249.         move c:mount devs:
  1250. @ENDNODE
  1251. @NODE Protect "Protect"
  1252. PROTECT [-R] [-S] filename1 [filename2] ... [+|-|=|h|s|p|a|r|w|e|d] [+|...
  1253. * Allows you to alter/see the protection bits associated with a file
  1254.   or a directory. To see it, you can also use @{" LIST " link List}.
  1255.   You can use @{" wild cards " link Wild_card} to process multiple files.
  1256. * See @{" COPY " link Copy}  how to use -r and -s.
  1257. * PROTECT filename +bits_to_set -bits_to_clear
  1258.   Sets all bits_to_set and resets all bits_to_clear.
  1259.   You can give one + or one - or both or both not.
  1260. * PROTECT filename =bits_to_be
  1261.   Sets all bits_to_be and resets all other bits
  1262. eg.     protect game +hp -rwd
  1263.         protect monitor =srwe
  1264.         protect -r df0:* -d
  1265. Bits:   "h"     hidden  V1.3
  1266.         "s"     script  V1.3
  1267.         "p"     pure    V1.3
  1268.         "a"     archive V1.3 -> is reset when file is changed
  1269.         "r"     readable
  1270.         "w"     writable
  1271.         "e"     executable   -> will be checked before executing
  1272.         "d"     deletable
  1273. @ENDNODE
  1274. @NODE Relabel "Relabel"
  1275. RELABEL drive newname
  1276. * RELABEL renames the disk specified with the newname given.
  1277. eg.     relabel Empty: MY_DISK
  1278.         relabel df0: FISHMONGER
  1279. @ENDNODE
  1280. @NODE Rename "Rename"
  1281. RENAME source destination
  1282. * Renames the file or directory of name "source" to that of
  1283.   "destination". You can use this to move files on a disk.
  1284. eg.     rename df0:c/list df0:ls        {moves and renames}
  1285.         rename ed Editor                {just renames}
  1286. @ENDNODE
  1287. @NODE Resident "Resident"
  1288. RESIDENT [command1] [command2] ...
  1289. * RESIDENT allows you load commands into memory, such that they
  1290.   will execute immediately, rather than be loaded from disk all the
  1291.   time. The benefit of RESIDENT over saving commands on the RAM:
  1292.   disk is that only one copy of the command is in memory all the
  1293.   time. RAM: based commands will use up twice as much memory when
  1294.   the command is being executed.
  1295. * The limitation of RESIDENT is that only certain commands will
  1296.   work. Generally, all commands which have their PURE bit (see
  1297.   @{" PROTECT " Link PROTECT}) set can be made RESIDENTABLE. However, RESIDENT
  1298.   does not check whether the PURE bit is set before loading, and
  1299.   hence you can try out commands to see if they work. They'll
  1300.   always work the first time. Its only when executing the 2nd
  1301.   time that the Amiga will likely crash.
  1302.   Note: Crunched programs will most likely not work.
  1303. * Typing RESIDENT with no parameters will show the current list
  1304.   of resident commands:
  1305.     ADRESS is useful for programmers
  1306.     USECOUNT says how many times it is used right now
  1307.              ROM internal residents have negative values
  1308.     NAME means the name  (hard to guess :)
  1309. * Typing one or more command names after RESIDENT will make those
  1310.   commands resident. ZShell will search the command search @{" path " Link path}
  1311.   to try and find them.
  1312. eg.     resident c/list c/cd c/date c/avail
  1313.         resident ed
  1314. @ENDNODE
  1315. @NODE Search "Search"
  1316. SEARCH [-r] file search_string
  1317. * SEARCH searches for the search_string in the file. The file can
  1318.   be a binary (eg. executable) or a text. Each occurance
  1319.   will be printed on the window with highlighted search_string.
  1320.   If the file is a text, the whole line will be printed.
  1321.   If it is a binary file, it will be printed from the occurance
  1322.   to the next NULL or LF.
  1323. * Searching is case independent (of course!).
  1324. * To search for a string at the beginning of a line (textfile only)
  1325.   put a dot (.) before the search_string.
  1326. * SEARCH supports wildcards and recursive processing, see @{" LIST " link List}.
  1327. eg.     search zshell.doc "binary (eg."
  1328.         search s:startup-sequence .assign
  1329.           {show all assigns, but not "resident assign"}
  1330.         search c:mount $ver:    {show version number and date,
  1331.                             should work with all newer executables}
  1332. @ENDNODE
  1333. @NODE SetDate "SetDate"
  1334. SETDATE file|directory [date/time]
  1335. * SETDATE changes the date-of-last-change (DOLC) of a file or directory.
  1336.   The DOLC can be shown by simply listing this file with @{" LIST " Link LIST}.
  1337. * SETDATE with no date/time given sets the DOLC to the systemtime
  1338.   (see @{" DATE " Link DATE},@{" SETCLOCK " Link SETCLOCK}).
  1339. * If you want to set the DOLC to a special date you have to specify
  1340.   the date or time or both in a format described at @{" DATE " Link DATE}.
  1341. eg.     setdate ram:newthings
  1342.         setdate devs:mountlist 21.8.71      {very old}
  1343.         setdate murks 18:24:12 12-24-96     {future}
  1344. @ENDNODE
  1345. @NODE Split "Split"
  1346. SPLIT [-Q] source dest length [offset]
  1347. * SPLIT is the opposite of @{" JOIN " link Join}.
  1348.   It splits up a (large) source file into several smaller pieces which
  1349.   get their name from "dest" and an automatically appended two digit
  1350.   number. The asking between the single files allow to change floppy
  1351.   disks and makes it possible to split a large file directly on multiple
  1352.   floppy disks. See @{" delete " link delete} for more about that.
  1353.   (The source file does not need to fit into memory.)
  1354. eg.     split aminet.index df0:index 750000
  1355.   {assuming that aminet.index is 2MB big, this creates df0:index01
  1356.   df0:index02 and df0:index03 }
  1357. other egs.  split -q bigfile small 10000    {does not ask}
  1358.             split bigfile small 10000 5000  {skip the first 5000 bytes}
  1359. @ENDNODE
  1360. @NODE Type "Type"
  1361. TYPE source
  1362. * Prints to the screen the ASCII/ANSI text file specified as "source".
  1363.   Hitting any key will pause the listing. Backspace will restart it.
  1364.   CTRL-C will abort the listing.
  1365. * Use @{" MORE " Link MORE} instead of TYPE, if possible.
  1366. eg.     type readme
  1367. @ENDNODE
  1368. @NODE BUILTIN2 "Builtin Commands for Scripts and Controlling"
  1369. Following there are descriptions of the other commands which are
  1370. builtin in ZShell (and therefore need not be loaded from disk).
  1371. Square brackets [] mean that the argument enclosed in is optional.
  1372. A vertical bar | separates multiple possibilities, choose only one.
  1373. @{" Alias " Link Alias} [variable] [definition]
  1374. @{" Ask " Link Ask} [question]
  1375. @{" Avail " Link Avail} [-C]
  1376. @{" Border " Link Border} ON|OFF [number]
  1377. @{" Cls " Link Cls}
  1378. @{" Date " Link Date} [hh:mm:ss|dd.mm.yy|mm-dd-yy]
  1379. @{" Echo " Link Echo} [string]
  1380. @{" Else " Link Else}
  1381. @{" EndCLI " Link EndCLI} [-C]
  1382. @{" EndIf " Link EndIf}
  1383. @{" Eval " Link Eval} expression
  1384. @{" Execute " Link Execute} [ZSHELL] source
  1385. @{" FailAt " Link FailAt} [failat_level]
  1386. @{" Fault " Link Fault} [error_number]
  1387. @{" Help " Link Help1} [topic]
  1388. @{" If " Link If} [NOT][WARN][ERROR][FAIL][EXISTS file]
  1389. @{" Lab " Link Lab} label
  1390. @{" MemClk " Link MemClk} ON|OFF|ALARM
  1391. @{" Menu " Link Menu} TITLE|ITEM|SUBITEM|BAR|SUBBAR|END name [action [shortcut]] ...
  1392. @{" NewCLI " Link NewCLI} [-Wnew_window] [-Sstart_script] [-Ccommand] [-N] [-Hhelpfile] [-E]
  1393. @{" Path " Link Path} [-C] [path1] [path2] [path3] ...
  1394. @{" Prompt " Link Prompt} [string]
  1395. @{" Quit " Link Quit} [error_code]
  1396. @{" Review " Link Review} [bytesize|-C|-Sfilename]
  1397. @{" Run " Link Run} commandline
  1398. @{" SetClock " Link SetClock} LOAD|SAVE
  1399. @{" Skip " Link Skip} label
  1400. @{" Stack " Link Stack} [size]
  1401. @{" UnAlias " Link UnAlias} [alias1] [alias2] [alias3] ...
  1402. @{" Wait " Link Wait} timeout
  1403. @{" Comments " Link Comments}
  1404. @ENDNODE
  1405. @NODE Alias "Alias"
  1406. ALIAS [variable] [definition]
  1407. * ALIAS assigns a variable name to a definition. The variable name
  1408.   can be up to 15 characters long, and the definition can be up to
  1409.   about 360 characters long.
  1410. * Typing ALIAS with no parameters at all, will generate a list of all
  1411.   current alias definitions.
  1412.   eg.   alias
  1413. * Aliasing of Function Keys
  1414.   eg.   alias f1 ed df0:s/startup-sequence^M
  1415.   This example assigns the unshifted F1 key to "ed df0:s/startup-sequence"
  1416.   with following return. Note that the ^M characters puts an auto
  1417.   carriage return in the definition.
  1418.   eg.   alias sf10 cd df0:^M
  1419.   This sets shifted F10 to "cd df0:<CR>".
  1420.   You can use quotes to make it look better:
  1421.         alias f2 "cd df1:^M"
  1422.         alias f4 "genim2 "
  1423.         alias sf9 "scribble df0:text/"
  1424.   If you want to use a semicolon in the alias, you need to use quotes:
  1425.         alias f1 "a68k z.a;blink z.o to z^M"
  1426.   or leave away the quotes and use a backslash before the semicolon:
  1427.         alias f1 a68k z.a\\;blink z.o to z^M
  1428.   You can use all control characters that you can use in @{" MENU " link Menu}.
  1429. * Aliasing of commands
  1430.   eg.   alias mv rename
  1431.   This allows an alternate name for rename. i.e. mv.
  1432.   So you could type
  1433.         mv oldname newname      {to rename oldname to newname}
  1434.   eg.   alias as a68k
  1435.         alias pp powerpacker
  1436.         alias go "a68k zsh.s;blink zsh.o to zsh"
  1437.         alias cped copy df0:c/ed
  1438.   You would use this last alias, if you need to copy a particular
  1439.   file a lot. So, to copy c/ed to ram: use:
  1440.         cped ram:
  1441. * You can also pass external parameters to an alias.
  1442.   eg.   alias al "%1 a68k $1.s;blink $1.o to $1"
  1443.   Typing
  1444.         al test
  1445.   will assemble test.s using a68k, then blink test.o to become test.
  1446. You can specify upto eight parameters to pass to a command alias.
  1447. At the start of the alias definition, specify the parameters to pass
  1448. with the variables %0 thru %7. These need not be in sequence. The
  1449. first %n will be assigned to the first parameter, the 2nd %n to
  1450. the 2nd parameter etc.
  1451. Insert the corresponding variables $0 thru $7 at the points in the
  1452. alias definition where that parameter is to appear.
  1453. eg.     alias disp %1 %2 %3 echo "$3 $2 $1"      {is the same as: }
  1454.         alias disp "%1 %2 %3 echo "$3 $2 $1""    {note the quotes}
  1455.         alias cram %0 %1 %2 %3 copy $0 $1 $2 $3 ram:
  1456.         alias go %5 %1 %6 %2 echo "1st-$5 2nd-$1 3rd-$6 4th-$2"
  1457. * Command aliases can be nested to nearly unlimited levels.
  1458.   eg.   alias clear echo ^L\\;alias cdir "%1 clear;cd $1;dir"
  1459.   Note that
  1460.         alias dir list ; alias list dir
  1461.   does not work to exchange DIR and LIST, because this is interpreted
  1462.   as nested aliases. This works:
  1463.         alias dir \\list ; alias list \\dir
  1464.   A backslash (\\) before the command skips alias parsing.
  1465. * An important point about aliases, is that you can redefine the
  1466.   existing internal command names.
  1467.   eg.   alias help "type help_screen"
  1468.   This would make it so that pressing HELP or typing H E L P would
  1469.   not generate the standard help command list, but would type the
  1470.   file called  help_screen to the screen. Similarly
  1471.   eg.   alias copy c:copy       {replace copy by disk-based copy}
  1472.         alias info c:dfree
  1473.         alias more .more        {replace list by disk-based more}
  1474. * See UNALIAS for how to remove alias definitions.
  1475. @ENDNODE
  1476. @NODE Ask "Ask"
  1477. ASK [question]
  1478. * ASK prompts the user with a question requiring a Yes or No
  1479.   answer. If the first letter of the users response is "Y", ASK
  1480.   returns code WARN. Responding "E" returns ERROR, "F" returns
  1481.   FAIL. Any other letter will result in return code OK.
  1482.   The question can include ASCII characters as well as control
  1483.   codes as per the @{" ECHO " Link ECHO} command.
  1484. eg.     ask "Do you want commands copied to ram? "
  1485.         if warn
  1486.                copy c: ram:
  1487.         endif
  1488. Note: You can @{" redirect " Link redirect} the ANSWER to a file by redirecting the OUTPUT.
  1489. eg.     ask >ENV:CallIt        {The answer is written to CallIt}
  1490. @ENDNODE
  1491. @NODE Avail "Avail"
  1492. AVAIL [-C]
  1493. * AVAIL shows the available memory as:
  1494.   1.Total chip memory free,
  1495.   2.Total fast memory free,
  1496.   3.Total memory free.
  1497. * With @{" option " Link option} "-c" given, it tries to free unused memory
  1498.   (remove unused libraries, devices and the help manual)
  1499. eg.     avail
  1500.         avail -c
  1501. @ENDNODE
  1502. @NODE Border "Border"
  1503. BORDER ON|OFF [number]
  1504. * Switches the border of the window on or off. If the border is off
  1505.   there will fit some more characters in a line; this can be useful
  1506.   when viewing texts with @{" MORE " Link MORE}.
  1507. * If you run OS1.3-, you should do a @{" CLS " Link CLS} or "echo ^L" after
  1508.   using BORDER OFF.
  1509. * If you specify a number after ON or OFF, the window is resized as
  1510.   large as possible. The number means the wanted distance of the
  1511.   window top to the screen top in pixels. By specifying a negative
  1512.   value the window will just not hide the screens menu bar.
  1513. eg.     border off
  1514.         border on 0         {fills full screen}
  1515.         border off -1       {does not hide the menu bar}
  1516.         border on 10;cls    {with OS1.3-}
  1517. @ENDNODE
  1518. @NODE Cls "Cls"
  1519. * CLS clears the window.
  1520.   It also resets the consolehandler, so if you see lots of funny
  1521.   characters on the window, try CLS.
  1522. * You can do the same by using "echo ^[c".
  1523. * CTRL L only clears the window (same as "echo ^L").
  1524. eg.     cls
  1525. @ENDNODE
  1526. @NODE Date "Date"
  1527. DATE [hh:mm:ss|dd.mm.yy|mm-dd-yy]
  1528. * DATE without arguments shows the actual date and time (systemtime).
  1529. * You can specify one or two arguments to set date or time or both.
  1530.   The time format must be in HOUR:MINUTE:SECOND . Do not forget the
  1531.   colon (:) between. Give only one or two digit numbers.
  1532.   There exists two formats for setting the date. First is
  1533.   DAY.MONTH.YEAR . Second is MONTH-DAY-YEAR . Use only one or two
  1534.   digit numbers.
  1535. eg.     date
  1536.         date 14:15:00         {quarter past two PM}
  1537.         date 12.5.94          {12th of May in 1994}
  1538.         date 3-30-88 8:12:45  {30th of March in 1988 in the morning}
  1539. @ENDNODE
  1540. @NODE Echo "Echo"
  1541. ECHO [string]
  1542. * Prints the "string" to the screen. If you want spaces in the
  1543.   string, make sure the whole string is enclosed in quotes. If you
  1544.   want to print special control characters (eg. ctrl-L clear screen)
  1545.   then prefix the control letter with a ^ character. If you want to
  1546.   print double quotes, then use the \\ character before the qoutes.
  1547.   If you want to print some special characters like the CSI ($9B),
  1548.   you can put a (hexa-)decimal number after the ^ character; you can
  1549.   separate it from the next character by a point (.) . Do not forget
  1550.   the ^J at the end of a line.
  1551. eg.     echo hello^J
  1552.         echo "Hello world !"
  1553.         echo Hello world !
  1554.         echo "^Lthe screen was just cleared^J"
  1555.         echo "^Lline 1^Jline 2^Jline 3^J"
  1556.         echo "these are double quotes ->\\"^J"
  1557.         echo ^*33mColor^*32mful^J
  1558.         echo ^*4mUnderlined^*0mNormal^J
  1559. * Some common control codes are:
  1560.   ^7    ^G      bell (makes a DisplayBeep)
  1561.   ^10   ^J      linefeed.
  1562.   ^12   ^L      clear screen.
  1563.   ^13   ^M      carriage return.
  1564.   ^24   ^X      clear line.
  1565.   ^27   ^[      escape.
  1566.   ^$9b  ^*      CSI (command sequence introducer).
  1567. @ENDNODE
  1568. @NODE Else "Else"
  1569. * ELSE marks the middle of an @{" IF " Link IF} statement. All statements
  1570.   following it, and before the @{" ENDIF " Link ENDIF} statement will be executed
  1571.   only if the IF condition is FALSE. See @{" IF " Link IF} for usage.
  1572. @ENDNODE
  1573. @NODE EndCLI "EndCLI"
  1574. ENDCLI [-C]
  1575. * Exits you from ZShell back to the AmigaDOS CLI prompt or Workbench.
  1576. * If the @{" option " Link option} "-c" was specified, it will clear ZShell as a
  1577.   @{" resident " Link resident}: only in low memory situations needed.
  1578. * Instead of using ENDCLI you can simply press the ESC key or click
  1579.   on the close gadget, if available.
  1580. eg.   endcli
  1581.       endcli -c
  1582. @ENDNODE
  1583. @NODE EndIf "EndIf"
  1584. ENDIF
  1585. * ENDIF marks the end of an IF statement. See @{" IF " Link IF} for usage.
  1586. @ENDNODE
  1587. @NODE Eval "Eval"
  1588. EVAL expression
  1589.  OVERVIEW
  1590.  ========
  1591.   Operators:
  1592.   + Add
  1593.   - Subtract
  1594.   * Multiply
  1595.   / Divide
  1596.   & Logical and
  1597.   ! Logical or
  1598.   = Poke into memory
  1599.   ? Peek out of memory
  1600.   Prefixes:
  1601.   + Positive number
  1602.   - Negative number
  1603.   % Binary number
  1604.   $ Hexadecimal number
  1605.   & Hexadecimal APTR converted to BPTR
  1606.   ! Hexadecimal BPTR converted to APTR
  1607.   ^ Filename containing number
  1608. * EVAL evaluates the "expression" as a reverse polish expression,
  1609.   and displays the answer in decimal and hex notation. Reverse
  1610.   Polish Notation (RPN) is used in Forth and in Hewlett Packard
  1611.   calculators (I have a HP48GX which has really a great functionality,
  1612.   but unfortunately is a one-way product: If something is defective, you
  1613.   have to throw it away in most cases).  It is based on how arithmetic
  1614.   is actually done at the lowest possible level. RPN allows calculating
  1615.   complex expressions without using brackets.
  1616. eg.     eval 4 5 +
  1617.   This gives the answer 9. When a number is found, it is "pushed"
  1618.   onto the arithmetic stack. The + always adds the last two numbers
  1619.   on the stack.
  1620. eg.     eval 7 2 3 + -
  1621.   This gives the answer 2. It is the same as (7 - (2 + 3)). See,
  1622.   7 is first pushed onto the stack, followed by 2, then 3. The +
  1623.   adds together the 2 and 3 and leaves the result 5 on the stack.
  1624.   Which means that the number 7 followed by 5 are left on the
  1625.   stack. The - subtracts the last entry (5) on the stack from the
  1626.   one before it (7), leaving the result 2.
  1627. eg.     12 * (3 + 9)                    > eval 12 3 9 + *
  1628.         (15 - 4) * (6 + 18)             > eval 15 4 - 6 18 + *
  1629.         (6 * ((87 + 13) / (2 * 25)))    > eval 6 87 13 + 2 25 * / *
  1630. * EVAL only performs 32 bit integer arithmetic.
  1631.   Negative numbers are prefixed with - .(hexadecimal they are
  1632.   shown as a 31 bit integer with bit 32 set, as usual)
  1633.   Prefixing positive numbers with + is optional.
  1634. eg.     eval +5 -3 +    {results in 2  hex:$00000002}
  1635.         eval -5 3 +     {results in -2 hex:$fffffffe}
  1636. * EVAL supports decimal, hexadecimal and binary  numbers.
  1637.   If you prefix the number with $, the number is hex
  1638.   If you prefix the number with %, it is binary.
  1639. Programmers: For BPTR-APTR conversion you can use & to specify
  1640.   a hexadecimal APTR when asked for a BPTR and vice versa with !.
  1641. eg.     eval $c00000 $a0 16 * +
  1642. * EVAL can also be used to perform base conversions (to dec or hex)
  1643. eg.     eval $ca
  1644.         eval %10110001
  1645.         eval 45
  1646.         eval &5a8
  1647. *  The & allows logical AND'ing. And ! allows logical OR'ing.
  1648.   The ? is similar to PEEK in BASIC.
  1649.   Conversely, = is similar to POKE in BASIC
  1650. eg.     eval $80 $21 $08 ! ! $aa &
  1651.         eval $67 %11001011 &
  1652.         eval $c00000 ?
  1653.   This prints out the long word in memory locations $c00000 - $c00003.
  1654.         eval $aa55aa55aa $40000 =
  1655.   This pokes the long word $aa55aa55aa into locations $40000 thru $40003
  1656.   and prints out what was in before.
  1657. * For environment handling you can specify the value of an
  1658.   environment variable with ^ followed by the name.
  1659.   To store the result in a variable, @{" redirect " Link redirect} the output.
  1660. eg.     eval >ENV:aa ^ENV:bb 1 +
  1661.   This adds 1 to the value in ENV:bb and stores the result in ENV:aa
  1662. * If the result was 0 an error (fail-level 10) will be returned.
  1663.   If it was negative, a warn (5) returns. (Not when redirecting output)
  1664. @ENDNODE
  1665. @NODE Execute "Execute"
  1666. EXECUTE [ZSHELL] source
  1667. * "EXECUTE source" executes the AmigaDOS script file of name "source"
  1668.   using an AmigaDOS shell, so no compatibility problems should occur.
  1669.   However in AmigaDOS scripts you cannot use ZShell-internal commands.
  1670.   Make sure you have the commands Execute and EndCLI in your command
  1671.   search path (with OS1.3- you need additionally Run).
  1672. * To execute a ZShell script you have to set the @{" S-protection flag " Link Protect}
  1673.   and then you can execute it treating like a normal @{" command " Link Executing}
  1674.   or you have to use "EXECUTE ZSHELL scriptname".
  1675.   All ZShell commands, as well as commands from disk are valid within a
  1676.   ZShell script file. Commandlines can be spread over several lines
  1677.   in the file by preceding linefeeds with a backslash (\\).
  1678. * You can break scripts by pressing CTRL-D.
  1679. eg.   execute install_hard_disk
  1680.       execute zshell s:zstart
  1681. @ENDNODE
  1682. @NODE FailAt "FailAt"
  1683. FAILAT [failat_level]
  1684. * FAILAT sets the error code level at which scripts (and multiple
  1685.   commands on one line) will be aborted. The default level is 10.
  1686.   Most commands return 10 as an error, (20 for serious errors)
  1687.   while compilers returning Warning type errors will return 5.
  1688.   Hence, the default of 10 will allow Warnings to occur without
  1689.   the script (or line) being aborted. If a command returned an error
  1690.   code higher than the failat level, it will be printed out on the
  1691.   window.
  1692. eg.     failat 20       {sets failat level to 20}
  1693. * If you do not specify a failat level, the current setting is
  1694.   shown.
  1695. eg.     failat
  1696. @ENDNODE
  1697. @NODE Fault "Fault"
  1698. FAULT [error_number]
  1699. * FAULT displays a textual error message of the given DOS-error-number
  1700. eg.     fault 103
  1701.   (says something like "no free store", go and buy some extra memory :-)
  1702. @ENDNODE
  1703. @NODE Help1 "Help"
  1704. HELP [topic]
  1705. * HELP shows the lines of this manual corresponding to the topic.
  1706.   To see all topics available, type "HELP CONTENTS" . Make sure that
  1707.   the manual "ZShell.doc" is in the current directory or in S: !
  1708.   For some help about a command you can also type "commandname ?" .
  1709.   Type only "?" to read the manual with @{" MORE " Link MORE}.
  1710. Note: Instead of typing the topic you can type just some starting
  1711.       characters.
  1712. Note: The manual is only loaded once and will stay in memory till
  1713.       you use @{" AVAIL -C " Link Avail} or @{" ENDCLI -C " Link EndCLI}
  1714. eg.    help contents       {"help cont" will do the same}
  1715.        help copy
  1716.        makedir ?
  1717.        ?
  1718. * HELP without a topic lists the names of all available ZShell
  1719.   commands to the screen. This does not need the manual.
  1720.   HELP can also be invoked by hitting the HELP key.
  1721. eg.   help
  1722. @ENDNODE
  1723. @NODE If "If"
  1724. IF [NOT][WARN][ERROR][FAIL][EXISTS file]
  1725. * The IF command allows conditional execution of statements
  1726.   following it.
  1727. * If the condition specified is true, then execution continues
  1728.   after the IF statement until either an @{" ENDIF " Link ENDIF} or @{" ELSE " Link ELSE} statement
  1729.   is encountered. If it is an ELSE statement, then all statements
  1730.   between the ELSE and the closing ENDIF are skipped.
  1731. * If the condition is false, then all statements after the IF and
  1732.   before either an @{" ENDIF " Link ENDIF} or @{" ELSE " Link ELSE} statement are skipped. If an ELSE
  1733.   is encountered, then execution continues for all statements after
  1734.   the ELSE and before the closing ENDIF.
  1735. * IF can examine the state of the return code from the last command
  1736.   execute with WARN, ERROR, and FAIL tests. You can test for the
  1737.   non existence of such a state by including the optional NOT
  1738.   parameter.
  1739. eg.     IF WARN
  1740.            echo "last command returned warnings"
  1741.         ELSE
  1742.            echo "last command did not return warnings"
  1743.         ENDIF
  1744.         IF NOT FAIL
  1745.            echo "last command did not fail"
  1746.         ENDIF
  1747. * IF can also test for the existence of a file or directory.
  1748. eg.     IF EXISTS :system/format
  1749.            echo "this disk has a format command"
  1750.            echo "you can look yourself. I'm not joking"
  1751.         ENDIF
  1752.         IF NOT EXISTS ram:ed
  1753.            copy c:ed ram:
  1754.         ENDIF
  1755. @ENDNODE
  1756. @NODE Lab "Lab"
  1757. LAB label
  1758. * LAB specifies a destination (label) for the @{" SKIP " Link SKIP} command.
  1759. @ENDNODE
  1760. @NODE MemClk "MemClk"
  1761. MEMCLK ON|OFF|ALARM
  1762. * MEMCLK is for using a clock shown in the border of the actual
  1763.   window. The current total free and chip free memory are also
  1764.   shown. It can do a DisplayBeep (short flash on all screens) at a
  1765.   specified time. The DisplayBeep can be converted into a sound
  1766.   by using a PD-utility for that or using Workbench 2.1+ .
  1767. * Programmers: There will be only one "MemClock"-Task, even if you
  1768.   run MEMCLK on many windows  -> memory and CPU saving.
  1769. * MEMCLK ON switches the clock on or does nothing if it already
  1770.   exist.
  1771. * MEMCLK OFF switches the clock off or does nothing if it does not
  1772.   exist.
  1773. * MEMCLK ALARM shows the alarm time. If you type a time (see @{" DATE " Link DATE})
  1774.   after ALARM, you set the alarm time. (You cannot set an alarm date
  1775.   or multiple times.) ( MEMCLK A is the same as MEMCLK ALARM )
  1776. eg.     memclk on
  1777.         memclk off
  1778.         memclk alarm
  1779.         memclk a 21:34:07
  1780. @ENDNODE
  1781. @NODE Menu "Menu"
  1782. MENU [-C] TITLE|ITEM|SUBITEM|BAR|SUBBAR|END name [action [shortcut]] ...
  1783. * The MENU command allows to add gadtools menus to the console window
  1784.   ZShell runs in. To use it with OS1.3 you have to get dev/misc/gt34_1.lha
  1785.   from Aminet before and install it.
  1786.   Because the standard console does not set the NEWLOOKMENUS flag, menus
  1787.   will have nasty colors under OS3.0+. Get util/cdity/MagicMenu_1_29.lha
  1788.   from Aminet and use ForceNewLook (included there, less than 1KB big)
  1789.   to fix this.
  1790. * "MENU -C" removes the current menu strip from the window and clears it
  1791.   in memory.
  1792. * "MENU END" attaches the current menu strip to the window.
  1793.   You can use it to refresh the menu, too.
  1794.   After using this you can add some more things and use MENU END again.
  1795. * See the examples in the included ZStart.OSx files for more. ;-)
  1796. * If no action is specified, the name will be the action.
  1797.   Actions can be defined the same way as function key definitions.
  1798.   See @{" ALIAS " link Alias} and @{" ECHO " link Echo} for more.
  1799. * Below OS3.0, only a single lowercase character can be used as a
  1800.   shortcut. This shortcut will be activated, if you press Right-Amiga
  1801.   and the given key.
  1802.   Under OS3.0+ you can use several characters, but then shortcuts will
  1803.   not work automatically.
  1804. @ENDNODE
  1805. @NODE NewCLI "NewCLI"
  1806. NEWCLI [-Wnew_window] [-Sstart_script] [-Ccommand] [-N] [-Hhelpfile] [-E]
  1807. * NEWCLI without arguments starts a new ZShell process.
  1808.   Things like paths, aliases and history buffer (!) will be copied to
  1809.   the new ZShell. The input/output window is created with the default
  1810.   specification. The startup script will be S:ZStart.
  1811. * "NEWCLI -Wnew_window" is used for opening a window with different
  1812.   specifications than the default. If you specify just "-W",
  1813.   there will be no window and output will be send to NIL: ; if there
  1814.   is input necessary, the ZShell process will just end (for
  1815.   example at a end of a script).
  1816. * "NEWCLI -Sstart_script" is used if the name of the startup script
  1817.   should be different from S:ZStart. If you specify just "-S", no
  1818.   script will executed.
  1819. * "NEWCLI -Ccommand" @{" executes " Link Executing} the command when starting. No script
  1820.   will be executed.
  1821. * See @{" Start from CLI " link CLIStart} for more information about the options.
  1822. eg.     newcli
  1823.         newcli -wcon:30/30/400/50/Shell
  1824.         newcli -wcon:50/20/500/100/Hello -ss:shell-startup
  1825.         newcli -sram:doassigns -w
  1826.         newcli "-wcon:30/30/400/50/Great Shell" "-cecho Welcome !"
  1827. @ENDNODE
  1828. @NODE Path "Path"
  1829. PATH [-C] [path1] [path2] [path3] ...
  1830. * PATH defines the command search path used by ZShell when searching
  1831.   for disk based commands (see @{" EXECUTING COMMANDS " Link EXECUTING}) .
  1832.   If you give the "-c" @{" option " Link option}, the old search path will be cleared
  1833.   and the new search path consist only of the given paths.
  1834. eg.     path -c c: ram:c df0: df1:
  1835.   This example will make it so that if you type a command which is
  1836.   not internal in ZShell, the @{" resident " Link resident} list will be searched for it,
  1837.   then the current directory, then the c: directory, then the ram:c
  1838.   directory, then df0:, and finally df1:
  1839. * By omitting the -c @{" option " Link option}, you can add a number of paths onto the
  1840.   existing command search path.
  1841. eg.     path df2:c
  1842.         path df1:bin df1:myprogs
  1843. * If, however, you type path with no parameters, the current search
  1844.   path will be displayed.
  1845. * When starting ZShell the paths of Workbench (if available) will be
  1846.   copied.
  1847. Note: It is a crazy thing that AmigaDOS shell always has C: as last path.
  1848.   In my startup-sequence you can find something like:
  1849.   "path ram: c: sys:utilities sys:system s: sys:prefs"
  1850.   In AmigaDOS shell the C: directory will then be searched twice if a
  1851.   command could not be found. Only having C: as last path slows down
  1852.   access, because most commands are in C:.
  1853.   That is why you have to specify C: explicite in ZShell where you want it.
  1854. @ENDNODE
  1855. @NODE Prompt "Prompt"
  1856. PROMPT [string]
  1857. * If no parameter is typed, the current prompt setting will be shown.
  1858. eg.     prompt
  1859. * If a prompt string is specified, the current prompt setting
  1860.   will be changed to that string. The character "%" specifies a
  1861.   special prompt option:
  1862.     %p      Insert whole path of current directory.
  1863.     %s      Insert last part of the path of current directory.
  1864.     %n      Insert CLI number
  1865.     %l      Insert current input line number (for fun!)
  1866.     %c      Insert last command (for even more fun ! :-)
  1867. * You can use control sequences like in the @{" ECHO " link Echo} command.
  1868. eg.     prompt "^[[33m%p> " {default prompt. Show current directory + ">"}
  1869.         prompt "%n.%s> "    {show CLI number, then current dir, then ">"}
  1870.         prompt Hello!       {shows "Hello!" at the start of every line}
  1871.         prompt %p^J^*32m>   {Just try it!}
  1872. @ENDNODE
  1873. @NODE Quit "Quit"
  1874. QUIT [error_code]
  1875. * QUIT forces a script file to end, and return to the shell.
  1876.   An optional error code can be passed back (ie. 5=WARN 10=ERROR
  1877.   15=BAD 20=FAIL etc).
  1878. eg.     quit 5
  1879.         quit
  1880. @ENDNODE
  1881. @NODE Review "Review"
  1882. REVIEW [bytesize|-C|-Sfilename]
  1883. With the reviewbuffer you can see that again what scrolled out of the
  1884. window or was @{" redirected " Link redirect}. In the reviewbuffer are all outputs stored.
  1885. To see what is in the reviewbuffer just press SHIFT TAB. This activates
  1886. the @{" MORE " Link MORE} text reader.
  1887. * "REVIEW bytesize" (re)creates a reviewbuffer with the given size.
  1888. * "REVIEW 0" removes the reviewbuffer.
  1889. * "REVIEW" without arguments shows the adress and size of the current
  1890.   reviewbuffer.
  1891. * "REVIEW -C" clears the reviewbuffer.
  1892. * "REVIEW -S filename" saves the reviewbuffer to that file.
  1893. eg.     review 10000        {starts normal reviewbuffer}
  1894.         review 50000        {starts big reviewbuffer}
  1895.         review 0            {deletes reviewbuffer}
  1896. NOTE: Because it uses a circular buffer with fixed size, this is much
  1897.   faster than having a fixed number of lines. The decrease in scrolling
  1898.   speed is neglible, especially it does not depend of the buffer's size.
  1899. @ENDNODE
  1900. @NODE Run "Run"
  1901. RUN commandline
  1902. * RUN @{" executes " Link Executing} a commandline in a background task. If you want to
  1903.   execute several commands, you can separate them with \\; .
  1904. * By default output goes to the current window. To surpress output or to
  1905.   get it into a file or onto a different window you can use @{" redirection " link Redirect}
  1906.   symbols like ">" (no output), ">filename" or ">w" (to a new window).
  1907.   In case of output redirection the launched background task will be
  1908.   totally independent from the task it is launched from.
  1909. * Input will be redirected to the same window output goes to. If you
  1910.   redirect output to a file, no input is possible (redirected to NIL:).
  1911.   Input redirection symbols does not make sense with the RUN command.  
  1912. * Because most things will be inherited to the @(" new shell " link NEWCLI), you can use
  1913.   @{" Aliases " link Alias}.
  1914. eg.     run copy fred.doc prt:
  1915.         run >prt: type barney.doc
  1916.         run >w dir df0:\\;ask
  1917. @ENDNODE
  1918. @NODE SetClock "SetClock"
  1919. SETCLOCK LOAD|SAVE
  1920. * SETCLOCK only works if you have a battery backed up clock (BBUC).
  1921.   It accesses the adresses $DC0000 and I do not know if it works
  1922.   with very old or very new (A1200) clocks.
  1923. * SETCLOCK LOAD sets the systemtime (you can see the systemtime with
  1924.   @{" DATE " Link DATE} or @{" MEMCLK " Link MEMCLK}) to the time in the BBUC (hopefully this is the
  1925.   right time).
  1926. * SETCLOCK SAVE first resets the BBUC, then stores the systemtime
  1927.   to the BBUC.
  1928.   To set the BBUC to the right time, use @{" DATE " Link DATE} to set the correct
  1929.   date and time, then use SETCLOCK SAVE.
  1930. eg.     setclock load
  1931.         setclock save
  1932. @ENDNODE
  1933. @NODE Skip "Skip"
  1934. SKIP label
  1935. * SKIP searches for the label within the current script file. If it
  1936.   finds it, execution continues from that point onwards. Labels
  1937.   are specified using the @{" LAB " Link LAB} command.
  1938. eg.     lab myloop
  1939.         dir ram:
  1940.         ask "list ram again? "
  1941.         if warn
  1942.            skip myloop
  1943.         endif
  1944. @ENDNODE
  1945. @NODE Stack "Stack"
  1946. STACK [size]
  1947. * Allows you to view or alter the current stack size.
  1948. eg.     stack            {shows the current stack size}
  1949.         stack 30000      {sets current stack = 30000 bytes}
  1950. @ENDNODE
  1951. @NODE UnAlias "UnAlias"
  1952. UNALIAS [alias1] [alias2] [alias3] [alias4] ...
  1953. * UNALIAS removes one or more @{" alias " Link alias} definitions from the alias list.
  1954. * UNALIAS without arguments removes all aliases.
  1955. eg.     alias f1 "cd df0:;dir^M"
  1956.         alias f2 "cd df1:;dir^M"
  1957.         ...
  1958.         alias f10 "ed df1:s/startup-sequence^M"
  1959.         unalias f1 f2 f3 f4 f5 f6 f7 f8 f9
  1960.         ...
  1961.         unalias f10
  1962. @ENDNODE
  1963. @NODE Wait "Wait"
  1964. WAIT timeout
  1965. * WAIT halts processing for the time given. Timeout is in seconds.
  1966.   You can abort this with CTRL-C.
  1967. eg.     echo "I'll wait a minute"
  1968.         wait 60
  1969. @ENDNODE
  1970. @NODE Comments "Comments"
  1971. ; blah blah blah blah
  1972. * etc etc etc
  1973. # hello ma
  1974. * Placing a semi-colon, an asterisk or a hash character as the 1st
  1975.   character in the line of a script file allows you to place comments
  1976.   in it.
  1977. eg.   ; This is a comment line
  1978. * If you want to place a comment at the end of a line, you have to
  1979.   put ;# before it.
  1980. eg.   info;#to see something interesting
  1981. @ENDNODE
  1982. @NODE BUILTIN3 "Builtin Commands for Advanced Users"
  1983. These commands are thought for users with a deeper knowledge of the
  1984. system. Maybe they are also useful for those not knowing of the system
  1985. internals. Just try the examples to find that out.
  1986. @{" Break " Link Break} task_description [signalmask|C|D|E|F]
  1987. @{" Config " Link Ctrl} CTRLKEYS|MOREKEYS|DOT|HIDE|COLOUR|COPYSIZE|FNCSIZE|LOGFILE
  1988. @{" DiskChange " Link DiskChange} device
  1989. @{" Flags " Link Flags} [CHECK|MATCH|ICON|WILD|ERRORS|DEBUG|CUT|ALL|HIDE|PIPE|RAW|CONFIRM|HBIT] [ON|OFF]
  1990. @{" GetMsg " Link GetMsg} [portname]
  1991. @{" Kill " Link Kill} device|taskdescription
  1992. @{" Locate " Link Locate} [-C] [bptr|name] [READ|WRITE]
  1993. @{" M " Link M} [start_address] [end_address]
  1994. @{" PutMsg " Link PutMsg} port_description [number1|string1] [number2|string2] ...
  1995. @{" Show " Link Show} D|I|L|M|P|R|S|T|V
  1996. @{" Strings " Link Strings} sourcefile [count]
  1997. @{" TaskPri " Link TaskPri} priority [task_description]
  1998. @ENDNODE
  1999. @NODE Break "Break"
  2000. BREAK task_description [signalmask|C|D|E|F]
  2001. * BREAK sets some signals at a given task
  2002. * task_description can be one of:
  2003.   - task/process name (case dependent !)
  2004.   - task/process adress
  2005.   - CLI-process number (one from 1 to 20)
  2006.   - zero (0) for this task
  2007.   It will be checked if the node-type field contains TASK or PROCESS
  2008. * signalmask is a longword; all bits, which should be signalled,
  2009.   must be 1 . Alternatively you can specify c,d,e or f to set
  2010.   the according signal to CTRL-C,-D,-E or -F. (CTRL-C is bit 12)
  2011. * BREAK without signalmask (and c,d,e,f) given sets all signals the
  2012.   task is waiting for.
  2013. eg.     break RexxMaster    {and it will be gone...}
  2014.         break Exchange c    {Exchange will get itself off too}
  2015. eg. If 2 ZShells are running. The one with the CLI-number 1 (get that
  2016.     out with prompt %n) lists a very large directory. You can break
  2017.     that by using the other ZShell typing:
  2018.         break 1 c
  2019.     Thats the same like you pressed CTRL-C on the ZShell number 1.
  2020. @ENDNODE
  2021. @NODE Ctrl "Config"
  2022. CONFIG CTRLKEYS|MOREKEYS|DOT|HIDE|COLOR|COPYSIZE|FNCSIZE|LOGFILE
  2023. This command is for changing the default settings.
  2024. * CONFIG CTRLKEYS is for command-line-editing-keys-definitions
  2025.   (great word :).  In other words: You can change the meaning of keys
  2026.   pressed with CTRL (Control) key and some other keys (TAB ^I,
  2027.   Backspace ^H, Return ^M, Shift-Return ^J, ESC ^[).
  2028.   "CONFIG CTRLKEYS" shows the current settings,
  2029.   "CONFIG CTRLKEYS WQSEIX[TYHJMLRVFP" sets the default settings.
  2030.   To change something, just change the character corresponding to
  2031.   the key pressed with CTRL. See some lines above for some CTRL-
  2032.   equivalents.
  2033.   eg. TAB is same as CTRL-I . So to use CTRL-K instead of TAB, you use:
  2034.         config ctrlkeys WQSEKX[TYHJMLRVFP
  2035.   Warning: You may get confused if you define one key twice.
  2036.   If you want to get really confused, try:
  2037.         config ctrlkeys WQSEKX[TIYMJHRVFP
  2038. * "CONFIG MOREKEYS" shows the keys that can be pressed inside @{" MORE " link More}.
  2039.   The uppercase keys represent the cursor keys, default is: ABCDSTqsnjwrh
  2040.   It works similar to CONFIG CTRLKEYS. To use RETURN key to exit MORE use:
  2041.         config morekeys ABCDST^Msnjwrh     (see also @{" ECHO " link Echo})
  2042. * "CONFIG DOT character" replaces the dot character (.) where it has a
  2043.   special meaning (@{" ECHO " Link ECHO},@{" SEARCH " Link SEARCH},@{" PUTMSG " Link PUTMSG}, dir back, force disk, abbreviation)
  2044.   eg.   config dot *
  2045. * "CONFIG HIDE pattern" sets the files that are hidden by @{" DIR " link dir}
  2046.   and @{" filename completion " link filenamecompletion}. The pattern must contain at least
  2047.   one @{" wild card " link wild_card}.
  2048.   "CONFIG HIDE" shows the current settings (by default none).
  2049.   eg.   config hide         {display current hiding pattern}
  2050.         config hide ""      {unset the hiding pattern}
  2051.         config hide *.info  {ignore *.info-files}
  2052.         config hide *.info|*.bak {hide files ending in .info and .bak}
  2053.         config hide ~*.tex|*.dvi {show only *.tex and *.dvi-files}
  2054. * "CONFIG COLOR colors" defines the use of colours. "colors" has to be
  2055.   a 16 digit number. The first two digits are the color number for pen 0
  2056.   (background - not used). The second two digits are the color number for
  2057.   pen 1 (foreground). The third two digits are the color number for pen 2
  2058.   (first highlight color). Color numbers can be from 30 to 37 for colors
  2059.   and from 00 to 07 for other ways of highlighting.
  2060.   This is global. Do not forget to make a CLS afterwards.
  2061.   One color modes are very useful with OS3.0+ to speed up scrolling.
  2062.   Default:     config color 3031323334353637;prompt "^[[33m%p> "
  2063.   Four colors: config color 3031323331323332;prompt "^[[33m%p> "
  2064.   One color:   config color 3031030104040703;prompt "^[[1m%p> "
  2065.   Boring:      config color 3031313131313131;prompt "%p> "
  2066. * "CONFIG COPYSIZE bytesize" sets the size of the memory block used for
  2067.   COPY, MOVE and SPLIT to "bytesize" bytes. The default setting 50000
  2068.   semms to be a good value for both harddisk and floppydisk. If you
  2069.   only use floppydisk try:
  2070.         config copysize 20000
  2071.   and to display the current setting use:
  2072.         config copysize
  2073. * "CONFIG FNCSIZE bytesize" sets the size of the memory block used to
  2074.   store the last used directory at @{" filename completing " link filenamecompletion} (=FNC).
  2075.   If this memory block (=FNC buffer) is too small, FNC has to read the
  2076.   directory again every time you press TAB and TAB cycling does not work.
  2077.   To save memory you can try:
  2078.         config fncsize 2000      for 2000 bytes FNC buffer or
  2079.         config fncsize 0         for no FNC buffer at all
  2080.   and to display the current setting use:
  2081.         config fncsize
  2082. * "CONFIG LOGFILE filename" opens a global logfile which is used by all
  2083.   ZShells running. You will be asked for your name.
  2084.   Every command line will go there including date, time and CLI process
  2085.   number. The logfile will be closed if all ZShells end.
  2086.   "CONFIG LOGFILE" closes the logfile manually.
  2087. @ENDNODE
  2088. @NODE DiskChange "DiskChange"
  2089. DISKCHANGE device
  2090. * Needed for devices which do not detect a diskchange.
  2091. eg.     mount rad:;diskchange rad:
  2092.   Makes your rad:-disk appear on the Workbench.
  2093.         diskchange ram:
  2094.   If the ram-disk does not exist yet, the handler will be started
  2095.   (and the ram-disk can appear on Workbench when done before LOADWB)
  2096. @ENDNODE
  2097. @NODE Flags "Flags"
  2098. FLAGS [CHECK|MATCH|ICON|WILD|ERRORS|DEBUG|CUT|ALL|HIDE|PIPE|RAW|CONFIRM|HBIT] [ON|OFF] ...
  2099. * With this you can configure some things. Use FLAGS without arguments
  2100.   to see the current settings. The meaning of the keywords are:
  2101. ICON: (default off, OS2.0+) This enables iconifying when pressing ESCAPE
  2102.   or clicking the Close-Gadget. To exit from ZShell use @{" ENDCLI " link Endcli}.
  2103.   You need Workbench running and ZShell must have opened its own window
  2104.   (start from Workbench, start with newcli or used -W when started from
  2105.   CLI).  When iconifying, a icon is created on the Workbench and the
  2106.   window is closed. Double-clicking on this icon or dragging a file into
  2107.   it pops ZShell up again. Use the ToolTypes "ICONNAME", "XPOS" and
  2108.   "YPOS" to determine the name and position of the icon.
  2109.   ToolType "ICONIFY" lets ZShell start in iconifyed mode.
  2110. DEBUG: (default off) This is for testing/debugging script-files. Switching
  2111.   DEBUG to ON, the commands from the script appear on the window as they
  2112.   are processed (you need to execute the script for that, ofcourse),
  2113.   and redirection will be ignored (so you will see even output to >NIL: ).
  2114. MATCH: (default on) By default @{" Filenamecompletion " link Filenamecompletion} shows all files that matches
  2115.   the given pattern. You can switch this off by using "FLAGS MATCH OFF".
  2116. CHECK: (default off) Activates or deactivates the programmers status line.
  2117.   It is intended to debug external commands.
  2118.   The status line (if activated) will only appear once a disk based
  2119.   or resident program has been executed. The line appears as follows:
  2120.   Result2: 0  time = 00:00:23.66  changes-> chip: 0  fast: 0  total: 0
  2121.   Result2 shows the error code that can be asked for with IoErr.
  2122.   Time shows how long the program took to execute in hours,
  2123.   minutes, seconds, hundredths (This time does NOT include the time
  2124.   it takes to load the program from disk). Changes show if the program
  2125.   has left any memory still allocated. i.e. if 200 bytes of chip
  2126.   memory were left allocated by the program, then you see "chip: -200".
  2127.   The Return code (the program returns in D0) is shown as Fail-Level.
  2128.   It also does some low memory checks on 68000 CPU systems. Be warned if
  2129.   a "Changed ..." appears. Like Mungwall it sets address 0 to $C0DEDBAD.
  2130. Rarely used flags:
  2131. PIPE: (default on) If ON, real pipes will be used, pseudo pipes otherwise.
  2132.   See @{" Anonymous Pipes " link Pipes} for more.
  2133. CONFIRM: (default on) Currently only used in @{" DELETE " link Delete}.
  2134.   If ON confirming is enabled, otherwise disabled.
  2135. HBIT: (default on) If ON @{" DIR " link Dir} ignores files with the H
  2136.   protection bit set. Should be switched off if you use Multiuser-
  2137.   filesystem (muFS).
  2138. RAW: (default on) If ON the internal commandline editor will be used,
  2139.   if OFF the commandline editor of the console handler will be used.
  2140. HIDE: (default on) When on the cursor will be hidden for outputting. This 
  2141.   improves scrolling speed. Switching off is only thought for debugging.
  2142. CUT: (default on) For @{" MORE " link More}. If ON, lines longer than the window will be
  2143.   cutted at the end. If OFF, too long lines will wrapped to next line.
  2144. WILD: (default on, OS2.0+) By enabling this, you force ZShell to use
  2145.   AmigaDOS @{" wildcard-patternmatching " link wild_card} instead of the internal matcher.
  2146.   Switch this off if you like the internal matcher better.
  2147. ERRORS: (default off) Most external commands show their errormessages
  2148.   themselves, so you often see double error messages. Using ERRORS you can
  2149.   switch off this behaviour, but you risk to miss some errormessages !
  2150.   If you see a large errornumber, this command assumed that there will be
  2151.   no error-output and does not set the correct errorcode --- this is
  2152.   badly programmed !
  2153. ALL: (default on) Enables the substitute ALL for the @{" option -R " link option}.
  2154.   Note that -R must be the first argument (or second after -Q) and ALL
  2155.   must be the last argument.
  2156.   (Only in this release you can place ALL anywhere you like)
  2157. eg.     flags icon on all off
  2158.         flags errors off all off check on
  2159.         flags e. off a. off ch. on          {same as above}
  2160. @ENDNODE
  2161. @NODE GetMsg "GetMsg"
  2162. GETMSG [portname]
  2163. * GETMSG waits for a message arriving at the process-internal
  2164.   messageport (pr_MsgPort). The message will be shown, strings
  2165.   will be tried to detected (this could cause lots of enforcer hits).
  2166.   Then you will be asked if to reply the message. "y" replies it
  2167.   and should be used normally. "e" replies and gets back to waiting
  2168.   mode again. Abort waiting is possible with CTRL-C.
  2169. * "GETMSG portname" gives the process-internal port the given name.
  2170.   Then it behaves as described above.
  2171. * See @{" PUTMSG " Link PUTMSG} for examples.
  2172. @ENDNODE
  2173. @NODE Kill "Kill"
  2174. KILL device|taskdescription
  2175. * KILL lets the handler of a device (name ending in ":") end itself.
  2176.   It seems not to work with most handlers. Works with CrossDOS
  2177. * It can remove tasks too, but this will likely crash, because it is
  2178.   NOT SYSTEMCONFORM ! See @{" BREAK " Link Break} for taskdescription.
  2179. eg.     kill PC0:
  2180.         kill Exchange
  2181. @ENDNODE
  2182. @NODE Locate "Locate"
  2183. LOCATE  [-C] [bptr|name] [READ|WRITE]
  2184. * "LOCATE lockadress" (lockadress is a BPTR) shows information about
  2185.   that lock structure. fl_Access must be -1 (write) or -2 (read).
  2186. * "LOCATE filename_or_dirname READ" gets an ACCESS_READ lock structure on
  2187.   that file/dir.
  2188. * "LOCATE filename_or_dirname WRITE" gets an ACCESS_WRITE lock structure
  2189.   (exclusive lock) on that file/dir. This cannot be shown correctly,
  2190.   otherwise it would not be exclusive.
  2191. * "LOCATE -C lockadress" unlocks (removes) the lock structure (BPTR !).
  2192. * "LOCATE" shows all locks that are in system. Since OS2.0 this cannot
  2193.   show correctly all locks on RAM: because it is some kind of hack.
  2194. eg.     locate &21f45c        {shows lock on adress $21f45c}
  2195.         locate $9f5b7         {shows lock with BPTR $9f5b7}
  2196.         locate -c $9f5b7      {removes this lock}
  2197.         locate ram:rdit read  {tries to read-lock ram:rdit}
  2198.         locate c:mount write  {tries to write-lock c:mount}
  2199.         locate                (shows all locks in system}
  2200. @ENDNODE
  2201. @NODE M "M"
  2202. M [start_address] [end_address]
  2203. * M is a memory contents dumping command.
  2204. * Typing M with a start and end address will display the hex and
  2205.   ASCII contents of those bytes in the memory locations specified.
  2206. * Typing M with only a start address will display 160 bytes
  2207.   starting at the location specified.
  2208. * Typing M with no parameters will display 160 bytes starting
  2209.   from the current memory location.
  2210. * The current memory location is always one location higher than
  2211.   the last location shown by a prior M command.
  2212. eg.   m $70000 $77fff
  2213.       m $fc0000
  2214.       m
  2215. @ENDNODE
  2216. @NODE PutMsg "PutMsg"
  2217. PUTMSG port_description [number1|string1] [number2|string2] ...
  2218. * PUTMSG is useful for testing programms which wait for a message,
  2219.   or to reactivate a task that waits for a message which will never
  2220.   arrive. PUTMSG sends a message to the given messageport.
  2221. * port_description can be given in 5 (!) ways:
  2222.   - Name of the messageport
  2223.   - Adress of the messageport
  2224.   - 3 ways of a task_description, see @{" BREAK " Link BREAK}. This MUST be a Process
  2225.     because the process-internal messageport will be used.
  2226. * number|string is a longword number or a string. If it is a number,
  2227.   it will just be added to the message. If it is a string, a
  2228.   adress pointing to this string will be added to the message.
  2229.   If number1|string1 was a point (.), the message will be initialized
  2230.   as an DOS-Packet.
  2231. * After sending the message PUTMSG will wait for the reply and show
  2232.   that reply like @{" GETMSG " Link GETMSG}. Abort waiting with CTRL-C.
  2233. WARNING: Your machine might CRASH if you send a message to a
  2234.   (Process-internal) port that is not waiting for this message.
  2235. NOTE: PUTMSG without arguments makes a DisplayBeep (even without a
  2236.   window) and outputs the internal register value of A5.
  2237. eg.     putmsg testtask $21fd68 12
  2238.         putmsg testport "Hello World!"
  2239.   If you have 2 ZShells, execute in the one with CLI-number 1
  2240.   "getmsg". Activate the other shell and type
  2241.         putmsg 1 "like some chatting ?"
  2242.   The ZShell no. 1 should display that and prompt "reply ?". Answer
  2243.   "y" and the message goes back again.
  2244.   Now try "getmsg wurgutz" at one ZShell and "putmsg wurgutz $abcd"
  2245.   on the other. Do not forget to reply.
  2246. * You can use PUTMSG to use the AREXX interface of a programm. This
  2247.   works with some programms even with OS1.3- and no AREXX-Package.
  2248. eg.     putmsg showdvi 0 0 0 0 0 "tofront" {gets ShowDVI to front}
  2249.   Instead of the first 0 you sometimes must write the adress of
  2250.   this task. If available replace the second 0 with a pointer to
  2251.   the rexxsyslib.library. The third 0 is called rm_Action. I do not
  2252.   know what it is for. The fourth and fifth are results, only
  2253.   interesting in the reply.
  2254. eg.     putmsg showdvi 0 0 0 0 0 "loadnew tex.dvi"
  2255. * Specify a point as first number if you want to send a DOS-Packet.
  2256. eg.     putmsg DF0 . 0 1023 0 0 -1     {same as LOCK DF0: ON}
  2257.   If you get $FFFFFFFF as 4th longword, it was successful.
  2258.  (with OS1.3- you need to use FileSystem instead of DF0)
  2259. @ENDNODE
  2260. @NODE Show "Show"
  2261. SHOW D|I|L|M|P|R|S|T|V
  2262. * Shows some information about important exec-lists:
  2263.   - Devices
  2264.   - Interrupts
  2265.   - Libraries
  2266.   - Memory
  2267.   - Ports (MessagePorts)
  2268.   - Resources
  2269.   - Semaphores
  2270.   - Tasks (and Processes)
  2271.   - Vectors for reset-resident programs
  2272.   Use the first character of one of them as argument.
  2273. * The output means:
  2274.   - Adress: hexadecimal start adress of the structure
  2275.   - Pri   : Priority, often unused
  2276.   - Ver   : Number of version  (only with D,L,R)
  2277.   - Rev   : Number of revision (only with D,L,R)
  2278.   - Name  : Name
  2279.   - State : Task state (only with T)
  2280.   - SignWait : Signals, a waiting task waits for (only with T)
  2281.   - PT    : Pr means Process, Ta means Task, Tm means Task with
  2282.             Messageport like Process     (only with T)
  2283. * If displaying the tasklist, the CLI-number (-> CLI ?:) and the
  2284.   loaded command will be shown at processes with cli-structure.
  2285.   ">" stands for output-redirected, "<" for input-redirected.
  2286.   "Bg-CLI" means background CLI.
  2287. * SHOW V displays some important execbase pointers, which give a
  2288.   good indication of whether a virus is present in your system.
  2289.   WarmCapture, CoolCapture, ColdCapture, KickTagPtr, KickMemPtr,
  2290.   and KickCheckSum are displayed. If any of these are are NOT
  2291.   zero, then either a virus, RAD, or virus protector or some
  2292.   other program that takes control of your machine when you
  2293.   reset, is present.
  2294. eg.     show d          {have a look at the device-list}
  2295.         show Devices    {same as above}
  2296.         show t          {This is REAL MULTITASKING ! :) }
  2297. @ENDNODE
  2298. @NODE Strings "Strings"
  2299. STRINGS sourcefile [count]
  2300. * STRINGS displays all valid ASCII strings in a file which have a
  2301.   length greater than or equal to the count. If no count is given,
  2302.   a default of 10 characters is used.
  2303. * This command is very useful for finding out which libraries a
  2304.   program uses.
  2305. eg.     strings c:zshell 20
  2306.         strings c:mount
  2307. @ENDNODE
  2308. @NODE TaskPri "TaskPri"
  2309. TASKPRI priority [task_description]
  2310. * TASKPRI sets the priority of a task, it can be displayed using
  2311.   "SHOW T". The priority must be between -127 and 128 and should
  2312.   be within -50 and 20 to avoid system-hangups. Standard is 0 .
  2313. * task_description is same as described at @{" BREAK " Link BREAK}.
  2314. * With one argument TASKPRI sets the priority of this task.
  2315. * If task_description is given, TASKPRI sets the priority of the
  2316.   given task.
  2317. NOTE: I did not like to call this command CHANGETASKPRI, because
  2318.       this name is really too long.
  2319. eg.     taskpri 2       {This task will be preferred}
  2320.         taskpri -1 3    {affects CLI no. 3}
  2321.         taskpri 4 Workbench
  2322. @ENDNODE
  2323. @NODE Changes "Changes"
  2324. UP TO V1.3:See the source code of the ZShell V1.3 release
  2325.            (for example on FISH disk 537).
  2326.            @{" Author: Paul Hayter " Link Authors}
  2327.            Source: 103 KByte, Executable: 13 KByte, Doc: 32 KByte.
  2328. V2.0:There were so many changes, I think there is no sense in listing
  2329.      them all here, because it may be longer than this document. So just
  2330.      read this document or the source code.
  2331.      All changes since V1.3 made by @{" Martin Gierich " Link Authors 9}. Released 14.10.94.
  2332.      Source: 180 KByte, Executable: 25 KByte, Doc: 72 KByte.
  2333. V2.1  11.12.94:
  2334.     * IMPORTANT FOR THOSE WHO USED ZSHELL V2.0: Do not start ZShell V2.1 *
  2335.     * if ZShell V2.0 is resident. This will crash your machine !         *
  2336.     * Do not use ZSH V2.0 with ZShell V2.1 and vice versa.               *
  2337.   - Added a @{" review " Link review} buffer to see that again what scrolled out of the
  2338.     window. A scrollbar will probably added in future.
  2339.   - Changed default @{" CTRL " Link CTRL}-keys; added 2 new CTRL-keys (see @{" HISTORY " Link HISTORY}).
  2340.   - Changed usage of @{" MORE " Link MORE} (you can still use the cursor keys).
  2341.   - @{" DIR " Link DIR} now hides all these files that @{" Filenamecompletion " Link Filenamecompletion} ignores.
  2342.   - Some bugs found with mungwall and scratch are fixed.
  2343. V2.2  03.01.95:
  2344.   - Fixed a REALLY NASTY BUG that trashed taskswitching when closing ZShell.
  2345.   - @{" AmigaGuide-Documentation " Link Distribution} added !
  2346.   - @{" RUN-Command " link Run} added !
  2347.   - @{" NEWCLI " link NewCLI} has a new argument template.
  2348.   - @{" CTRL-J = Shift-RETURN " Link History} puts the command line in History
  2349.     buffer without executing.
  2350.   - @{" PROMPT " Link Prompt} now knows the args %s and %c :-) . Default Prompt
  2351.     changed to "%s> ".
  2352.   - Better building of the CLI-Interface when @{" starting " Link Starting} from WB.
  2353.   - Now the @{" Pseudo-Assign " link Assign} PROGDIR: is provided (OS2.0+ only).
  2354.   - @{" LIST -Q -R " Link List} also works; @{" DIR " Link Dir} can also list recursive.
  2355.   - @{" ECHO Hi There ! " Link Echo} will now do the same as ECHO "Hi There !" .
  2356.   - Improved options when @{" starting " link Starting} from CLI.
  2357. V2.3  10.02.95:
  2358.     This time there are some real new features. Because now I have my
  2359.     OS3.1 Autodocs and Includes, I have added several features that can
  2360.     only be used with OS2.0+. There will be done version-checkings before
  2361.     using OS2.0+ specific stuff, so no need to be afraid of crashes.
  2362.   - New Commands: @{" MAKEICON " link MakeIcon}, @{" MAKELINK " link MakeLink}, @{" FLAGS " link Flags} and @{" MOVE " link Move}.
  2363.   - @{" DELETE " link Delete}, @{" COPY " link Copy}, @{" MOVE " link Move}, @{" PROTECT " link Protect} and @{" JOIN " link Join} are fully rewritten !
  2364.     They now all use the directory-lister (for LIST and DIR)
  2365.     and therefore all support wildcards and recursive processing !
  2366.   - @{" PATH " link Path}-Command is now AmigaDOS compatible.
  2367.     Paths from Workbench are duplicated on starting from Workbench.
  2368.   - Support of Hardlinks and Softlinks by @{" MAKELINK " Link MakeLink}, @{" LIST " Link List} and @{" DIR " Link Dir}.
  2369.   - @{" ASSIGN " link Assign} supports ADD, REMOVE, PATH and DEFER.
  2370.   - @{" Redirection " link Redirection} improved: Can also be redirected to @{" MORE " link More}.
  2371.   - Can be iconified to an ApplicationIcon (see @{" FLAGS " link Flags}).
  2372.   - Erroroutput is done by DOS.
  2373.   - @{" DELETE DEVICE " Link Delete} formats a disk quick,
  2374.   - @{" DELETE FORCE " Link Delete} ignores delete-protection-bits.
  2375.   - @{" Filenamecompletion " Link Filenamecompletion} can show all matching files.
  2376.   - @{" MORE " Link More} supports "more keys" and checks windowsize.
  2377.   - @{" ALIAS " link Alias} can work without surrounding quotes; now you
  2378.     have to remove \\ before " ,sorry for any incompatibilities.
  2379.   - CHECK is moved to @{" FLAGS " link Flags}, VEC is moved to @{" SHOW V " link Show}.
  2380.   - RESET removed: It was a hack ! RECOPY removed: Has anybody needed it ?
  2381.   - First line in @{" Command History " link History} is the last changed line.
  2382.   - You can use ^* instead of ^$9b with @{" ECHO " Link Echo} and @{" PROMPT " Link Prompt}.
  2383.   - Really faaaast searching in @{" MORE " Link More}, @{" SEARCH " Link Search} and @{" HELP " Link Help1}.
  2384.   - Bugfix and new options when @{" starting " link Starting} from CLI.
  2385.   - New Tooltypes for @{" starting " link Starting} from Workbench.
  2386.   - @{" HELP " link Help} only searches the current dir and S: for the manual.
  2387.   Now there is not much of the original V1.3 release left, because most
  2388.   of the old parts are totally rewritten and size has more than doubled !
  2389. V2.4  28.02.95:
  2390.     Important bugfixes made !
  2391.   - Application-Window allows dropping Workbench-Icons into ZShell-Window; OS2.0+
  2392.   - @{" Check-Flag " Link Flags} checks writes to low memory
  2393.   - @{" SHOW task " Link Show} shows redirection/background
  2394.   - @{" DIE task " Link Die} removes task
  2395.   - @{" COPY " Link Copy} uses dots as progress indicator
  2396.   - If an error during starting occurs, there will be an @{" errormessage " Link ErrorStart}
  2397.   - Sets Wildstar-Flag in System, so you can use "*" instead of "#?"
  2398.     with all commands; OS2.0+
  2399.   - @{" Hide-Flag " Link Flags} added.
  2400.   - Lots of bugfixes
  2401. V2.5  11.04.95:
  2402.   - Localized most messages using the catalog of AmigaDOS, so no
  2403.     translating required (and I do not have to look for translators :-) ; OS2.1+
  2404.   - Pressing @{" CTRL-F " Link History} a filerequester pops up; OS2.0+
  2405.   - Possible to open own Public Screen on @{" starting " Link Starting}; OS2.0+
  2406.   - @{" EXECUTE " Link Execute} uses AmigaDOS Shell for executing scripts
  2407.     and therefore no longer causes compatibility problems. To execute
  2408.     ZShell-scripts: set S-protection flag and use it like a @{" command " Link Executing}.
  2409.   - Correct inserting of strings when pressing function-keys or dropping
  2410.     an Icon on Window/AppIcon
  2411.   - Removed C: as default @{" path " Link Path}. This was a stupid idea
  2412.     I got from the AmigaDOS Shell. It is better to have C: as first path.
  2413.   - You can use textfiles/Amigaguides with E-flag set like a @{" command " Link Executing}.
  2414.     It will then be displayed using @{" amigaguide.library " Link Guide.lib}. With OS3.0+
  2415.     this even works on everything supported by your datatypes (like pics)
  2416.   - Problems with foreign characters hopefully fixed
  2417.   - NEWCLI and RUN now copy stacksize, appiconname and windowname
  2418.   - Bugfixes: ASSIGN, DIR/LIST, DELETE DEVICE
  2419.   - ToolType ICONIFY fixed. It has NEVER worked !
  2420.   - @{" Starting ZShell " Link Starting} chapter improved
  2421.   Source: 217 KByte, Executable: 31 KByte, Guide: 104 KByte.
  2422. V2.6  02.06.95 (was not on Aminet):
  2423.   - Commands changed:
  2424.     @{" HTYPE " link HType} filename [offset]
  2425.     @{" LOCATE " link Locate} [-C] [bptr|name] [READ|WRITE]
  2426.     @{" CONFIG " link ctrl} CTRLKEYS|MOREKEYS|DOT|HIDE|COLOUR|COPYSIZE|FNCSIZE
  2427.   - New Command: @{" SPLIT " link Split} source dest length [offset]
  2428.   - @{" Filename completion " link filenamecompletion} now reads directory to
  2429.     memory to decrease access time. It is now fine to use on floppy disks,
  2430.     too. By pressing TAB multiple times you can cycle through the matches.
  2431.   - No more problems to delete the last used directory, because "dir back"
  2432.     (a single point as command) uses a string instead of a lock.
  2433.   - Showing files using Amigaguide does not check for the E-protection-
  2434.     flag anymore
  2435.   - Use ESC or Q key to quit @{" MORE " link More}
  2436.   - String comparison in Filename completion and DIR/LIST is now localized
  2437.   - OS2.0+: AmigaOS wildcards are used (they are localized). They are a
  2438.     bit different. To get back the internal ones use: FLAGS WILD OFF
  2439.   - Default prompt is now "%p> " again (something has to be changed :-)
  2440.   - New Tooltype: HELPMAN , new CLI option: -h
  2441.   - @{" Options " link Option} can be overridden by surrounding them with quotes
  2442.   - Bug fixes: DEL key, FLAG CHECK -> locks, scripts ending in LF
  2443. V2.7 14.08.95:
  2444.   - Support of @{" anonymous pipes " link Pipes}. You can choose between
  2445.     real and pseudo pipes using @{" FLAGS PIPE " link Flags}.
  2446.     Multiple pipes and aliases are also supported.
  2447.     All internal commands can be left to "|".
  2448.   - Internal commands that can take data from standard input (stdin)
  2449.     (can be right to "|" only when using pseudo pipes):
  2450.     MORE, TYPE, HTYPE, STRINGS, SEARCH, EXECUTE ZSHELL
  2451.   - @{" EXECUTE ZSHELL scriptname " link Execute} executes a ZShell script
  2452.   - @{" RUN command " link Run} outputs to current window,
  2453.     @{" RUN >filename command " link Run} outputs to filename
  2454.   - @{" Redirection >W " link Redirect} opens a window
  2455.   - @{" MORE " link More}: Key N searches next occurence of searchstring
  2456.   - @{" PROTECT " link Protect}: You can use = similar to + or -, reduced disk access
  2457.   - @{" FLAGS CHECK ON " link Flags} does not count locks anymore, use @{" LOCATE " link Locate} instead
  2458.   - @{" MAKELINK " link Makelink}: HARD is default, SOFT must be specified explicitely
  2459.   - @{" DELETE dirname ALL " link Delete} deletes contents of the directory, then tries to
  2460.     remove the directory
  2461.   - @{" CTRL-P " link History} flushes FNC-buffer (useful on CrossDOS disks)
  2462.   - Default @{" prompt " link Prompt} is now "%s> " again
  2463.   - @{" EVAL " link Eval} uses now different symbols
  2464.   - Bugfixes (Thanks to Christian and Timothy who reported most of them)
  2465. V2.8 25.08.95:
  2466.   - @{" Filename completion " link filenamecompletion} accepts wildcards
  2467.   - Support of logfiles, see @{" CONFIG LOGFILE " link CTRL}
  2468.   - No space before @{" pipe symbol | " link pipes} needed, use \\| to get |
  2469.   - Better handling of \\ and of rediretion names
  2470.   - New chapter: @{" Command Line Parser " link Parser}
  2471.   - @{" CTRL-F " link History} behaves similar to @{" Filename completion " link filenamecompletion}
  2472.   - @{" MEMCLK " link Memclk} uses correct font
  2473. V2.9 04.03.96
  2474.   Sorry to all those who have reported me a bug or sent me a suggestion
  2475.   which does not appear below. I am quite busy at the moment and I want
  2476.   to release this version now because it has some nice improvements
  2477.   and some odd bugs less.
  2478.   Though ZShell V2.9 is well tested and should not have new bugs, I have
  2479.   updated this documentation in a hurry and some things will appear
  2480.   a bit messy.
  2481.   These things are undocumented in V2.8:
  2482.   - Fixed some Enforcerhits
  2483.   - @{" Filename completion " link filenamecompletion}: Backtick cycles back,
  2484.     it now checks the window's size
  2485.   - Checking for too many arguments
  2486.   - @{" COPY " link Copy}: Dotchar as destination is last used directory
  2487.   - \\ (backslash) escapes @{" aliases " link alias}
  2488.   - Command line editing now works over multiple lines
  2489.   - Function keys support macros, see @{" ALIAS " link alias}
  2490.   - Dir lister, ALIAS and MENU use memory pools and therefore cause less
  2491.     memory fragmentation
  2492.   - Scripts: \\ (backslash) escapes LF
  2493.   - Quite safe to iconify @{" KingCON " link StartKCON}
  2494.   These are new for V2.9:
  2495.   - @{" REVIEW " link Review} rewritten. Now gets all output and is more OS friendly.
  2496.   - New commands: @{" MENU " link Menu} and @{" COMPARE " link Compare}
  2497.   - New @{" Flags: " link Flags}
  2498.     RAW is similar to NORAW-Tooltype
  2499.     CONFIRM dis/enables confirming (DELETE)
  2500.     HBIT  to dis/enable H protection bit in DIR
  2501.   - DELETE DEVICE is renamed to @{" DELETE DISK " link Delete2}
  2502.   - NEWCLI executes S:ZStart as default
  2503.   - @{" Prompt " link Prompt} color is included in prompt string
  2504.   - CONFIG COLOUR renamed as @{" CONFIG COLOR " link ctrl} with different syntax.
  2505.   - Fast case independent string compare -> faster searching and sorting
  2506.   - Sets PROGDIR: for internal multiviewer
  2507.   - @{" INFO " link Info} shows nonstandard filesystems (OS2.0+)
  2508.   - COPY,MOVE,JOIN do not read their destination to avoid endless loops
  2509.   - Internal commands can be used in @{" real pipes " link pipes}
  2510.     (but they do not work really asynchronous)
  2511.   - @{" SEARCH " link Search} supports wildcards (uses dir lister)
  2512.   - Better @{" AUX: " link StartAUX} support
  2513.   - Filerequester appears on right screen
  2514.   - Dir lister sorts numbers correctly in opposite to most other dir
  2515.     listers and file requesters
  2516.   - MORE help text does not scroll up anymore
  2517.   - Bugfixes: CTRL-F with no input, only "|", hide cursor in >M,
  2518.     COPY, MOVE, dirnames starting with / (slash), ...
  2519.   - Probably added some brand new nasty bugs and left some ugly old bugs :)
  2520.   - And what is best: Improved versionnumber ! @{" ;-) " Quit}
  2521.  All changes since V1.3 made by @{" Martin Gierich " Link Authors 9}.
  2522. @ENDNODE
  2523. @NODE Problems "Known Problems"
  2524. Here are listed known bugs and odd behaviours.
  2525. * CrossDOS
  2526.   With MessyDOS being one big bug, the MessyDOS filesystem is part of
  2527.   a bug. :-) This means not all things AmigaDOS supports, is supported
  2528.   by CrossDOS, too. Especially @{" Protection bits " link Protect} are different,
  2529.   and @{" Filenotes " link Filenote} are not supported. Not to mention the 8+3 filename limit.
  2530.   A further problem is the missing @{" date-of-last-change " link Setdate} of the disk.
  2531.   Without this @{" FNC " Link Filenamecompletion} cannot determine whether something on the disk has
  2532.   been changed and even not whether the whole disk has been changed.
  2533.   So you have to update FNC manually by pressing @{" CTRL-P " link History} after a change.
  2534. * If you type a command and press Return while an other command (like DIR)
  2535.   outputs on the window, it will appear after the next prompt, but it
  2536.   will just be put in the history buffer without executing it. Sorry,
  2537.   there is no way to fix this, because the Return above is treated as
  2538.   Shift-Return by the system. Two solutions:
  2539.   1.) Press cursor up (last line in history) and then press Return
  2540.   2.) Use "config ctrlkeys WQSEIX[TYHKJLRVFP". With this Shift-Return
  2541.       will be the same as Return and CTRL-K will be what Shift-Return
  2542.       was before.
  2543. * @{" DELETE " link Delete}
  2544.   If you want to delete a link, you have to describe it with wild cards,
  2545.   otherwise the original file will be deleted, because the system
  2546.   resolves links automatically. I do not have an idea how to work
  2547.   around it.
  2548. * @{" Filename completion " link filenamecompletion}
  2549.   If you have a filename with a space in it, you have to make sure you
  2550.   type the quotes around it by yourself, this can hardly be done
  2551.   automatically. Press CTRL-F instead of TAB in these cases.
  2552. * @{" MORE " link More}
  2553.   If you are on the last page, scroll up some lines and scroll down some
  2554.   lines again, you will notice a weird behaviour. This is hard to fix.
  2555. * @{" ALIAS " link Alias}
  2556.   alias list dir ; alias dir list
  2557.   does not exchange "dir" and "list", because nested aliases are allowed.
  2558.   This is not a bug, this is a feature !
  2559. * DIR, LIST, COPY, DELETE etc.
  2560.   Directories nested very much, about more than 50 levels, and using
  2561.   recursive option to scan them, cause ZShell to crash. Still looking
  2562.   for the bug.
  2563. * @{" PATH " link Path}
  2564.   If you have multiple assigns (ASSIGN ADD) to your C: (or another)
  2565.   directory, PATH will accept only the first one. Add the other
  2566.   directories to the path by using "path directoryname".
  2567. * PROGDIR:
  2568.   The OS2.0+ pseudo assign PROGDIR: is set to wrong directories in
  2569.   some cases.
  2570. * @{" Parser " link Parser}
  2571.   \\" is converted to " only in some commands like ECHO and ASK,
  2572.   but it is not treated as quote, too.
  2573. @ENDNODE
  2574. @NODE Future "Possibilities for Future Improvements"
  2575. Planned for next version:
  2576. * New documentation. Since Timothy has lost his EMail access, I am again
  2577.   looking for somebody who wants to do this (I do not). Please contact
  2578.   @{" me " Link Authors 9} if you want to help me.
  2579. * Check all the bug reports and new ideas @{" people " link Credits} have sent
  2580.   me. Sorry, I am too busy to do it now and I want to release this version
  2581.   now because it has some nice improvements and some odd bugs less.
  2582. Other ideas/suggestions:
  2583. * GUI for configuring
  2584. * Quick directory changes by using a database
  2585. * Full XPK-support
  2586. * Scrollbar for review-buffer (this will be difficult)
  2587. * Add more commands to the directory-lister (like makeicon, filenote)
  2588. * Make KILL a real killer (windows, screens)
  2589. * MAKEDIR can create nested dirs: If RAM: is empty "makedir ram:a/b/c"
  2590.   would create directory c in b in a in RAM: .
  2591. * HEX option for MORE.
  2592. * More options for the LIST command (especially LFORMAT).
  2593. * Remove PUTMSG and GETMSG
  2594. Less probable:
  2595. * COPY asks to remove incomplete destination files.
  2596. * RENAME command with wildcard support: "rename *.asm *.s" would rename
  2597.   all files ending in .asm to the same name ending in .s !
  2598. * Make it a commodity with hotkey.
  2599. * Improve internal script file execution, like passing arguments,
  2600.   allow subroutine scripts and commands like FOR.
  2601. * Faster scrolling (jump scroll/1 bitplane scroll)
  2602. * Patch for 68000-Processors to be as fast as 68060/50MHz-Processors ;-)
  2603. * Write a stripped-down version for MessyDOS; after starting this would say:
  2604.   This is ZShell V2.x *** Fatal error: no multitasking system !  ;-)
  2605. If you want to see these or other improvements made, please write to @{" me " Link Authors 9}.
  2606. If you do not, please write to me, too :-)
  2607. Note that there is a (about) 32K limit of the executable, because I only
  2608. use relative addressing (like in small code model). So suggestions what
  2609. to remove are also welcome.
  2610. I thought (long ago) about making a separate version for OS2.0+:
  2611. Command-line-editing and review stuff could be done best (most powerful)
  2612. within a console-handler; there are already several available (as I know,
  2613. the only one that is Freeware is KingCon), so I do not want to write 
  2614. another one. The disadvantages of these I have seen is that you need to
  2615. change alot between mouse and keyboard and they are somehow slow on my
  2616. system (and do not work on OS1.3- systems) and memory-hungry.
  2617. Except for Command-line-editing and review, the inbuild commands are a
  2618. main advantage of ZShell. These commands could be moved to one executable
  2619. file; if this file was executed, it would create all inbuild commands
  2620. as resident commands that could be used by the normal Shell.
  2621. (This would be somehow like the MessyDOS COMMAND.COM file.)
  2622. So if you used this file and a separate console-handler, you could work
  2623. comfortably with the normal Shell.
  2624. If there are enough people asking for that, I will think about writing
  2625. such a "multi-command-file", but I will not write another console-handler.
  2626. And, last but not least, I have to invest lots of time in my studies and
  2627. I do not want to hang around all remaining time at the keyboard !
  2628. @ENDNODE
  2629. @NODE Distribution "Distribution"
  2630. Following files belong to this document:
  2631.   1) ZShell           The main executable
  2632.   2) ZSH              The small starter
  2633.   3) ZShell.doc       The documentation (and online help manual)
  2634.   4) ZShell.guide     The AmigaGuide documentation
  2635.   5) ReadMe           Short description
  2636.   6) ZStart           An example startup script (can be put to S: )
  2637.   7) ZStart.OS2       Example menu definition for OS2.0 and OS2.1
  2638.   8) ZStart.OS3       Example menu definition for OS3.0 or better
  2639.   9) Csh-Aliases      Some aliases to make it a bit similar to UNIX csh
  2640.  10) ZShell.s         Source code of the main executable
  2641.  11) ZSH.s            Source code of the small starter
  2642.  and some icons.
  2643. @ENDNODE
  2644. @NODE Copyright "Copyright"
  2645. COPYRIGHT
  2646. (taken directly from the V1.3 distribution from Paul Hayter)
  2647.  ZSHELL IS FREELY DISTRIBUTABLE. YOU CAN DISTRIBUTE THIS AS LONG AS
  2648.  THIS DOC FILE REMAINS WITH THE EXECUTABLE, AND THAT NO CHARGE IS MADE FOR
  2649.  THEM (APART FROM A NOMINAL COPYING CHARGE). IF YOU FEEL LIKE SENDING
  2650.  ME SOMETHING FOR THIS PROGRAM, SEND ME A POSTCARD!, A P.D. DISK, A
  2651.  PROGRAM YOU'VE BEEN WORKING ON ,BUT DON'T SEND ME ANY MONEY (WELL, IF
  2652.  YOU REALLY, REALLY WANT TO, I GUESS I COULD PUT UP WITH IT).
  2653. Note from Martin:
  2654.  This is an update to Version 1.3 on the Fish Library Disk 537 from
  2655.  Paul Hayter. I (Martin) tried to ask him for permission to release
  2656.  this, but he has not answered. Because the copyright notice is left
  2657.  unchanged and the original executable with documentation is included,
  2658.  I do not think that I am doing something nasty.
  2659.  (In the original distribution there was the source code included
  2660.  and there is nothing stated to distribute it only unmodified.)
  2661.  To make things easier I accept the same copyright notice for the parts
  2662.  I have written. They are marked in the source with V2.x (well, mostly).
  2663.  I estimate that about 80% of the source, executable and the documentation
  2664.  is from me.
  2665.  @{" I " Link Authors 9} would like to get your comment on ZShell to see if anybody is
  2666.  using it and what can be improved.
  2667. @ENDNODE
  2668. @NODE Disclaimer "Disclaimer"
  2669. DISCLAIMER
  2670. USE THE FILES OF THIS PACKAGE ON YOUR OWN RISK !
  2671. The authors are in no way responsible for what you are doing with it
  2672. or what it does to you or your soft- and hardware.
  2673. Amiga, AmigaDOS, AmigaGuide, Workbench and Kickstart were registered
  2674. trademarks of Commodore-Amiga Inc and now probably are of ESCOM AG.
  2675. UNIX is a trademark of AT&T (if I am right).
  2676. MessyDOS is not really a trademark (as I know)  :-)
  2677. @ENDNODE
  2678. @NODE Credits "Credits"
  2679. CREDITS FROM PAUL
  2680.  Many thanks to Wayne for his invaluable help in doing the history
  2681.  and command line editing parts of ZShell. Also, thanks to
  2682.  Tim Strachan who asked for the history stuff.
  2683.  ZShell was entirely written using Wayned by Wayne Hayter (various
  2684.  versions). And was assembled with A68K V2.61 by Charlie Gibbs. And
  2685.  linked with Blink V6.7 by the Software Distillery.
  2686. CREDITS FROM MARTIN
  2687.  Many thanks go to:
  2688.  * The administrators of Aminet for their great work
  2689.  * Samu Nuojua for his great Freeware assembler SNMA
  2690.    ZShell V2.9 was assembled with V1.99: SNMA ZShell.S EXEOBJ OPTLEVEL 5
  2691.  * Ralph Babel for the System0 code (see source)
  2692.  * Martin Mares for some fine assembler programs
  2693.  * Frank for using ZShell (I persuaded him :-)
  2694.  * Laura Mahoney for trying to send me a postcard and lots of mail
  2695.  * Igor Srdanovic
  2696.  * Willem MC Hogeweg
  2697.  * Nico Max
  2698.  * Max Stouugard
  2699.  * Alexandros Loghis for good ideas
  2700.  * Christian Steigies for sending me postcards, for really long mails,
  2701.    for lots of shocking bugreports :) and for betatesting
  2702.  * Oliver Hofmann
  2703.  * Holger Jakob
  2704.  * Hans Kruse
  2705.  * Aristotelis Grammatikakis
  2706.  * Jonathan Marsh
  2707.  * Dominique Niethammer
  2708.  * Fredrik Solenberg
  2709.  * Teonanacatl
  2710.  * Chris
  2711.  * Fred Brooker for the music disk
  2712.  * David Klinect
  2713.  * Brian Myers
  2714.  * Timothy Cochran for trying to rewrite the documentation
  2715.  * Mark Dowe
  2716.  * Marek Petkov
  2717.  * Matthew Estela
  2718.  * Christian Hessenbruch
  2719.  * Bill Beogelein
  2720.  * Louis Van Breda
  2721.  * Peter Bagnato
  2722.  * Peter Schulz
  2723.  * Maarten de Jong
  2724.  * Maarten van Dillen
  2725.  * Dalibor Kezele
  2726.  * Jussi Lindgren
  2727.  * Andy Dalton
  2728.  * Sami Leino
  2729. @ENDNODE
  2730. @NODE Authors "Authors"
  2731. Please send any correspondence and/or bug reports referring V1.3
  2732. to me at the address below:-
  2733.       Paul Hayter
  2734.       PO Box 331
  2735.       Ballina
  2736.       2478
  2737.       AUSTRALIA
  2738. Please send correspondence, bug reports, enforcer hits,  comments,
  2739. suggestions for future improvements etc. referring V2.x to this adress:
  2740.       Martin Gierich
  2741.       Narzissenweg 7
  2742.       76297 Stutensee
  2743.       GERMANY
  2744.   (I would really like to get a picture postcard from you, even if
  2745.   you just wrote a "Hello" on it !)
  2746.   If you have EMAIL access, it would be nice if you send me one
  2747.   at one of these adresses (first preferred):
  2748.            uj3w@rz.uni-karlsruhe.de           (Internet)
  2749.    or to   uj3w@ibm3090.rz.uni-karlsruhe.de   (Internet)
  2750.    or to   UJ3W@DKAUNI2.BITNET                (Bitnet)
  2751.   I will try to reply every EMail I get !
  2752.   (But it might take one or two weeks.)
  2753.   Please tell me your system-configuration, at least your Kickstart-
  2754.   Version, so that I see which kind of systems should be most supported
  2755.   in future versions. My system is an A500 with 200 MB Harddisk, 3 MB RAM,
  2756.   Kickstart 2.04 and Workbench 2.1 and a VGA monitor with Fickerfixer.
  2757.   And I have a plain A1200HD with OS3.1 connected to the VGA monitor.
  2758.   Note that large parts of ZShell were developped under Kickstart 1.3 !
  2759.       /\\/\\            o o
  2760.      / __ \\ artin      <
  2761.     (_/  \\_)         `---'
  2762. @ENDNODE
  2763.