# BASH Functions # Shell note pad note () { # if file doesn't exist, create it if [[ ! -f $HOME/.notes ]]; then touch "$HOME/.notes" fi if ! (($#)); then # no arguments, print file cat "$HOME/.notes" elif [[ "$1" == "-c" ]]; then # clear file echo -n "Clear notes file? [Y/N] " read replace if [ "${replace}" = "Y" ] || [ "${replace}" = "y" ]; then echo "Emptying notes file..." printf "%s" > "$HOME/.notes" echo "Done." else echo "Notes file preserved." fi else # add all arguments to file echo -n $(date +"%F %T | ") >> "$HOME/.notes" printf "%s\n" "$*" >> "$HOME/.notes" fi } # tar/gzip a directory # I use this before 'rm -rf'ing a directory I think is useless # if nothing breaks after a predetermined amount of time, then the tar file is safe to delete tardir() { #ensure $1 is a directory if [ ! -d "${1}" ]; then echo "$1 is not a directory. Aborting." return 1 fi #strip trailing slash target="${1%/}" echo "Dir size: $(du -hs ${target})" tar czf "${target}".tar.gz "${target}" echo "Archive size: $(du -hs ${target}.tar.gz)" } # Replacement for 'for i in $(ls); do du -hs $i; done' that handles spaces function dudir() { if ! (($#)); then dir=$(pwd) else dir="${1}" fi # redefine $IFS o=$IFS IFS=$(echo -en "\n\b") for i in $(ls "${dir}"); do du -hs "${i}" done # reset $IFS IFS=$o } # HAHA! Weather in the terminal weather() { if [ $(command -v curl) ]; then if ! (($#)); then curl wttr.in/44113 else curl wttr.in/$1 fi else echo "curl not installed. Aborting." fi } # Replaces "ps aux | grep " with "psaux ". Shorter to type, more informational and doesn't include the command itself in the output. psaux () { pgrep -f "$@" | xargs ps -fp 2>/dev/null; } # mail a file email() { if ! (($#)); then echo "USAGE: email {filename} {email-address}" return 1 else efile=${1} eaddr=${2} echo "See Attached" | mail -s "File: ${efile}" -a ${efile} ${2} fi }