Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Menu of Linux CLI Apps (Command Line Applications for Linux) written in BASH script.
Shell
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
CODE_HISTORY
COPYING
EDIT_HISTORY
LIST_APPS
README
cliappmenu.sh
lib_cli-common.lib
lib_cli-menu-cat.lib
lib_cli-web-sites.lib
mod_apps-audio-video.lib
mod_apps-databases.lib
mod_apps-development.lib
mod_apps-education.lib
mod_apps-environment.lib
mod_apps-filedir.lib
mod_apps-games.lib
mod_apps-graphics.lib
mod_apps-internet.lib
mod_apps-network.lib
mod_apps-office.lib
mod_apps-packages.lib
mod_apps-sample-template.lib
mod_apps-screen-tools.lib
mod_apps-screens.lib
mod_apps-system.lib
mod_apps_office.lib

README

#!/bin/bash
#
# This program, README is under copyright.
# ©2015 Copyright 2015 Robert D. Chin (rdchin at yahoo.com).
#
# Usage: sh README
#
# +----------------------------------------+
# |         Function f_script_path         |
# +----------------------------------------+
#
#  Inputs: $BASH_SOURCE (System variable)
#    Uses: None
# Outputs: SCRIPT_PATH
#
f_script_path () {
# BASH_SOURCE[0] gives the filename of the script.
# dirname "{$BASH_SOURCE[0]}" gives the directory of the script
# Execute commands: cd <script directory> and then pwd
# to get the directory of the script.
# NOTE: This code does not work with symlinks in directory path.
#
SCRIPT_PATH=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
} # End of function f_script_path
#
# **************************************
# ***     Start of Main Program      ***
# **************************************
#
SCRIPT_PATH="~" #Initialize path.
#
THIS_FILE="README"
#
# Set SCRIPT_PATH to directory path of script.
f_script_path
#
clear
# sed substitutes null for #: at beginning of each line so it is not printed.
# less -P customizes prompt for %f <FILENAME> page <num> of <pages> (Spacebar, PgUp/PgDn . . .)
sed -n 's/^#://'p $SCRIPT_PATH/$THIS_FILE | less -P 'Page '%dm' (Spacebar, PgUp/PgDn, Up/Dn arrows, press q to quit)'
#
# The "#:" at the beginning of lines below are used 
# to delineate the Help Instructions.
#
#: +----------------------------------------+
#: |            Table of contents           |
#: +----------------------------------------+
#:
#:   Revision number and Revision Date
#:   Brief Description
#:   HOW-TO Install this script
#:   FILE LOCATIONS of cliappmenu project
#:   HOW-TO Set the PATH with file locations
#:   Why did I write this script?
#:   Why is this menu so complex?
#:   Script features
#:   HOW-TO Add a new menu item
#:   Trouble-shooting a new menu item
#:   Known problems and limitations
#:   For more help
#:   List of variables
#:   List of Special Menu Item Markers
#:
#:
#: +----------------------------------------+
#: |    Revision number and Revision Date   |
#: +----------------------------------------+
#:
# Calculate revision number by counting all lines starting with "## 2015".
# grep ^ (carot sign) means grep any lines beginning with "##2015".
# grep -c means count the lines that match the pattern.
#
REVISION=$(grep ^"## 2015" -c EDIT_HISTORY) ; REVISION="2015.$REVISION"
REVDATE="January-24-2015 13:23"
#:
#: After each edit made, update the CODE_HISTORY of code changes/edits.
#:
#: If you are releasing a new release version of the project, then the files
#: CODE_HISTORY and EDIT_HISTORY must have the project revision date and
#: project version number updated also.
#: 
#:
#: +----------------------------------------+
#: |            Brief Description           |
#: +----------------------------------------+
#:
#: Script cliappmenu.sh is a menu of CLI applications and commands
#: to help CLI newbies to discover what a command line can do.
#:
#: The typical user is anyone who wants to learn about what types of
#: command line applications are available.
#:
#: Admittedly, the some of the files for this script are big 50-100 KB,
#: and this script has not been tested on PCs slower than 1 GHz.
#:
#: Start by downloading the file "cliappmenu.sh" and follow the instructions
#: to install the application.
#:
#: You can either download all the script project files at once, or
#: just download the file "cliappmenu.sh" and use the script to interactively
#: download just the features you wish to use.
#:
#:
#: +----------------------------------------+
#: |       HOW-TO Install this script       |
#: +----------------------------------------+
#:
#: The simplest method to install is to download the file "cliappmenu.sh"
#: to the directory of your choice. This is the main script file.
#:
#: Run the script by typing "bash cliappmenu.sh".
#: 
#: When running the script for the first time, the mini-installer will
#: automatically download any required library files.
#:
#: Additional software library module files will be downloaded on-demand.
#:
#: If you wish, you may also download all the files at once and then
#: decide which library module files you wish to discard.
#:
#: +----------------------------------------+
#: |  FILE LOCATIONS of cliappmenu project  |
#: +----------------------------------------+
#:
#: The main script, cliappmenu.sh may be located in a different directory
#: from the rest of the files, if you wish. Or you can put all files in the
#: same folder/directory.
#:
#: Common locations: User's home directory /home/<username>, /usr/local/bin,
#:                   /opt directories.
#:
#: Specify the folder/directory where the script cliappmenu.sh file
#: resides by setting $MAINMENU_DIR variable within function
#: f_initvars_menu_app in the script file, cliappmenu.sh.
#: _______________________________
#:
#: You may have all the script's files in a single directory or have the
#: library files and support files in their own separate directory from
#: the "cliappmenu.sh" script file.
#:
#: If you want to use the optional suggested default directory:
#: /<MAINMENU_DIR>/cli-app-menu
#: it should contain files: EDIT_HISTORY, COPYING, README, LIST_APPS,
#: library files (lib_cli-*.lib) and module library files (mod-apps*.lib).
#:
#: Specify the folder/directory where the library and module library files
#: reside by setting $THIS_DIR variable within function f_initvars_menu_app
#: in the script file, cliappmenu.sh.
#: _______________________________
#:
#: The configuration file: .cliappmenu.cfg 
#: is a hidden file which resides in the user's home directory.
#: _______________________________
#:
#:
#: Append the directory name to your environment $PATH:
#: Edit your /home/<username goes here>/.bashrc or .bash_profile or .profile
#: file and add the directory by adding the lines to the end of the file,
#:                   PATH=$PATH:<User-chosen directory path>/cli-app-menu
#:                   export PATH
#:
#: When cliappmenu.sh is run i.e. "bash cliappmenu.sh",
#: then you can download selected module files, "mod_apps-*.lib."
#: The module files contain sub-menus of various applications.
#: A list of applications is in LIST_APPS.
#:
#: You may download all or as few module files as you wish.
#: You may delete any module files that you do not need.
#:
#:
#: +----------------------------------------+
#: | HOW-TO Set the PATH with file locations|
#: +----------------------------------------+
#:
#: The session-wide (pertaining to a specific user only, not system-wide)
#: setting of the PATH variable can be done in several ways.
#:
#:
#: 1. Within a GUI environment using a terminal in a window:
#:    reads ~/.bashrc.
#:
#: 2. Within a pure CLI environment without a GUI (Gnome, KDE, XFCE, etc):
#:    reads ~/.bash_profile, ~/.bash_login
#:    Note: If you invoke a GUI environment using "startx" from the CLI,
#:          then you must edit
#:          both    ~/.bashrc and ~/.bash_profile files
#:          or both ~/.bashrc and ~/.bash_login   files.
#:
#: 3. Within a pure CLI environment without a GUI (Gnome, KDE, XFCE, etc):
#:    reads ~/.profile.
#:    Note: If you invoke a GUI environment using "startx" from the CLI,
#:          then you must edit
#:          both    ~/.bashrc and ~/.profile files.
#:
#: 4. Non-interactive, non-login shell environment:
#:    reads the file contained in the variable BASH_ENV, if exists.
#:__________________________________________
#:
#: Detailed information about options 1-4.
#:
#: 1. Within a GUI environment using a terminal in a window:
#:    Only for Bash shells in a graphical environment in a desktop session.
#:    (i.e. Xterm window session already logged in through the GUI Gnome, KDE).
#:    WILL NOT WORK in a pure CLI environment login shell.
#:    (i.e. ~/.bashrc will not work in a pure CLI environment login shell).
#:
#:    /home/<username_goes_here>/.bashrc
#:                             ~/.bashrc
#:
#:    Edit the ~/.bashrc file
#:    and add the following line to the end of the file.
#:                             PATH=$PATH:$HOME/cli-app-menu
#:
#:
#: 2. Within a pure CLI environment without a GUI (Gnome, KDE, XFCE, etc):
#:    Only one of these files needs the new PATH statement.
#:
#:    Will work in most shells in either
#:    a graphical environment in a desktop session (i.e. Xterm window session).
#:    or a pure CLI environment login shell.
#:
#:                             ~/.bash_login
#:                             ~/.bash_profile
#:
#:    Edit either the ~/.bash_login or ~/.bash_profile file
#:    and add the following line to the end of the file.
#:                             PATH=$PATH:$HOME/cli-app-menu
#:
#:
#: 3. Within a pure CLI environment without a GUI (Gnome, KDE, XFCE, etc):
#:    The ~/.profile is read last after the ~/.bash_login and ~/.bash_profile.
#:
#:    WARNING: Ubuntu ignores ~/.profile
#:    if ~/.bash_login or ~/.bash_profile exists.
#:    So edit ~/.profile only if you do not have either of the above files.
#:
#:    Will work in most shells in either
#:    a graphical environment in a desktop session (i.e. Xterm window session).
#:    or a pure CLI environment login shell.
#:
#:    /home/<username_goes_here>/.profile
#:                             ~/.profile
#:
#:    Edit the ~/.profile file and add the line below to the end of the file.
#:                             export PATH="$PATH:$HOME/cli-app-menu"
#:
#:
#: 4. Non-interactive, non-login shell environment:
#:    reads the file contained in the variable BASH_ENV, if exists.
#:
#:    (Not pertinent or relevant since this script is interactive).
#:    Included here to document another way to set the PATH variable.
#:
#:
#: +----------------------------------------+
#: |      Why did I write this script?      |
#: +----------------------------------------+
#:
#: I wrote this script for 3 reasons:
#: 1. I wanted a categorized list of command line applications.
#: 2. I wanted to learn bash scripting, i.e. functions, looping, tests.
#: 3. I couldn't find a cli menu to launch cli apps on the web so I thought I'd
#:   give back to the community and perhaps others could build on and improve
#:   on what I've started.
#:
#: Please enjoy . . . bob chin (2015).
#:                    rdchin at yahoo.com.
#:
#:
#: +----------------------------------------+
#: |      Why is this menu so complex?      |
#: +----------------------------------------+
#:
#: *The menus are designed to be quite extensible and are easily edited.
#:
#: *Menu item choices are added with a simple comment line.
#:
#: Why not use the select command? Why not be a lazier pattern matcher?
#:
#: *I used to be a MUMPS programmer and QA analyst.
#:
#: *I used to create menus in this style in MUMPS and being a QA person, my job
#:  was to try to break programs. So that's why I tried to make pattern matching
#:  reasonably robust.
#:
#:       Please see function "f_menu_item_valid"
#:       in library module "lib_cli-common.lib."
#:
#: *My QA background also explains this crazy documentation of everything along
#:  with the fact that I am just learning bash scripting.
#:
#:
#: +----------------------------------------+
#: |             Script features            |
#: +----------------------------------------+
#:
#: *Optimized for 80x24 display or 640x480 pixel displays.
#:  Run-time displayed text is no wider than 80-columns across.
#:  Run-time menus are no longer than 16 items for 24 row displays.
#:  Although the game, "Pacman for Console" needs 32 rows minimum to play.
#:
#: *You can change it to display more rows (lines) by changing MENU_ITEM_MAX
#:  within function, f_show_max_menu_items in file, lib_cli-common.lib.
#:  Default MENU_ITEM_MAX=16, can change to MENU_ITEM_MAX=<Max. number of lines>.
#:
#: *You can get application help by 'man' or '--help' from the menu prompt.
#:
#: *If an application is not installed, the script can install it using package
#:  managers apt, rpm, slackpkg, pacman or for specific apps, download it from
#:  a web site for manual installation.
#:
#: *If an application needs sudo, script will automatically give a sudo option.
#:
#: *Designed for ease of extensibility and menu editing. No menu item numbers,
#:  and no custom pattern matching is required for each menu item added.
#:
#: *Menu item option numbers in menu display are automatically generated.
#:
#: *More fun than just a list of CLI applications!!!
#:
#:
#: +----------------------------------------+
#: |       HOW-TO Add a new menu item       |
#: +----------------------------------------+
#:
#: New category menus are in the file lib_cli-menu-cat.lib.
#: The template to add a new category menu is:     f_menu_cat_sample_template
#: The template to add a new sub-category menu is: f_menu_scat_sample_template
#:
#: New application menus are in the file lib_cli-menu-apps.lib.
#: The template to add a new application menu is:  f_menu_app_sample_template
#:
#: In brief:
#
#: 1. The menu code is contained in functions with example templates. 
#:
#: 2. If you are adding a NEW APPLICATION within an application menu,
#:    a) An application menu can have a **MAXIMUM OF 16** items.
#:       If you have more, please create a new sub-menu or sub-category menu.
#:       This is to comply with a 80x24 line screen which is standard.
#:    b) decide what row in the menu that you want to place the new menu item.
#:    c) Add the new menu item see below for menu format details.
#:    d) Each Special Menu Option Marker MUST be unique for each menu.
#:
#:    Note: Please see bottom of this document
#:          for a list of Special Menu Item Markers.
#:
#:    e) Create a menu item and possibly any custom functions needed.
#:       Example:
#:    f_menu_cat_sample_template () {
#:          f_initvars_menu_app "BXX"
#:          until [ "$BXX" = "0" ]
#:          do    # Start of <Sample Template> Application Category until loop.
#:    #0^0^0^0^0 #MXX appname1  - Description Application1 name.
#:    #1^0^0^0^1 #MXX appname2  - Description Application2 name.
#:    #0^1^0^3:NC^0 #MXX appname3  - Description Application3 name.
#:    #1^1^1^19^1 #MXX appname4  - Description Application4 name.
#:
#:    appname1 - Has no custom functions before running application, appname1.
#:
#:    appname2 - Has <field 1> a custom function f_appname2 to run before
#:               running application, appname2.
#:               Will display a "Press 'Enter' key to continue." message after
#:               running application, appname2.
#:
#:    appname3 - Has <field 2> custom install function, f_install_appname3
#:                will run before running application, appname3.
#:
#:               Custom install functions run if the distro's software package
#:               manager fails to install the application if it is missing.
#:               Usually the custom install function will download, compile
#:               source code from the software maintainer's web site.
#:
#:               Has <field 4> a Quit-Code "3:NC" which displays message below
#:               without clearing screen:
#:
#:                                To quit "appname3", type "Q" or <F10>
#:
#:    appname4 - Has <field 1> a custom function f_appname2 to run before running
#:               application, appname2. This will run before any custom install
#:               function.
#:
#:               Also has <field 2> custom install function,
#:               f_install_appname3 which will run before running appname3.
#:
#:               Custom install functions run if the distro's software package
#:               manager fails to install the application if it is missing.
#:               Usually the custom install function will download, compile
#:               source code from the software maintainer's web site.
#:
#:               Also has <field 4> a Quit-Code "19" which displays message below
#:               after clearing the screen:
#:
#:                         To quit "apapname4", type <Ctrl>-Z or <Ctrl>-C
#:
#:               Also has <field 5> which displays:
#:                         "Press 'Enter' key to continue".
#:
#:    f) Format of Menu: 
#: <Menu item options> <SPACE> <Special menu item marker> <SPACE> 
#: <Application name> <SPACE> - <SPACE> <Description>.
#:
#: Format of menu item options:
#: "#f_funct1^f_funct2^f_funct3^Quit-Code^PRESS_KEY #MXX App Name - Description."
#:   field-1  field-2  field-3  field-4   field-5   Marker 
#:
#: field 1    *if 1 then function name is f_<MENU_ITEM_NAME>.
#: 1/0/string *if <string> then function name is <string>.
#:            *if 0 then ignored. No function is run.
#:
#: field 2    *if 1 then function name is f_install_<MENU_ITEM_NAME>.
#: 1/0/string  A function to install an application may be specified here.
#:            *if <string> then function name is <string>.
#:            *if 0 then ignored. No function is run.
#:
#:             This custom installation function is called only after the
#:             distro's software package manager has failed to install the
#:             application usually because the application is not pre-packaged
#:             for the linux distro (distribution).
#:             See f_application_install for more details.
#:
#:             If install fails, then this custom install function will be run
#:             to download the source code from the application maintainer's
#:             web site then compiles and installs the application.
#:
#: field 3    *if <string> then function name is <string>.
#: 0/string   *if 0 then ignored. No function is run.
#:             This function is run after displaying the Quit-Code on screen.
#:
#: field 4    *Quit-Code. See f_quit_app_clause for more details.
#: string
#:
#: field 5    *Sets PRESS_KEY=0/1 to display "Press 'Enter' key to continue".
#: 1/0         See f_press_key for more details. This allows the user to see any
#:             messages displayed by the application after it has been run.
#:             Without PRESS_KEY=1, the screen is cleared for the menu to display
#:             and the user would miss any messages.
#:
#:             This setting may be overridden by any custom functions which
#:             follow. It is useful if the custom function displays a help
#:             message for the menu to display so you don't have to worry
#:             about coding for PRESS_KEY within that custom function.
#:
#:             This can be used to initialize PRESS_KEY as it is set before any
#:             custom functions in fields 1, 2, or 3 are run.
#:
#:    g) Update the file LIST_APPS by selecting "Configure" THEN "LIST_APPS"
#:       in the Main Menu. LIST_APPS is used by the Main Menu item "List
#:       Applications" to show a list of all applications available whether
#:       the app module is downloaded or not.
#:
#: 3. If you are adding a NEW CATEGORY or SUB-CATEGORY menu, please create them
#:    within the appropriate module file mod_apps-*.lib and please use the
#:    templates for this very purpose available in mod_apps_sample_template.
#:    Template: f_menu_scat_sample_template.
#:
#: 4. If you are creating a NEW MAJOR CATEGORY, 
#:    a) Create a new corresponding module file, mod_apps-*.lib.
#:       Use template f_menu_scat_sample_template to create the menu structure.
#:    b) Add the new menu item in lib_cli-menu-cat.lib.
#:    c) ALSO UPDATE the README file, "List of Special Menu Item Markers".
#:    d) Update the function f_create_LIST_APPS within lib_cli-common.lib with
#:       the name of the new module file so that the text file LIST_APPS can be
#:       re-created.
#:    e) Edit functions f_ask_which_module_download, f_module_match in 
#:       file lib_cli-common.lib.
#:
#: 5. The file LIST_APPS may be automatically updated by copying all the 
#:    mod_apps-*.lib files to the current directory and by selecting
#:    "Configure" then "LIST_APPS" in the Main Menu.
#:
#:
#: +----------------------------------------+
#: |   Trouble-shooting a new menu item     |
#: +----------------------------------------+
#:
#: 1. Some or all of the menu items are missing.
#:
#:    If you copied from a template or another menu, check the markers.
#:    Check the Special Menu Item Markers for consistency.
#:    In the example below, #MXX is before each menu item and in DELIMITER.
#:    Note: DELIMITER has #MXX twice, separating it into 3 fields for awk.
#:
#:     Example: "MXX" is the Special Menu Item Marker.
#:              In this example app2name (with "MAA") will not show in the menu.
#:
#:    f_initvars_menu_app "MXX"
#:    until [ "$MXX" = "0" ]
#:          #MXX appname  - Description Application1 name.
#:          #MAA app2name - Description Application2 name.
#:    DELIMITER="#MXX" #MXX This 3rd field prevents awk from printing this line
#:                          into menu options.
#:    read MXX
#:    f_menu_item_process $AEE  # Outputs $MENU_ITEM.
#:    unset MXX MENU_ITEM  # Throw out this variable.
#:
#: 2. Impossible to exit a menu.
#:
#:    *Somewhere in the mod_apps-*.lib file, there is a syntax error.
#:    *Check the Special Menu Item Markers for consistency. (See point 1).
#:     Example: If "unset MAA" instead of "unset MXX" then exiting menu using
#:              "(R)eturn" will not work, while "0" (zero) will still exit.
#:
#: 3. Strange menu results, menu does not display.
#:    *If you forget the closing "}" to a function, you'll get strange results.
#:    *If you forget a comment "#" marker i.e. "} End of function", then menu
#:     may not even display.
#:
#: 4. Only a few of the Menu items display when the number or letter is selected.
#:    Check any instance of echo with only a single double-quotation mark.
#:    Change from: echo "I forgot to type in the trailing double-quote.
#:    Change   to: echo "I forgot to type in the trailing double-quote."
#:
#:
#: +----------------------------------------+
#: |     Known problems and limitations     |
#: +----------------------------------------+
#:
#: 1. All associated files for this script must be in the same folder,
#:    except for cliappmenu.sh which may be in a separate folder. 
#:
#: 2. f_choice_array needs all menu items to have 1 or 2 unique words in a name
#:    within the same menu.
#:
#:    i.e. Acceptable names for a menu    Unacceptable names for a menu 
#:
#:      WAN Applications Menu          WAN Applications Menu
#:      ip route                       ip route list
#:                                     ip route flush
#:
#: 3. Option for automatic software installation only for distributions which
#:    use apt, rpm, slackpkg, and pacman; all others must install manually.
#:
#: 4. For Slackware-based distros which use slackpkg, even though you can
#:    install software, I have not figured out a way to determine if
#:    "slackpkg install <package name> was successful or not. 
#:    The command results in error code zero $?=0 even if install fails.
#:    As a result, I commented out the code which traps slackpkg installation
#:    errors, shows an error message and asks if you want to download the
#:    source code from the developer's web site.
#:
#:
#: +----------------------------------------+
#: |               For more help            |
#: +----------------------------------------+
#:
#: Please refer to the "Main Menu" of the script.
#:
#: *How to get help on an application is under "Help and Features".
#:
#: *Programming help and notes are under "Documentation" 
#:
#: *There are also example templates to create additional category and
#:  app menus within the script.
#:
#:
#: +----------------------------------------+
#: |            List of variables           |
#: +----------------------------------------+
#:
#: ANS           - String; Answer to question.
#: APP_NAME      - String; application name also command to run.
#: APP_NAME_INSTALL - String; used when APP_NAME does not match actual package
#:                 name to be installed. i.e. APP_NAME="trek" but package name
#:                 is actually "bsdgames". So to install "trek" game, you must
#:                 instead install package "bsdgames", a collection of games.
#: APP_NAME_SUDO - String; just app name when APP_NAME starts with sudo.
#: APP_NAME_TMP  - String; just app name when APP_NAME has options-params.
#:                 Category Menus where XNUM is a number.
#: B[A-Z][A-Z]   - String; User choice in Applications Category Menu (alpha-
#:                 numeric).
#:                 ' 0' means quit menu.
#:                 '-1' stay in menu loop, legitimate choice.
#: BASH_SOURCE   - String; System variable, gives filename of script.
#: BASH_VERSION  - String; System variable.
#: BCOLOR        - String; font color of background of text (highlight).
#: BRANCH        - String; Main, Testing, Develop. Branch of GitHub project.
#: CHOICE[XNUM]  - Array of string elements. User choice in Applications and
#: CNT           - Number; Scratch variable.
#: COLOR         - String; Font color to be set as FCOLOR, BCOLOR, ECOLOR, etc.
#: DELIM         - String; Delimiter prefix without the hash "#" mark.
#: DELIMITER     - String; Delimiter prefix of menu option string.
#: ERROR         - Number; Save error code number from $? function.
#: ECOLOR        - String; Font color of error messages.
#: FCOLOR        - String; Font color of foreground of text.
#: GUI           - String; GUI-type available to user (text, whiptail, dialog).
#: INIT_VAR      - String; Variable to initialize to a value.
#: INSTALL_ANS   - String; YES/NO Does user want to install app?
#:                 Passed from f_application_error to f_application_run.
#: M[A-Z][A-Z]   - String; User choice in Applications Menu (alpha-numeric).
#:                 First few letters of user choice from menu.
#:                 ' 0' means quit menu.
#:                 '-1' stay in menu loop, display "Press enter key to continue."
#: MAINMENU_DIR  - Directory containing cliappmenu.sh.
#: MAX           - Number; Maximum option choice number in menu.
#: MENU_ITEM     - String; User choice, f_menu_item_process (alpha-numeric).
#:                 ' 0' means quit menu.
#:                 '-1' stay in menu loop, legitimate choice.
#: MENU_ITEM_MAX - Number; Maximum number of menu items displayed on a screen.
#: MENU_ITEM_OPT - String; Menu item options each field parsed by "^".
#: MENU_TITLE    - String; Title of menu.
#: MOD_FILE      - Module file name.
#: MOD_FUNC      - Module function name.
#: NEW_DIR       - String; New directory to be created.
#: NO_CLEAR      - String; Derived from 4th field of MENU_ITEM_OPT.
#:               - Do not blank screen when quitting application.
#: PATH          - String; System variable.
#: PRESSKEY      - Number: Ask "Press Enter key to continue".
#:                 '0' Do not ask "Press Enter key to continue".
#:                 '1' Ask "Press Enter key to continue".
#: PROJECT_REVDATE - String; Revision date of entire project from EDIT_HISTORY.
#: PROJECT_REVISION - String; Revision of entire project from EDIT_HISTORY.
#: QUIT_FIELD    - String; Derived from 4th field of MENU_ITEM_OPT.
#: REVDATE       - String; Revision date of shell script.
#: REVISION      - String; Revision number of shell script.
#: SAVE_DIR      - String; Saves $THIS_DIR when needed.
#: SCRIPT_PATH   - String; Pathname of this script.
#: TERM          - String; Console Terminal-type.
#: THIS_DIR      - Directory containg library modules and support files.
#: THIS_FILE     - String; name of shell script.
#: TPUTX         - String; setaf/setab to set font color. i.e. "tput setaf 3".
#: UCOLOR        - Font color for unavailable library modules in Application
#: WEB_SITE      - String; name of web site used when using a web browser.
#: WEB_SITE_INSTALL - String; name of web site used to install software.
#: X             - String; Scratch variable.
#: XNUM          - Number; Scratch variable used in awk statement in f_show_menu
#:                 and in CHOICE[XNUM] array.
#: XSTR          - String; Scratch variable.
#: XXSTR         - String; Scratch variable.
#: YSTR          - String; Scratch variable.
#:
#:
#: +----------------------------------------+
#: |   List of Special Menu Item Markers    |
#: +----------------------------------------+
#:
#:AAA - Main Menu
#:AAB - Application Categories Menu
#:AAB - Library Module Management Menu
#:AAC - Configuration Menu
#:AAD - Validate Files and Directories Menu
#:AAE - Terminal Colors Menu
#:AAF - Colors for Unavailable Menu Items
#:AAG - Information Menu
#:AAH - List or Find Menus Menu
#:
#:BAU - Audio-Video Applications Categories Menu
#:BFM - File Management Application Categories Menu
#:BGA - Game Categories Menu
#:BIG - Image Categories Menu
#:BIN - Internet Categories Menu
#:BNE - Network Categories Menu
#:BNM - Network Monitor Categories Menu
#:BOF - Office Categories Menu
#:BSY - System Categories Menu
#:BTX - Text Categories Menu
#:BXC - Sample Template Categories Menu
#:
#:MAA - Accounting Applications Menu
#:MAC - CD Rippers Applications Menu
#:MAN - Music Player Applications Menu
#:MAO - Music Player2 Applications Menu
#:MAP - Music Player3 Applications Menu
#:MAQ - Music Player4 Applications Menu
#:MAR - Streaming Radio-Music sites Applications Menu
#:MAS - Speech Synthesis Applications Menu
#:MAT - Music Tagger Applications Menu
#:MAU - Audio Editor Applications Menu
#:MBH - Binary-Hexadecimal File Editor Applications Menu
#:MBL - Blog Applications Menu
#:MBT - Bittorrent Applications Menu
#:MCA - Calendar Applications Menu
#:MCB - Calendar2 Applications Menu
#:MCC - Calculator Applications Menu
#:MCL - Clock Applications Menu
#:MCO - Contact List Applications Menu
#:MDB - Database Applications Menu
#:MDE - Development Applications Menu
#:MDF - Development2 Applications Menu
#:MDL - Downloader-Checksum Applications Menu
#:MED - Education/Hobby Applications Menu
#:MEM - E-mail Applications Menu
#:MEN - Environment Applications Menu
#:MEO - MSDOS/NTFS Utilities Applications Menu
#:MEP - MSDOS/NTFS Utilities2 Applications Menu
#:MFA - CD/DVD File Burning Applications Menu
#:MFB - File Compression Applications Menu
#:MFC - File Compression2 Applications Menu
#:MFD - File Deletion/Undeletion Applications Menu
#:MFE - File Encryption Applications Menu
#:MFF - Find File Applications Menu
#:MFG - File Checksum Applications Menu
#:MFH - File Move-Copy Applications Menu
#:MFI - File Backup Applications Menu
#:MFJ - File Compression3 Applications Menu
#:MFK - MacIntosh Applications Menu
#:MFL - File Encryption2 Applications Menu
#:MFM - File Manager Applications Menu
#:MFN - File Manager2 Applications Menu
#:MFO - File Operations Applications Menu
#:MFP - File Recovery Applications Menu
#:MFS - File Splitter Applications Menu
#:MFT - File Transfer Applications Menu
#:MFV - File Viewer Applications Menu
#:MFX - FAX Applications Menu
#:MFU - Network File Transfer Applications Menu
#:MGA - Arcade Games Menu
#:MGB - Arcade2 Games Menu
#:MGC - Board Games Menu
#:MGD - Card Games Menu
#:MGE - MUD (Multi-user Dungeons) Menu
#:MGF - Puzzle Games Menu
#:MGG - Quiz Games Menu
#:MGH - RPG Games Menu
#:MGI - Simulation Games and Animation Menu
#:MGJ - Strategy Games Menu
#:MGK - Word Games Menu
#:MGL - Tetris-like Games Menu
#:MGM - Pac-Man-like Games Menu
#:MHR - Ham Radio Applications Menu
#:MIG - Image-Graphics Applications Menu
#:MIH - Image-Graphics2 Applications Menu
#:MIK - ImageMagick Applications Menu
#:MIM - Instant Messaging Applications Menu
#:MIR - IRC Clients Applications Menu
#:MLO - System Log Applications Menu
#:MMA - Mathematic Applications Menu
#:MNB - Network Bandwidth Monitor Applications Menu
#:MNC - LAN Chat Applications Menu
#:MNF - Firewall Applications Menu
#:MNL - LAN Applications Menu
#:MNM - Network Structure Applications Menu
#:MNN - NIC Tools Applications Menu
#:MNO - Note Applications Menu
#:MNP - Packet Tools Applications Menu
#:MNQ - NIC Tools2 Applications Menu
#:MNS - Network Sharing Applications Menu
#:MNW - WAN Applications Menu
#:MNX - WAN Applications2 Menu
#:MPK - Package Management Applications Menu
#:MPO - Podcatcher Applications Menu
#:MPQ - Package Management2 Applications Menu
#:MPR - Presentation Applications Menu
#:MPS - PDF/PS File Applications Menu
#:MPT - PDF/PS File2 Applications Menu
#:MRC - Remote Connection Applications Menu
#:MRM - News Reader Applications Menu
#:MRN - News Reader2 Applications Menu
#:MSB - Backup/Archive Applications Menu
#:MSC - Screen Applications Menu
#:MSD - System Disks Information Menu
#:MSE - System Disks Information2 Menu
#:MSH - System Health Applications Menu
#:MSI - Mainboard Information Menu
#:MSJ - System Health2 Applications Menu
#:MSL - Linux Kernel Application Menu
#:MSM - System Monitor Applications Menu
#:MSN - System Monitor2 Applications Menu
#:MSP - Spreadsheet Applications Menu
#:MSQ - System Process Applications Menu
#:MSR - System Process2 Applications Menu
#:MSS - Screen-saver Games Menu
#:MST - Screen Tools Applications Menu
#:MSV - System Peripherals Information Menu
#:MSW - System Peripherals Information2 Menu
#:MTA - To-Do Applications Menu
#:MTB - To-Do2 Applications Menu
#:MTC - Text Compare Applications Menu
#:MTD - Text Word Processor Applications Menu
#:MTE - Text Editor Applications Menu
#:MTF - Text Editor2 Applications Menu
#:MTG - Text Editor3 Applications Menu
#:MTH - Text Editor4 Applications Menu
#:MTI - Text File Editor Applications Menu
#:MTM - Text Markup Language Applications Menu
#:MTT - Text Tool Applications Menu
#:MTV - Text Converter Applications Menu
#:MTW - File Format Conversion Applications Menu
#:MTX - File Format Conversion2 Applications Menu
#:MVE - Video Editor Applications Menu
#:MVI - Video Player/Downloader Applications Menu
#:MWB - Web Browser Applications Menu
#:MXX - Sample Template Applications Menu
Something went wrong with that request. Please try again.