vvsshh -- Command Interactive graphical shell vvsshh [-dd_d_i_r_e_c_t_o_r_y] [-eeiirrtt] vvsshh is a visual shell. With it, you can use arrow keys or simple keystrokes to perform common operating-system tasks, such as change directories, edit files, and execute programs. Each user can program a bank of up to nine function keys to perform complex tasks with a single keystroke. With vvsshh, a naive user can access much of the power of his operating system without having to learn the details of a line-oriented shell. Unlike X or other windowing systems, vvsshh works on a character-based terminal and requires only a modest amount of memory. It does not require a mouse. _G_r_a_p_h_i_c_s _I_n_t_e_r_f_a_c_e vvsshh uses the ccuurrsseess library and tteerrmmiinnffoo descriptions. To use vvsshh, you must have a tteerrmmiinnffoo description installed for the device upon which you wish to run it. Under UUCP or COHERENT, you must set the environmental variable TTEERRMM to point correctly to that description. See your system's documentation for details on how you should set up the terminal description and environment. If you have a non-standard terminal or have trouble displaying vvsshh, try invoking it with the options -ee or -tt. All of vvsshh's command-line options are described below. _M_a_i_n _S_c_r_e_e_n When you invoke vvsshh, you see a screen that appears as follows: -------------------------------------------------------------------------------| | File Dir Options Install Command Refresh Exit Help | -------------------------------------------------------------------------------| |/v |>| | |------------------------------------------------------------------------------| | [..] 12:49 2-04-94 rwxr-xr-x ^ System: lepanto | | [PostScript] 12:15 12-02-93 rwxrwxrwx # Line: ttyp1 | | [backup] 9:39 10-05-93 rwxr-xr-x + Login: fred | | [font] 12:41 10-19-93 rwxr-xr-x + UID: fred (10) | | [fwb] 13:51 2-09-94 rwxr-xr-x + GID: user (5) | | [gif] 9:23 2-05-94 rwxrwxrwx + Date: 2-9-94 | | [lost+found] 15:00 11-15-93 rwxrwxrwx + Time: 22:08 | | [sounds] 16:04 1-05-94 rwxr-xr-x + -------------------------| | OLD.gtz 95868 9:30 1-29-94 rw-r--r-- + Files: 10 | | mount.all 372 10:02 1-29-94 rwxr-xr-x + File size: 96240 | | + Files tagged: 0 | | + File size ta.: 0 | | + File size ta.: 0 | | + Dir. Stack: 0 | | + Mail: None | | + /usr/spool/mail/fred | | + you can get messages | | + | | v | |------------------------------------------------------------------------------| 1______ 2______ 3______ 4______ 5______ 6______ 7______ 8______ 9______ As you can see, the screen is divided the following six sections, or _w_i_n_d_o_w_s: -> The first window, the _C_o_m_m_a_n_d Window, is the narrow window that runs across the top of the screen. This window lists the commands that vvsshh can perform. You will enter this window frequently as you work with vvsshh. -> The second window, the _C_u_r_r_e_n_t _D_i_r_e_c_t_o_r_y window, names the directory that you are currently in. -> The third window, the _D_e_s_t_i_n_a_t_i_o_n _D_i_r_e_c_t_o_r_y window, names the default destination directory. -> The fourth window, the _F_i_l_e Window, extends down the left side of the screen. It lists the contents of the current directory. You will also work frequently in this window. -> The fifth window, the _S_y_s_t_e_m Window, is the upper window on the right side of the screen. It gives information about the system, that is, who is running vvsshh, the device she is running it on, and the current date and time. Your cursor never enters this window. -> The last window, the _S_t_a_t_u_s Window, gives information about the work you have performed under vvsshh. Again, your cursor will never enter this window. Across the bottom of the screen are nine ``stubs,'' one each for function keys one through nine. The stub's text indicates the command that vvsshh executes when you press that key. The following sections discuss each window in detail. _F_i_l_e _W_i_n_d_o_w The file window lists all of the files and directories within the current directory. This is the default window for vvsshh; the cursor ordinarily rests in this window, and you will do most of your work in it. The leftmost column in the File Window gives the name of each file and directory. Directories are given at the top of the list; they are enclosed within brackets `[ ]'. The other columns give, respectively the time the file or directory was last updated; the date it was last updated; and its permissions. For information on how to interpret the permissions string, see the documentation that came with your operating system. The top listing in the File Window is always [..], which represents the current directory's parent directory. The top listing in this list is highlighted by being shown in reverse video. To move the highlighting bar up and down the list, use the arrow keys. If you press the arrow keys on your keyboard's number pad, be sure to turn the key _o_f_f, or the keys will not work as you expect. If you press the v key, the bar shifts down one row on the list. Pressing the ^ key moves the bar up one row. You can page up or page down by pressing, respectively, the keys and . The key moves the cursor to the top of the list, and moves it to the bottom. If your terminal does not implement these keys, you can use the following control characters: Next page (like ) Previous page (like ) Beginning (top) of list (like ) End (bottom) of list (like ) Note that if the list of files and directories is too large to fit into the window, moving the bar to the bottom of the window and pressing v will scroll the list. If you press the key, the row moves to the last row in the list; and if you press , it moves to the top of the list. A scroll bar runs down the right side of the File Window. As you scroll up and down this window, the scroll bar moves. Note that the position of the scroll bar is proportional to the highlighting bar's position in relation to the entire list of files, not just to its current position within the File Window. This gives you an easy way to see just where you are in the entire file list. If you position the highlighting bar over the name of a directory and press , vvsshh names that directory in the Current Directory Window and displays its contents in the File Window. For example, if you position the highlighting bar over the entry for directory [lleetttteerrss] and press , vvsshh displays the contents of directory lleetttteerrss in the File Window. (If you are familiar with the Bourne or Korn shells, this has the same effect as typing the command ccdd lleetttteerrss.) To return to the directory you had just been displaying (that is, the parent directory of lleetttteerrss), use the arrow keys to move the highlighting bar to the entry [..]; then press . vvsshh changes the contents of the Current Directory Window, and in the File Window erases the contents of lleetttteerrss and displays the contents of its parent directory. If you press while a file is highlighted instead of a directory, vvsshh does the following: 11. If the file is executable, vvsshh executes it. 22. If the file matches a pattern from the file-action list, vvsshh executes the action from the list with the file as input. The file-action list is in file .vvsshh in your home directory; and it looks something like the following: [Mm]akefile:make *.mk:make -f %F *.sh:sh %F *.c:cc -c -O %F *.sc:sc %F *.a:ar tv %F | more *.[1-9]:nroff -man %F | more *.tar.F:fcat %F | tar xvf - *.F:fcat %F | more *.tar.Z:zcat %F | tar xvf - *.Z:zcat %F | more vvsshh recognizes most common wildcard characters: that is, it interprets an `*' as any string of characters, and it interprets an `?' as any single character. The token %FF stands for the file that is currently highlighted. For example, in the above example the entry *.ZZ:zzccaatt %FF means that if you select a file with the suffix .ZZ (which usually means that a file has been compressed), vvsshh should pass that file to the command zzccaatt to uncompress and display it. vvsshh defines many defaults for you when it creates this file, which you can use as a model. To change the file-action list, use the FFiillee aaccttiioonnss sub-command of the IInnssttaallll command, which is described below. 33. If the file appears to be ASCII vvsshh displays it with the default viewer. While vvsshh is working, it displays a large letter `X' in reverse video in the lower right corner of the screen. This shows that vvsshh is doing some internal task. vvsshh cannot accept any commands while the `X' is displayed, so please be patient. Also, note that vvsshh cannot handle more than 1,000 files in any given directory. If a directory contains more than 1,000 files, only the first thousand will be available for use. _S_y_s_t_e_m _W_i_n_d_o_w The system window is the upper of the two windows on the right side of the screen. The cursor never enters this window; rather, this window simply displays information about your system, and how you are currently using it. It contains the following entries: SSyysstteemm: This gives the name of your system, as you (or your system administrator) has set it. LLiinnee: This gives the device by which you are accessing your system. If you are working on your system's console, then you should see ccoonnssoollee on this line; whereas if you are accessing your system via a PC plugged into a serial port, then you should see here the name of that port. If you are using virtual consoles, the line is shown as mmoonnoo[00-88] or ccoolloorr[00-88]. LLooggiinn: This gives the name under which you logged into your system. For example, if your login identifier is ffrreedd, then you should see ffrreedd on this line. UUIIDD: This shows your user-identification number (or UID). This is the unique number by which your system knows you, as set in file /eettcc/ppaasssswwdd. GGIIDD: This gives the number and name of the user group to which you belong. Users on a UNIX or COHERENT system can be organized into groups; permissions on files can be set to include the members of your group, but exclude all others. DDaattee: This gives today's date (or rather, what your system thinks today's date is). TTiimmee: This gives what your system thinks the current time is. If your system's time is not set correctly, then the time shown here will not be correct. _C_o_m_m_a_n_d _W_i_n_d_o_w The Command Window is the top window, and stretches across the width of the screen. This window gives you access to vvsshh's commands. Some commands in the command window actually open an entire menu of commands, with which you can perform all manner of work. The command window contains the following entries. For convenience, the following displays the entries vertically; the actual window displays them horizontally: FFile DDirectory OOptions IInstall CCommand RRefresh EExit HHelp When the cursor is in the File Window (which is the default) and you wish to execute one of the commands in the Command Window, press its initial letter. For example, to execute the RReeffrreesshh command, press RR. Note that the commands on this window are in two groups. A command's behavior differs, depending upon which group it belongs to. The commands FFiillee, DDiirreeccttoorryy, OOppttiioonnss, and IInnssttaallll display a drop-down menu when you invoke it. That is because they have more than one option available under it. If you do not wish to invoke any of the sub-commands on that menu, you can do either of the following: You can press the key, which erases the drop down-menu and returns you to the File Window; or you can press the <- or -> keys, which move you to the command in this group that lies, respectively, to the left or to the right of the current command. For example, suppose that you were in the File Window, and you pressed FF to invoke the FFiillee command. vvsshh would move the cursor into the Command Window, and display the File Command's drop-down window, which displays its sub-commands. If you then pressed the key, vvsshh would return you to the File Window. If you pressed the -> key, vvsshh would erase the FFiillee command's drop-down window and display, instead, the drop-down window for the DDiirreeccttoorryy command. If, however, you pressed the <- key, vvsshh would erase the FFiillee command's drop-down window and display, instead, the drop-down window for the HHeellpp command. As you can see, vvsshh ``wraps- around'' the cursor -- it considers the command at the far right to be to the left of the command to the far left, and vice versa. This concept is a little difficult to grasp when you read about it, but once you try it, it will quickly become clear. The other group of commands are the commands CCoommmmaanndd, RReeffrreesshh, EExxiitt, and HHeellpp. Each has only option, so when you invoke one of them, it immediately begins to execute that option. When you access one of these commands through the -> and <- keys, each displays a drop-down menu that shows its one option. The following describes each command in detail. FFiillee Pressing FF invokes the FFiillee command. This displays a drop-down menu that lists a set of sub-commands. These sub-commands let you manipulate files; with them, you can edit a file, create a file, change its permissions, rename it, erase it, print it, or do other common tasks. To invoke a sub-command, you can do either of the following: Press the letter in the sub-command that is underlined (each sub-command has its own unique letter with which you can invoke it); or use the ^ and v keys to move the highlighting bar to that command, and then press . The following discusses each sub-command in detail: CCooppyy This sub-command copies a file. Please note that the behavior of this subcommand depend upon whether you have tagged files. If you have tagged one or more files, vvsshh opens a pop-up window that requests the path name of a directory. By default, vvsshh displays the destination directory, if you have set one. When you enter the path name, vvsshh copies every tagged file into that directory. If you have not tagged any files, vvsshh opens a pop-up window that requests that you enter a file name or a path name. Again, if you have set a destination directory, the window displays it by default. If you enter only a file name into this window, vvsshh copies the highlighted file into the newly named file in the current directory; if you have named an existing file, vvsshh prompts you before it overwrites that file. If you enter a path name, vvsshh copies the highlighted file into the directory you have named; the copied file retains its current name. If, however, you enter both a file name and a path name, then vvsshh copies the highlighted file into the directory you named, and gives it the file name that you entered. Note that this command will not overwrite a file that you do not own; nor will it create a new file in a directory in which you do not have write permission, or copy a file on which you do not have read permission. MMoovvee This sub-command prompts you for the name of a directory; if you have set a destination directory, vvsshh displays it by default. When you confirm the destination, vvsshh then moves all tagged files into it. (If no files are tagged, vvsshh moves only the highlighted file. For more information on tagging, see the entry for the sub-command TTaagg, below.) The files retain their names in the new directory. This command does not move a file for which you do not have read permission, or move a file into a directory into which you do not have write permission; nor will it move a file into a non- existent directory (of course). DDeelleettee This sub-command deletes the tagged files. (If no files are tagged, then it deletes only the highlighted file. For more information on tagging, see the entry for the sub-command TTaagg, below.) It will prompt you to confirm that you really do want to delete the file or files in question. With regard to the mass deletion of tagged files, this sub-command lets you choose whether to do a mass deletion or delete files one at a time. Note that this sub-command will not delete a file that you do not own. RReennaammee This sub-command lets you rename the highlighted file. It opens a pop-up window that shows the current name of the file, and prompts you to type the new name. Press to abort this sub- command, or type the new name and press . It does not work with directories. It will not let you rename a file that you do not own. EExxeeccuuttee This sub-command executes the highlighted file. vvsshh prompts you to type the arguments you wish to pass this file, then invokes the file with those arguments. Note that vvsshh will not execute a file for which you do not have execute permission. AAcccceessss This sub-command lets you change the manner in which every tagged file can be accessed. (If no files are tagged, the default is the highlighted file.) When you invoke it, vvsshh displays the following pop-up window for each tagged file: Change access f file _f_i_l_e_n_a_m_e Owner Read [x] Write[x] Execute[ ] Group Read [x] Write[ ] Execute[ ] World Read [x] Write[ ] Execute[ ] Special Set UID [ ] Set GID [ ] Set sticky[ ] An `x' in a field means that that permission is turned on; a blank means that it is turned off. Use the arrow keys to move to the cursor the field whose status you wish to change, then enter a space or `x' to, respectively, turn off or turn on that given permission. To abort this command, press . Note that you can reset permissions only on the files you own. OOwwnneerr This lets you change the owner and group that owns each tagged file. If no files are tagged, then this applies only to the highlighted file. When you invoke this sub-command, vvsshh opens a pop-up window that shows the user and group that own a file: type the name of the user or group you want to own the file. vvsshh repeats this step for each tagged file. To abort this command, press . PPrriinntt This passes every tagged file to the print spooler for printing. To change the default print spooler, use the IInnssttaallll command's PPrriinntt ssppoooolleerr sub-command. Note that vvsshh simply passes the file to the spooler for printing; you cannot use this to process a file before printing it. Under some operating systems, if you try to use this feature of vvsshh to print a file on a PostScript printer, the printer will hang. We suggest that you use the CCoommmmaanndd feature to print a file on a specialized printer; it's a little more difficult, but it works. Another approach under UNIX or COHERENT is to use the spooler llpp and prepare a special backend script to do the processing automatically. VViieeww This sub-command invokes the default viewer to display the contents of every tagged file. If you try to view the contents of a binary file, the results may not be what you expect. Note that vvsshh will not display a file for which you do not have read permission. To change the default viewer, use the IInnssttaallll command's FFiillee vviieewweerr sub-command. EEddiitt This sub-command invokes the text editor to edit every tagged file. If no files are tagged, then edit only the highlighted file. The default text editor is vvii, which can create problems for persons who do not know how to exit from that editor. To change the default text editor, use the IInnssttaallll command's EEddiittoorr sub- command. Note that vvsshh will not let you edit a file for which you do not have read permission. EEddiitt nneeww This sub-command prompts you to type the name of a file, then invokes the editor for that file. This can be a new file (that is, one that does not yet exist in the current directory), or a file that already exists. Note that if you do try to edit a binary file, you may find yourself running into difficulties. TToouucchh This ``touches'' every tagged file -- that is, it changes the date and time that the file was last modified, just the same as if you had just edited it. Note that you cannot touch a file for which you do not have write permission. TTaagg aallll This sub-command ``tags'' every file in the current directory. This lets you do mass moves or deletions of files. When you tag a file, vvsshh updates the entries FFiilleess ttaaggggeedd and FFiillee ssiizzee ttaa. in the Status Window, to reflect the number and total size of the files you have just tagged. It also prints an asterisk next to the tagged file. When the cursor is in the File Window, you can toggle tagging on the highlighted file by pressing the space bar. Note that the highlighted file is implicitly tagged, whether an as asterisk appears next to it or not. For details, see the section on the Status Window, below. UUnnttaagg aallll This sub-command untags all files that are tagged in the current directory. As noted above, you can toggle the tagging of the highlighted file by pressing the space bar. This command updates the Status Window to reflect your changes. SSeelleecctt This sub-command opens a pop-up window and lets you enter a regular expression; it then tags all files that match the expression. For example, if you enter *.cc, then this sub-command tags all files that end in the string .cc. FFiillee ttyyppee This sub-command prints a summary of information about the type of the highlighted file. FFiillee iinnffoo This sub-command opens a pop-up window that displays the following information about the highlighted file or directory: Filename Filetype I-Node Links Owner UID Owner GID access modification status changed _F_i_l_e_n_a_m_e is the name of the file. _F_i_l_e_t_y_p_e is its type, e.g., directory or regular file. _I-_N_o_d_e gives the number of this file's i-node. _L_i_n_k_s gives the number of links to the file. _O_w_n_e_r _U_I_D and _O_w_n_e_r _G_I_D identify the owner and group that own this file. _a_c_c_e_s_s, _m_o_d_i_f_i_c_a_t_i_o_n, and _s_t_a_t_u_s _c_h_a_n_g_e_d give, respectively, the date and time the file was last accessed, last modified, or last had its status changed. DDiirreeccttoorryy Pressing DD invokes the DDiirreeccttoorryy command. This displays a drop-down menu that lists a set of sub-commands. These sub-commands let you manipulate directories; with them, you can create a directory, remove a directory, change permissions, and other common tasks. You can also manipulate a ``directory stack,'' which lets you jump quickly from one directory to another without having to retype its name. The following discusses each sub-command in detail: CChhaannggee This lets you change the current directory. When you invoke this subcommand, vvsshh displays the following pop-up window: Enter destination path Type the full path name of the directory you wish to enter. If this directory does not exist, or if you cannot access it, vvsshh leaves you in the current directory; otherwise, it moves you to the requested directory. HHoommee This moves you to your home directory. UUsseerr'ss HHoommee This moves you to the home directory of another user. When you invoke this sub-command, vvsshh asks you to name the user whose home directory you wish to enter. To abort, press . If the user you enter does not exist or if you do not have permission to read her home directory, vvsshh leaves you in the current directory; otherwise, vvsshh moves you into that user's home directory. SSeett ddeesstt Set the destination directory. This directory is saved in your .vvsshh file, and is restored the next time you invoke vvsshh. PPuusshh The next three sub-commands makes it easy for you to maneuver your way around the your machine's file system. The work by using what is called a ``directory stack''. In effect, you can tell vvsshh to remember the directory you are in (this is termed ``pushing'' the directory onto the stack); then, when you have switched to another directory, you can returned to this directory simply by ``popping'' this pushed directory from the directory stack. This lets you move around among directories without having to retype them continually. The PPuusshh sub-command pushes the current directory onto the directory stack. When you push a directory, vvsshh increments the number next to the entry DDiirr. SSttaacckk in the Status Window. This tells you how many directories you have pushed onto the directory stack. PPoopp & ccdd This sub-command moves you to the last directory you pushed onto the directory stack. It also removes that directory from directory stack. When you pop a directory from the directory stack, vvsshh decrements the number next to the entry DDiirr. SSttaacckk in the Status Window. This tells you how many directories remain on the directory stack. Note that directories are popped in the order opposite from that in which they were entered. For example, if you pushed directory /uussrr/bbiinn/ssyyss onto the directory stack, then directory /uussrr/lliibb/mmaaiill, then /bbiinn, invoking the PPoopp sub-command will return you to directory /bbiinn, then to /uussrr/lliibb/mmaaiill, and finally to directory /uussrr/iinncclluuddee/ssyyss. SSwwiittcchh This command switches the current directory and the top entry in the directory stack. CCooppyy This copies the highlighted directory plus all of its contents into another directory whose name you type into a pop-up window. It behaves much like the command ccppddiirr. DDeelleettee This deletes the highlighted directory. It does not work with files. If the directory has files in it, vvsshh will prompt you and ask if you want the directory to vanish. If you answer `Y', then vvsshh removes it, files and all -- just as if you had executed the command rrmm -rrff. vvsshh will not delete a directory that you do not own. RReennaammee This sub-command renames the highlighted directory. vvsshh opens a pop-up window and prompts you to type the new name of the directory. Press to abort this sub-command. Note that you can rename only directories that you own. This sub-command does not work with files. CCrreeaattee This sub-command creates a new directory in the current directory. vvsshh prompts you for the name of the new directory, and then creates it. Note that you can create a directory only if you have write permission in the current directory. AAcccceessss This lets you reset the access permission on the highlighted directory. This is the directory equivalent of the FFiillee command's AAcccceessss sub-command. OOwwnneerr This lets you reset the user and group that own a given directory. This is the directory equivalent of the FFiillee command's OOwwnneerr sub-command. Note that only the superuser rroooott can run this command. RReeaadd nneeww This tells vvsshh to re-read the current directory. vvsshh copies the contents of the current directory into memory for its own use; thus, if other people manipulated the directory and its contents after vvsshh read its contents, what you see in the File Window will not reflect the true state of affairs in that directory. If you are working with a directory that is being manipulated by one or more other people, you should issue this command from time to time, to ensure that you are working with an accurate image of the directory's contents. SSwwiittcchh CCWWDD This command switches the current working directory with the destination directory. SSwwiittcchh TTOOSS This switches the destination directory with the directory on top of the stack. IInnffoo This is the same as the FFiillee iinnffoo sub-command under the FFiillee command, described above. OOppttiioonnss Pressing OO invokes the OOppttiioonnss command. Its sub-commands let you perform common system tasks. The following discusses each sub-command in detail: SShheellll This command invokes an interactive shell. When you exit from the shell (either by typing eexxiitt or ), you will be returned to vvsshh. By default, vvsshh invokes the Bourne shell sshh; to change the default shell, use the SShheellll sub-command under the IInnssttaallll command, which is described below. LLoocckk tteerrmmiinnaall This command locks your terminal. When the terminal is locked, no command can entered into it; this lets you walk away from your terminal briefly without worrying whether anyone (e.g., your cat) will do anything untoward under your login. The terminal remains locked until you retype the secret password that you entered when you invoked this sub-command When you invoke this sub-command, a pop-up window appears with the following: Lock Enter Password vvsshh prints a `#' to echo each character that you type. If you wish to abort the LLoocckk sub-command, press . When you have finished entering your password, press . When you have entered the password, the following window appears: This Terminal is locked! Enter Password to unlock or hit return to logoff Type the password to return to vvsshh. If you (or someone else) presses , you will be logged out of your system. MMeessssaaggeess This sub-command lets you receive or ignore messages. A message can be sent to your terminal by another user or another process; for example, the mmaaiill command may send a prompt to your screen when new mail is received. When you invoke this sub-command, vvsshh displays the following pop- up window: Do you want to receive messages ? Yes No Use the -> and <- keys to select the option you want, then press . When you change your message status, the information in the Status Window changes. For example, when you turn off messaging, the following appears at the bottom of the Status Window: You can't get messages For more information, see the description of the Status Window, below. OOnnlliinnee mmaannuuaall This lets you select an entry from your system's on-line manual pages. When you invoke this sub-command, vvsshh displays the following pop-up window: Enter topic, chapter is optional : Topic: Chapter: Type the title and chapter of the entry that interests you. If you change your mind, press to abort this command. SSyysstteemm nneewwss Display news about your current system. IInntteerrnneett nneewwss Invoke a reader for Internet news. EElleeccttrroonniicc mmaaiill Invoke your mail reader. IInnssttaallll Pressing II invokes the IInnssttaallll command. Its sub-commands let you modify some of vvsshh's default behaviors; in particular, it lets you program your function keys to execute some tasks you select with one keystroke. The following discusses each sub-command in detail: DDiissppllaayy This command lets you customize appearance of vvsshh. When you invoke this sub-command, vvsshh displays the following pop-up window: Display Attributes Menubar Menu color Menu attribute Dialog box The entry MMeennuubbaarr lets you select the display attribute for the menu bar, which can be one of bboolldd, uunnddeerrlliinnee, or rreevveerrssee. The entry MMeennuu ccoolloorr lets you set the menu color, which can be either nnoorrmmaall or rreevveerrssee. (This may vary, depending on the type of terminal you are using.) The entry MMeennuu aattttrriibbuuttee lets you set the display attribute for pulldown menus, which can be one of bboolldd, uunnddeerrlliinnee, bboolldd, or nnoorrmmaall. Finally, the entry DDiiaalloogg bbooxx lets you set the display attribute for dialogue boxes, which can be one of bboolldd, uunnddeerrlliinnee, or bbootthh. The best way to see what these commands do is to try them out. As mentioned above, the behavior may change from device to device, depending upon the type of terminal that you are using. FFuunnccttiioonn kkeeyyss This lets you ``program'' up to nine function keys, so you can invoke selected commands easily. Each user can have her own list of programmed function keys. When you invoke this sub-command, vvsshh displays the following drop-down menu: Function keys Function key 1 Function key 2 ... Function key 9 Press 1 through 9 to program the corresponding function key (or use the ^ and v keys to move then highlighting bar, then press ). vvsshh asks you to enter the label for the function key and the command you want that function key to invoke. When you have finished, the new label will appear in the corresponding function-key tag at the bottom of the screen; and when you press that function key, vvsshh executes the corresponding command. For example, to make the command ffoooo one of your function key entries, do the following: First, press II to invoke the IInnssttaallll command. The press kk to invoke the FFuunnccttiioonn kkeeyyss sub-command. When the function-keys drop-down menu appears, press 22, for function-key FF22. When the label pop-window appears, type ffoooo into the first slot, which holds the label. Press to jump to the second slot, which holds the command to execute, then type /uussrr/bbiinn/ffoooo. When you have done typing, press . As you can see, the FF22 stub at the bottom of the screen shows ffoooo; and when you press FF22, vvsshh launches you into ffoooo. You can program the first nine function keys to work in the same way. You can embed the token %FF as a placeholder for the current file. For example, to count the number of lines in the current file, put the following command into a function-key definition: wc -l %F Because some computers do not have function keys (e.g., the NeXT machine), you can also use the number keys to execute commands installed on the function keys. SShheellll This sub-command lets you set the default shell that vvsshh runs when you invoke its SShheellll command. When you invoke this sub- command, vvsshh displays the following pop-up menu: Enter command to run a shell /bin/sh Type the name of the shell that you want, and press . (You can enter another program if you like, but you may get some strange results if you do.) EEddiittoorr This lets you set the editor that vvsshh invokes when you select the EEddiitt sub-command under the FFiillee command. When you invoke the EEddiittoorr sub-command, vvsshh displays the following pop-up window: Enter command to run an editor vi Type the editor that you want; then press . PPrriinntt ssppoooolleerr This lets you set the spooler that vvsshh invokes when you select the PPrriinntt sub-command under the FFiillee command. When you invoke the PPrriinntt ssppoooolleerr sub-command, vvsshh displays the following pop-up window: Enter command to run a print-spooler lpr -B Enter the spooler that you want. Beginning with release 2.7 of vvsshh, this feature works with pipes. vvsshh understands that the token %FF represents the current file. For example, if you have a PostScript printer, you will want every file to be processed by the command ppssffiilltt before you print it. Thus, enter the command: psfilt %F | lp This tells vvsshh to filter each file through ppssffiilltt to turn it into PostScript, then pipe the output to the spooler llpp. FFiillee vviieewweerr This lets you set the viewer that vvsshh invokes when you select the VViieeww sub-command under the FFiillee command. When you invoke the FFiillee vviieewweerr sub-command, vvsshh displays the following pop-up window: Enter command to run a file view utility more Enter the pager you want, such as mmoorree or lleessss. FFiillee aaccttiioonn As noted above, vvsshh has a list of default actions that it takes when you select a file of a given type. For example, if you invoke the FFiillee command, move the highlighting bar to a file with the suffix .cc and press , vvsshh by default invokes the C compiler cccc to compile that file. vvsshh stores the list of its default actions. in the file .vvsshh in your home directory. The FFiillee aaccttiioonnss sub-command invokes a special editor with which you can edit this list. When you invoke this option, vvsshh displays the following pop-up window: Edit actions list Configure action Use the ^ and v keys to move the highlighting bar to the item you want; then press . When you select EEddiitt aaccttiioonnss lliisstt, vvsshh displays a pop-up window that contains all of the default actions. The syntax of the default actions is described above. Use the ^ and v keys to move the highlighting bar to the action you wish to edit. To erase the current line, press ; to open a new line, press . To modify the line that is currently highlighted, press . When you do so, the highlighting bar disappears and a cursor appears. Use the <- and -> keys to move the cursor to the point you wish to change; typing inserts new text into the command, whereas pressing erases text. When you have finished modifying the current line, press . To abort modifying the current line, press . When you have finished modifying the action list, press . vvsshh records your changes into file .vvsshh, and returns you to the File window. When you select the option CCoonnffiigguurree aaccttiioonn, vvsshh displays a window with the prompt Show file actions before execution ? The cursor is under the response yy, for yyeess. If you accept this option, vvsshh will prompt you for your confirmation before it performs a default action. If you want vvsshh simply to go ahead and perform its default without asking for your approval, press the -> key to move the cursor to the option nn, for nnoo, and press . SSyyss. nneewwss rreeaaddeerr Tell vvsshh what system news program you want it to invoke by default. IInntteerrnneett nneewwss Tell vvsshh what Internet news reader you want it to invoke by default. EElleeccttrroonniicc mmaaiill Tell vvsshh what mail reader you want it to invoke by default. CCoommmmaanndd The command CCoommmmaanndd lets you send a command directly to a shell. This lets you invoke commands that ordinarily are not available through vvsshh. Suppose, for example, that you decided you wanted to play a session of the game tteettrriiss, and that you have not yet programmed tteettrriiss as one of your function keys. Press CC to invoke CCoommmmaanndd. vvsshh moves the cursor moves to the bottom of the screen, and erases the row of boxes that describe the function keys. You can now type the command you want, in this case /uussrr/ggaammeess/tteettrriiss. To run the command, press ; to abort entering a command and return to vvsshh (such as when you see the boss coming), type . When you press , vvsshh runs the command you typed. When you have finished playing tteettrriiss and have exited from it, vvsshh clears the screen and displays the message: Hit any key to continue ... When you press a key, vvsshh redraws itself on your screen and returns the cursor to the File Window. CCoommmmaanndd remembers the last 40 commands that you have issued. To invoke a command that you previous issued through CCoommmmaanndd, press the ^ key. The last command you issued will appear in the command slot. If you continue to press the ^ key, others commands appear, in reverse order from when you issued them. If you overshoot the command that you want to re-run, press the v key to walk back down the list of previously issued commands. When you find the previously issued command that you wish to rerun, just press and vvsshh runs it again. You can also edit a previously issued command. The following gives lists the available editing commands: <- Move the cursor one character to the left -> Move the cursor one character to the right Delete the character to the left Delete the character to the left Delete the character over the cursor Go to last character of the command Go to first character of the command A command can use environmental variables, such as $HHOOMMEE. vvsshh will expand all environmental variables correctly before it tries to execute the command. You can also embed the following tokens in a command: %FF Represent the currently highlighted file %TT Represent all tagged files %DD Represent the destination directory For example, the command cp %T %D copies all tagged files into the destination directory. RReeffrreesshh The command RReeffrreesshh redraws the screen. It does no other work. This is helpful if your screen has become jumbled or scrambled for any reason -- such as a message being written onto your screen by another user. To invoke this command, type RR. vvsshh pauses very briefly, then the screen flickers as vvsshh redraws. If the screen had been confused for any reason, invoking this command should restore to its proper state. If you need to refresh the screen while a pop-up menu or a pop-up window is active, press . EExxiitt The command EExxiitt exits you from vvsshh. To exit from vvsshh, press EE. In response, vvsshh pops the following window onto your screen: Do you really want to quit? Yes No The window is in reverse video, for emphasis. The option YYeess is underlined, to show that it is the default choice. If you really do wish to exit, press ; and vvsshh returns to the shell. If you changed your mind, however, and do not wish to exit, press the -> key to change the option; this will shift the underlining from option YYeess to option NNoo. Pressing enter at this point selects the NNoo option; vvsshh in response removes the pop-up window from the screen and returns you to the File Window. If you change your mind again, though, and really do wish to exit, then press the <- key. The underlining shifts back to the YYeess option; and when you press you exit from vvsshh and return to the shell. _S_t_a_t_u_s _W_i_n_d_o_w The Status Window is the lower window on the right side of the screen. The cursor never enters this window; rather, this window gives information about how vvsshh is functioning, and in particular about the files that are currently displayed in the File Window. The Status Window contains the following entries: FFiilleess This gives the number of files being shown in File Window. Note that this is all files that can be scrolled through that window, _n_o_t the files that are shown in that window at this moment. FFiillee ssiizzee This gives the total size, in bytes, of all files available through in the File Window. FFiilleess ttaaggggeedd This gives the number of files that you have tagged. See the description of the FFiillee command, above, for details. FFiillee ssiizzee ttaa. This gives the total size of all tagged files. See the description of the FFiillee command, above, for details. DDiirr. SSttaacckk This gives the number of directories that currently reside on the directory stack. As noted above, you can ``push'' directories onto the directory stack or ``pop'' them from it. By doing so, you have an easy way to jump about from one directory to another, without having to type directory names repeatedly. See the above description of the DDiirreeccttoorryy command for details. Note that you can have a maximum of ten directories on the stack. MMaaiill This line indicates whether you have mail waiting to be read. If you don't, this line will say None whereas if you do, the line will say Avail and flash at you. If new mail arrives, vvsshh flashes New in that slot. _m_a_i_l_b_o_x This line gives the name of your mailbox -- that is, the file that mmaaiill reads. _m_e_s_s_a_g_e_s This indicates whether your terminal can receive messages -- e.g., whether a message will pop up on your screen if someone wishes to communicate with you via the commands wwrriittee or ttaallkk. _F_u_n_c_t_i_o_n _K_e_y_s The bottom of the screen show nine small boxes in reverse video. These are labelled FF11 through FF99. If you have defined the key using the FFuunnccttiioonn KKeeyy command, vvsshh displays the box the tag that you gave that key. For example, in our above example we set key FF11 to run the command ppss -aa, and gave it the tag ppss. At the bottom of the screen, the box labelled FF11 should show ppss. For more details, see the description of the FFuunnccttiioonn KKeeyy command, above. _C_o_n_f_i_g_u_r_a_t_i_o_n _F_i_l_e vvsshh reads the file .vvsshh to configure itself. A typical .vvsshh file reads as follows: cwd=/v/fwb shell=/bin/ksh editor=me print-spooler=hpr -B view=more make=make me-disp-attr=reverse pd-disp-color=normal pd-disp-attr=bold se-disp-attr=underline pfkey1= mail mail pfkey9=tetris /usr/games/tetris cmd= tetris tetris echo foo ccwwdd points to the current working directory, that is, the directory in which you have last worked with vvsshh. vvsshh returns you to that directory when you next invoke the shell. sshheellll, eeddiittoorr, pprriinntt-ssppoooolleerr, vviieeww, and mmaakkee give, respectively, the shell, editor, print-spooler, viewer, and make utility that you selected with the IInnssttaallll command. If you change one of these values, the behavior of vvsshh changes to reflect the change. For example, if you change the line editor=me to editor=vi then vvsshh will invoke vvii the next time you request the FFiillee command's EEddiitt sub-command. mmee-ddiisspp-aattttrr, ppdd-ddiisspp-ccoolloorr, ppdd-ddiisspp-aattttrr, and ssee-ddiisspp-aattttrr give the display features for, respectively, the menu bar, the menu color, the menu attribute, and the dialogue box. The lines ppffkkeeyy11 through ppffkkeeyy99 set the behavior of the function keys. The first seven characters after the equal sign `=' give the text that appears in stub at the bottom of the screen. Everything after the first seven characters describes the command to be executed when you press that function key. The text that follows the line ccmmdd= lists the commands that you have executed with the command CCoommmmaanndd. You can embed the following tokens in a command: %FF Represent the currently highlighted file %TT Represent all tagged files %DD Represent the destination directory These are used just as they are with the CCoommmmaanndd command, described above. _C_o_m_m_a_n_d-_l_i_n_e _O_p_t_i_o_n_s vvsshh recognizes the following command-line options: -dd_d_i_r_e_c_t_o_r_y Enter vvsshh and begin to work in _d_i_r_e_c_t_o_r_y. If no _d_i_r_e_c_t_o_r_y is named, then begin work in the current directory. vvsshh normally begins in the last directory used in your last vvsshh session. -ee Do not use the graphic character set. This option coarsens the appearance of vvsshh, but gives it a fighting chance to run on cheap terminals that do not implement the full alternate character set of the DEC VT-100 terminal. -ii Restrict the user's ability to run the IInnssttaallll command. In this mode, vvsshh can be used only as configured by someone else. This is helpful if you are setting up vvsshh for a naive user whom you do not want to overstep her boundaries. -rr Restrict the shell. This option turns off the following: -> The command CCoommmmaanndd -> No interactive shell can be called from the OOppttiioonnss menu -> Most options from the DDiirreeccttoorryy menu -> Most options from the IInnssttaallll menu This lets the system administrator restrict the activity of users fairly strongly. -tt This command-line option tells vvsshh to assume the entire VT-100 mapping. This is useful with terminals whose system definitions are incomplete, or the alternate character set is ignored. _F_i_l_e_s $HHOOMMEE/.vvsshh -- Configuration file _N_o_t_e_s vvsshh was written by Udo Munk (udo@umunk.gun.de). This manual page was written by Fred Butzen (fred@lepanto.chi.il.us), adapted from his manual for the COHERENT operating system. This manual page is copyright (c) 1994, Mark Williams Company, and is distributed with its permission.