Here are a few commands that did not make it into 2.04; however, I've gotten the go-ahead to distribute them in this fashion; It's possible that future versions of the OS will contain updates of these commands. It's also possible that it won't. These commands are designed for 2.04. It is possible that future revisions of the OS will require future revisions of these commands. (This is why I consider them hacks) Anyway, I've been using them for about a year; now that everyone can get 2.04 (and now that I've cleaned the commands up) its time to give you the opportunity too. Any bugs you find should be reported directly to me, as well as to Commodore, for they should not be currently considered Commodore supported. I will probably fix the bugs I hear about, though. have fun, andy finkel ------------------------------------------------------------------- History Template: LINES/N,START/N,LOAD/K,SAVE/K,SIZE/K/N,RUN/S,CLEAR/S,SHOW/S,NONUM/S The HISTORY command is used to control the 2.04 console handler history features. This command allows you to review, load, save, clear, and change the size of the history buffer. In addition, the command allows you to re-execute portions of the history buffer without using the cursor keys. The history command can be used to display the current history buffer just by using the command history To see the last N entries in the history buffer, you also the number, eg history 10 will show you the last 10 entries. (You can also say history LINES 10). To see N entries in the history buffer, starting with entry X, you would specify both numbers, eg history 8 20 which will display 20 history lines starting with history entry # 8. (you can also say HISTORY LINES 8 START 20) On the left margin of the history listing is the command histry number. To supress those numbers, use the NONUM keyword. (this is often useful when redirecting the output of the history cmmand into a file or a pipe. The LOAD keyword allows you to preload the history buffer, up to the limits of the current size of the history buffer. SAVE saves the current history buffer to a file. NOTE: partial saves are possible, following the same rules as partial listings of the history buffer. The CLEAR keyword erases the contents of the history buffer. It may be used by itself, or with one of the other keywords. The SIZE keyword allows you to change the size of the history buffer of the current console-handler. You can change the size in 1K increments. The initial history buffer size is 2K. The RUN keyword allows you to run one or more commands in the history buffer. history run 5 will run command 5. history run 5 3 will run 3 commands, starting with the 5th entry in the history buffer. a useful alias is alias ! history lines 1 run start which kind of gives that Unix csh effect. The SHOW option is there as a default; it can be combined with other options, however. ------------------------------------------------------------------- Pipe Template: COMMAND/F The PIPE command is like the RUN command, with several differences. The PIPE command is designed to run several commands at a time, redirecting the output of one into the input of the next. The PIPE command can also be used to run multiple commands; but its main use is for the piping. Commands are separated by the vertical bar character (|) for a pipe operation, ie pipe list sys: | more NOTE: use of redirection in commands will prevent the proper transfer of output from one command to the next. All the commands in the PIPE command line are run asynchronously, except the last one; synchronization is provided by the blocking pipes provided by the queue-handler. The pipe command works best with commands that will look to standard input for input, and send output to standard output. Unfortunately, many Amiga programs do not do this; instead they demand an input file (and sometimes even an output file) Rather than just not work with those commands, the PIPE command supplies two fake file handles, similar to the NIL: file handle, called IN: and OUT:, representing the data from the preceeding command and the output to the next command. Thus it becomes possible to use commands like: pipe list | sort in: out: | more or pipe list #?.c lformat="rlog %n" | execute in: It is often convienent to define an alias for commands that you use frequently with pipes that require in: and out:, ie alias psort sort in: out: will allow you to do things like: pipe list lformat=%n | psort | more You can even do things like: alias plist pipe list lformat=%n | psort | more Now you have an alias that does a sorted list through the more command. To use The PIPE command for multiple commands, the individual commands are seperated by the \ rather than the |. Output is not passed from one stage to the next. In the current implementation, each command is run in a seperate subshell; this is subject to change in a future revision. The PIPE command allows you to change the pipe (and multiple command) characters. PIPE looks at the shell variables __pchar and __mchar (note the 2 underscores) for pipe character and multiple character. You can use any one or two character combination, ie set __pchar || will set your pipe character(s) to two vertical bars. Pipe is best used as a resident command. Note: If you put a RUN in a PIPE command line you probably won't get quite what you expect, as all the commands are already being run in the background. If you control-C out of a PIPE operation, (or if there is some other problem like a mistyped command) you will see the message "broken pipe", and the pipe will drain; if the commands have produced a lot of output, this may take a few seconds, as the current implementation of the queue-handler does not support a 'flush pipe' operation. Also, only the last command in the pipe receives the control-C. (Originally, pipe sent a control-C to every command in the pipe; some commands got upset) If you need to, you can find the other commands by using the status command, and can issue them a BREAK manually. ------------------------------------------------------------------- Recorder Template: TO=ON,PROCESS/K/N,APPEND/S,OFF/S The Recorder command is used to capture all the input and output in a particular shell and save it to a file. To use the recorder, merely type its name, ie recorder will activate the recorder, sending its output to the default file called "recorder.output" If you wanted to use a different file name, you could have said: recorder ram:work.in.progress And the output would have been send to the file ram:work.in.progress To stop the recorder, the OFF option is used, ie recorder OFF This must be issued in the same shell that invoked the recorder. To append new information to an existing file, the APPEND keyword is used, ie recorder ram:work.in.progress append will add new information to the already existing file. This command can be issued after a recorder OFF command; In this way you can start and stop the recorder at will. Note: The recorder process can also be stopped by sending it a break signal. This would be required to properly close the recorder output file if you inadvertently close the shell while the recorder is running. In that case, the shelll window would not close until you found the recorder process by using the STATUS command from another shell, and used the BREAK command to send the recorder process a control-C. The Process keyword is used internally by recorder. Recorder should not be RUN, as it attaches to the current process, so is generally not useful in its own short-lived process. Recorder is based on ideas from Phillip Lindsey and David Cervone.