commit 401d67ac1d5519fe63dd56866db2106dd9744087 Author: phansible Date: Tue Feb 13 13:11:53 2024 -0500 Initial commit diff --git a/.shell_aliases b/.shell_aliases new file mode 100644 index 0000000..720f37f --- /dev/null +++ b/.shell_aliases @@ -0,0 +1,38 @@ +# Turn on interactive mode for dangerous commands +alias cp='cp -iv' +alias mv='mv -iv' +alias rm='rm -iv' + +# File sizes should always be human-readable +alias df='df -h' +alias du='du -h' + +# Greps +alias egrep='egrep --color=auto' # show differences in colour +alias fgrep='fgrep --color=auto' # show differences in colour + +# File Listing +# Must have lsd installed (https://github.com/lsd-rs/lsd) +alias ls='lsd ' +alias l='ls -CF' # list with Columns +alias la='ls -CFA' # l with . and .. +alias ll='ls -l' # long list +alias lla='ls -al' # ll with . and .. +alias ls='ls -hF --color=tty' # classify files in colour +alias lls='ls -lh --sort=size --reverse' +alias llt='ls -l -t -r' + +# Extras +alias ping='ping -c 5' # Stop pinging after 5 pings +alias vi='vim' # use vim instead of vi +alias less='less -r' # repaint screen + +# Get Ext IP +alias extip='curl -s -4 icanhazip.com' + +# Memory Pigs (top 10) +alias mempigs='ps aux | awk '\''{print $6/1024 " MB\t\t" $11 " " $12}'\'' | sort -n | tail -10' + +# Edit files with vim/fzf +alias vfz='vim "`fzf`"' +alias vimf='vim "`fzf`"' diff --git a/.shell_functions b/.shell_functions new file mode 100644 index 0000000..8013c8a --- /dev/null +++ b/.shell_functions @@ -0,0 +1,99 @@ +# Shell 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 +} + +# git testmerge +testmerge() { + echo "git merge --no-commit --no-ff $1" + git merge --no-commit --no-ff $1 + echo "git diff --cached" + git diff --cached + echo "'git merge --abort' when done" +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..1e84f4e --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# Shell Aliases and Functions + +A repo to keep these files portable