96 lines
2.2 KiB
Plaintext
96 lines
2.2 KiB
Plaintext
# 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 <something>" with "psaux <something>". 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
|
|
}
|
|
|
|
# simpler find for quick searches
|
|
f() {
|
|
find . -iname "*${1}*"
|
|
}
|