Skip to content

Instantly share code, notes, and snippets.

@ctaylo21
Created May 29, 2018 15:35
Show Gist options
  • Save ctaylo21/f776f0436684ff6f820760bd6c691901 to your computer and use it in GitHub Desktop.
Save ctaylo21/f776f0436684ff6f820760bd6c691901 to your computer and use it in GitHub Desktop.
Outputs a colorized apple with system info for OSX
#!/bin/bash
# ==USER==
user=$(whoami)
# ==HOSTNAME==
hostname=$(HOSTNAME | sed 's/.local//g')
# if hostname is >35 characters, truncates to make it fit on std. 80 window
if [ ${#HOSTNAME} -gt 35 ]
then
hostname=${HOSTNAME:0:35}
fi
# ==MODEL==
model=$(uname -smr)
# ==VERSION==
versionNumber=$(sw_vers -productVersion) # Finds version number
versionShort=${versionNumber:0:5} # Cut string to 1 decimal place for calculation
versionShort=(${versionShort//./ }) # Split it into an array using "."" as the delimiter
if [ ${versionShort[0]} = "10" ]; then
case ${versionShort[1]} in
0)
versionString="Cheetah"
;;
1)
versionString="Puma"
;;
2)
versionString="Jaguar"
;;
3)
versionString="Panther"
;;
4)
versionString="Tiger"
;;
5)
versionString="Leopard"
;;
6)
versionString="Snow Leopard"
;;
7)
versionString="Lion"
;;
8)
versionString="Mountian Lion"
;;
9)
versionString="Mavericks"
;;
10)
versionString="Yosemite"
;;
11)
versionString="El Capitan"
;;
esac
versionNumber="X $versionNumber"
else
versionString=""
fi
version="OS $versionNumber $versionString"
# ==KERNEL==
kernel="XNU"
# ==UPTIME==
uptime=$(uptime | sed 's/.*up \([^,]*\), .*/\1/')
# ==SHELL==
shell="$SHELL"
# ==TERMINAL==
terminal="$TERM"
# ==PACKAGE MANAGER==
# check if brew or macports is installed, then total there packages and set packagehandler
if [ -f /opt/local/bin/port ] #don't think this is the right directory, need to check later. EDIT (@avatsaev): yes it is the right dir
then
macportpackages="`port installed | wc -l | awk '{print $1 }'`"
packagehandler=$macportpackages' (macports)'
fi
if [ -e /usr/local/bin/brew ]
then
brewpackages=$(brew list -l | tail -n +2 | wc -l)
packagehandler+=''$brewpackages' (homebrew)'
fi
# ==CPU==
cpu=$(sysctl -n machdep.cpu.brand_string)
# removes (R) and (TM) from the CPU name so it fits in a standard 80 window
cpu=$(echo "$cpu" | awk '$1=$1' | sed 's/([A-Z]\{1,2\})//g')
# ==MEMORY==
mem=$(sysctl -n hw.memsize)
mem="$((mem/1000000000)) GB"
# ==DISK==
disk=`df | head -2 | tail -1 | awk '{print $5}'`
# Colors Variables
red="1"
green="2"
yellow="3"
blue="4"
purple="5"
lightblue="6"
grey="7"
textColor=$(tput setaf $lightblue)
normal=$(tput sgr0)
# While loops for script arguments
while [ $# -gt 0 ]
do
case "$1" in
-c|--color)
GR='\033[00;32m'
YE='\033[00;33m'
LR='\033[01;31m'
RE='\033[00;31m'
PU='\033[00;35m'
CY='\033[00;36m'
BL='\033[00;34m'
shift
;;
-red)
textColor=$(tput setaf $red)
shift
;;
-green)
textColor=$(tput setaf $green)
shift
;;
-yellow)
textColor=$(tput setaf $yellow)
shift
;;
-blue)
textColor=$(tput setaf $blue)
shift
;;
-purple)
textColor=$(tput setaf $purple)
shift
;;
-grey)
textColor=$(tput setaf $grey)
shift
;;
*)
break
;;
esac
done
userText="${textColor}User:${normal}"
hostnameText="${textColor}Hostname:${normal}"
modelText="${textColor}Darwin:${normal}"
versionText="${textColor}Version:${normal}"
kernelText="${textColor}Kernel:${normal}"
uptimeText="${textColor}Uptime:${normal}"
shellText="${BL}${textColor}Shell:${normal}"
terminalText="${textColor}Terminal:${normal}"
packagehandlerText="${textColor}Packages:${normal}"
cpuText="${textColor}CPU:${normal}"
memoryText="${textColor}Memory:${normal}"
diskText="${textColor}Disk:${normal}"
echo -e "
${GR} ,
${GR} ,##;
${GR} #### $userText $user
${GR} ;#' $hostnameText $hostname
${GR} ,#####;, ,;#####;, $modelText $model
${GR} ######################' $versionText $version
${YE} #####################' $kernelText $kernel
${YE} ##################### $uptimeText $uptime
${LR} ##################### $shellText $shell
${RE} ######################, $terminalText $terminal
${RE} ####################### $packagehandlerText $packagehandler
${PU} ####################' $cpuText $cpu
${BL} #################' $memoryText $mem
${BL} '####''''####' $diskText $disk
${normal}
"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment