On Thu, Jun 01, 2017 at 07:22:36AM -0500, Richard Owlett wrote: > 1. what other commands should I look at? Perhaps you'll find something useful in this little script I wrote: # show_drives.sh Display Labels and UUIDs of media # LGD: Wed May 24 06:35:20 PDT 2017 # Re-write Fri Jun 9 04:31:03 PDT 2017 # Written as an exercise in shell script programming. ldigh...@att.net #
trap "setterm -foreground white;echo;exit 1" ERR INT QUIT EXIT TERM # trap -l will display signals (bash only) set "lsblk -f" "lsblk -a" "fdisk -l" "findmnt -A" "findmnt -D" "findmnt -D -A" "df -Th" # Put commands in the environment as positional parameters to execute # Prompt user for input PRMPT="Enter to continue [Q]: " WAIT(){ ### ksh 'read' syntax: ksh man page line 2227 (vname?prompt) #### [[ $(echo $SHELL |grep ksh) ]] && READ="read -n 1 REPLY?\"${PRMPT}\"" # ksh read syntax #### bash 'read' syntax: bash man page line 4335 (-p prompt) #### [[ -n $BASH ]] && READ="read -n 1 -r -p \"${PRMPT}\"" # bash read syntax (-r, no varname) eval ${READ} # Issue prompt for next page [[ $REPLY != [Qq]* ]] && setterm -foreground white && return # Return to caller [[ $REPLY == [Qq]* ]] && setterm -foreground white # User request to quit received echo;exit } # Dynamically generate header and footer lines equal to the length of the longest line of the output of the current command with the command-name centered in the middle of the header line GENLIN(){ CMDLEN=$(echo "$1"|wc -m) # The length of the current command LEN=$(eval "$1"|wc -L) # The length of the longest line generated by the current command passed as an argument to this function MIDLIN=$((( ($LEN / 2) - $(echo $1|wc -m)+2 ))) # The mid-point of the line at which to place the current command in the header [[ $2 != "end" ]] && LEN=$((( $LEN - $CMDLEN ))) # Deduct the length of the command line from the header length for footer for i in $(seq $LEN) ;do # Loop through the commands echo -e "=\c" # Print each line characters [[ $i == $MIDLIN && $2 != "end" ]] && echo -e " $1 \c" # Print the command-name in the middle of the header line done echo } CURROW=$(stty -a |grep rows|awk -F \; '/rows/ {print $2}'|tr -d '[a-z A-Z]') # Get the number of terminal rows/lines (cursor row position at bottom of screen) [[ -n $BASH ]] && CURROW=$((( $CURROW - 1 ))) # fucking bash :-) while : ;do GENLIN "$1" # Print output header line eval "$1" # Print command output GENLIN "$1" "end" # Print output footer line echo shift # Get the next command to run [[ -z $1 ]] && { echo;exit ;} # Exit when command list is exhausted setterm -foreground green;WAIT;setterm -foreground white # Color prompt for user input tput cup $((($CURROW - 1))) 0 # Over-write the prompt line done exit 0
show_drives.sh
Description: application/shellscript