# Simple calculator calc() { local result="" result="$(printf "scale=10;%s\\n" "$*" | bc --mathlib | tr -d '\\\n')" # └─ default (when `--mathlib` is used) is 20 if [[ "$result" == *.* ]]; then # improve the output for decimal numbers # add "0" for cases like ".5" # add "0" for cases like "-.5" # remove trailing zeros printf "%s" "$result" | sed -e 's/^\./0./' \ -e 's/^-\./-0./' \ -e 's/0*$//;s/\.$//' else printf "%s" "$result" fi printf "\\n" } # Create a new directory and enter it mkd() { mkdir -p "$@" cd "$@" || exit } # Make a temporary directory and enter it tmpd() { local dir if [ $# -eq 0 ]; then dir=$(mktemp -d) else dir=$(mktemp -d -t "${1}.XXXXXXXXXX") fi cd "$dir" || exit } # Determine size of a file or total size of a directory fs() { if du -b /dev/null > /dev/null 2>&1; then local arg=-sbh else local arg=-sh fi # shellcheck disable=SC2199 if [[ -n "$@" ]]; then du $arg -- "$@" else du $arg -- .[^.]* * fi } # Use Git’s colored diff when available if hash git &>/dev/null ; then diff() { git diff --no-index --color-words "$@" } fi # Convert HEX to the nearest color index (0-255) fromhex(){ hex=${1#"#"} r=$(printf '0x%0.2s' "$hex") g=$(printf '0x%0.2s' ${hex#??}) b=$(printf '0x%0.2s' ${hex#????}) echo '%03d' "$(( (r<75?0:(r-35)/40)*6*6 + (g<75?0:(g-35)/40)*6 + (b<75?0:(b-35)/40) + 16 ))" } # Create a new directory and enter it mkd() { mkdir -p "$@" && cd "$_"; } # Syntax-highlight JSON strings or files # Usage: `json '{"foo":42}'` or `echo '{"foo":42}' | json` json() { if [ -t 0 ]; then # argument python -mjson.tool <<< "$*" | pygmentize -l javascript; else # pipe python -mjson.tool | pygmentize -l javascript; fi; } # Get colors in manual pages man() { env \ LESS_TERMCAP_mb="$(printf '\e[1;31m')" \ LESS_TERMCAP_md="$(printf '\e[1;31m')" \ LESS_TERMCAP_me="$(printf '\e[0m')" \ LESS_TERMCAP_se="$(printf '\e[0m')" \ LESS_TERMCAP_so="$(printf '\e[1;44;33m')" \ LESS_TERMCAP_ue="$(printf '\e[0m')" \ LESS_TERMCAP_us="$(printf '\e[1;32m')" \ man "$@" } # Check if uri is up isup() { local uri=$1 if curl -s --head --request GET "$uri" | grep "200 OK" > /dev/null ; then terminal-notifier -title '$uri' -message 'is down' else terminal-notifier -title '$uri' -message 'is up' fi }