Interacting with the GNO Shell Executing Commands A command consists of two parts: a name and its arguments. The command name is the name used to start the command. The name is usually the name of a file which can be executed. The only exceptions are commands which are built-in to the shell. These commands are documented in . Any shell utility command with a filetype of EXE, SYS16, or EXEC, can be executed in this fashion. The command name must be separated from the command arguments with a space. The command arguments are parameters that the command takes as data to work with (In Applesoft BASIC, "HELLO WORLD" would be an argument for the PRINT command). Command arguments are separated from each other with a space. Note that although arguments extend the usefulness of a command, not all commands have arguments. Any arguments entered after the command will be passed by the shell to the program when it starts exectuting. The examples below use the following commands: qtime displays time in English text echo prints arguments to the screen Examples: % qtime It's almost five. % echo II Infinitum II Infinitum At the simplest level the user enters commands to the shell by typing them on the keyboard. gsh includes a command-line editor to help the user enter and edit commands. The editor also provides a way to modify and execute previous commands. Additionally the editor can help complete the names of commands, filenames and variables. Commandline Editing The following sections provide a complete description of the functions of the command-line editor with short examples depicting how each editing key works. Throughout the examples the underline character, "_", will be used to represent the current cursor position. In addition, "OA" is used to represent the Open Apple key and the term word is used to indicate a string of characters consisting of only letters, digits, and underscores. To the right of a editing key entry is the bindkey function name which is used to remap editing functions to new keys. This information is included for reference purposes only. See for more information on the bindkey command. It should be pointed out that at this stage that the user should not be concerned with what the actual commands used in the examples do, rather the user should concentrate on how the command-line editor functions work. Command Input These command-line editor keys deal with entering text directly on the command-line. RETURN Newline. The return key is used to terminate line input. gsh then interprets the command on the line and acts accordingly. The position of the cursor on the command-line does not matter. CTRL-D (no bindkey name) Causes gsh to exit if it was the first character typed on the command-line. If there are still jobs running in the background or stopped, gsh will display the message "There are stopped jobs". If you press CTRL-D a second time without an intervening command, gsh will terminate all the jobs in the job list and exit. CTRL-R redraw Moves to the next line and re-displays the current command-line. Use this to redraw the current line if the screen becomes garbled. CTRL-L clear-screen Clears the screen, moves the cursor to the top line, and redraws the prompt and any command-line that was in the process of being edited. Command Editing These command-line editor keys allow editing of the command-line text. CTRL-B LEFT-ARROW backward-char Moves the cursor one character to the left. You cannot move past the first character on the line. If so, gsh will output an error beep. CTRL-F RIGHT-ARROW forward-char Moves the cursor one character to the right. You cannot move past the last character on the line. If so, gsh will output an error beep. DELETE backward-delete-char Deletes the character to the left of the cursor. You can delete up to the first character on the command-line. CLEAR CTRL-X kill-whole-line Deletes all characters on the command line and positions the cursor after the prompt. CTRL-Y kill-end-of-line Deletes all characters from the cursor to the end of the command-line. CTRL-D OA-D delete-char Deletes the character under the cursor. CTRL-A OA-< beginning-of-line Moves the cursor to the beginning of the line. CTRL-E OA-> end-of-line Moves the cursor to the first position past the last character on the line. OA-RIGHT-ARROW forward-word Moves the cursor right to the last character of the current word. OA-LEFT-ARROW backward-word Moves the cursor left to the beginning of the current word. OA-E toggle-cursor Toggles input mode between insert and overstrike. Overstrike mode is distinguished by a solid inverse cursor and insert mode by a blinking '_' (underscore) cursor. In overstrike mode, any characters that are typed directly over-write those characters below the cursor. In insert mode, the characters typed are inserted before the character below the cursor. History Editing These command-line editor keys allow access to previously entered commands. The GNO shell automatically keeps track of previous commands in what is called a history buffer. The maximum number of command-lines saved in the history buffer is determined by the shell variable . A default value for this variable is set in the gshrc file that the GNO Installer creates. The lines saved to the history buffer are kept between sessions. That is, when you exit gsh, $SAVEHIST command-lines are saved to your $HOME/history file. When gsh is invoked again, all command-lines saved in the history buffer will be available using history editing keys. See for more information on the HISTORY and SAVEHIST shell variables. CTRL-P UP-ARROW up-history Fetches the previous command-line. If the current command-line is the first line in the history buffer, the next line fetched will be an empty command-line. If invoked again, the last line in the history buffer will be displayed. CTRL-N DOWN-ARROW down-history Fetches the next command-line. If the current command-line is the last command line in the history buffer, the next line fetched will be the first command-line in the history buffer. Command, Filename, and Variable Completion These command-line editor keys can be used to complete filenames, commands and variables. CTRL-D list-choices Lists commands and pathnames that match the current word. TAB complete-word Command, pathname and variable completion. If the cursor is positioned on the first word of the command-line, command pathname is performed, else pathname or variable completion is performed. The word is expanded to the closest matching command, pathname or variable. Characters are appended up to the point that they would cause more than one. If a complete pathname results for pathname completion, gsh appends a "/" if the pathname is a directory; otherwise, it appends a space. Note that if there is more than one match for the partial command, gsh will sound a beep on the speaker. You can use the CTRL-D (list-choices) command to see the list of possible matches, and should either finish entering the command manually or type enough additional characters to guarantee a unique match. If the FIGNORE environment variable is set, gsh ignores filenames (when doing completion) that end with any of the suffixes in $FIGNORE. See for more information regarding the FIGNORE environment variable. Other Ways of Entering Commands Terminal Input An example involving the connection of a terminal will be shown in but it is necessary to mention here that when using gsh over a terminal, some keystrokes must be slightly modified. This is because there are no terminals that can transmit the OA key. Instead, a two-key sequence must be used which replaces OA with ESC. For example, instead of pressing OA-E to toggle insert mode, you can type ESC-E over a terminal to do the same thing. If you will be using terminals seriously then you should install the Remote Access package. Script File While you would normally type commands on the command-line, you can also store a series of often used commands in a file. A file containing such a series of commands is called a script. A script is normally created by using a text editor. By typing the name of the script file, the shell will execute it, line by line, as if you had typed each command separately. The gshrc file presented in is an example of a script file.