# Functions gathered from around the internet # Takes 1st argument and attempts to extract them in the current directory extract () { # Extracts most common compressed files if [ -f $1 ] ; then case $1 in *.tar.bz2) tar xjf $1 ;; *.tar.gz) tar xzf $1 ;; *.bz2) bunzip2 $1 ;; *.rar) rar x $1 ;; *.gz) gunzip $1 ;; *.tar) tar xf $1 ;; *.tbz2) tar xjf $1 ;; *.tgz) tar xzf $1 ;; *.zip) unzip $1 ;; *.Z) uncompress $1 ;; *) echo "'$1' cannot be extracted via extract()" ;; esac else echo "'$1' is not a valid file" fi } # Takes 1st argument and makes a .tar.gz archive maketgz() { tar cvzf "${1%%/}.tar.gz" "${1%%/}/"; } # Takes 1st argument and makes a .zip archive makezip() { zip -r "${1%%/}.zip" "$1" ; } # Generate password - 1st argument is the number of characters, defaults to 20 gpass() { local l=$1 [ "$l" == "" ] && l=20 tr -dc A-Za-z0-9-!@%^*_ < /dev/urandom | head -c ${l} | xargs } # Shows the current PS list for the signed in user - Not cygwin compatible myps() { ps $@ -u $USER -o pid,%cpu,%mem,bsdtime,command ; } # Searches the process list (ps) for 1st argument psgrep() { if [ ! -z $1 ] ; then echo "Grepping for processes matching $1..." ps aux | grep $1 | grep -v grep else echo "!! Need name to grep for" fi } # dirsize - finds directory sizes and lists them for the current directory dirsize (){ du -shx * .[a-zA-Z0-9_]* 2> /dev/null | \ egrep '^ *[0-9.]*[MG]' | sort -n > /tmp/list egrep '^ *[0-9.]*M' /tmp/list egrep '^ *[0-9.]*G' /tmp/list rm -rf /tmp/list } # Usage: up . Blank for up one dir. up() { local d="" limit=$1 for ((i=1; i <= limit; i++)); do d=$d/.. done d=$(echo $d | sed 's/^\///') if [ -z "$d" ]; then d=.. fi cd $d } # Search inside files for a string # Usage: search search () { grep -r "$1" | fzf } # Search for a file by its name # Usage: ff (optional) ff() { #find file if [ -z "${2}" ]; then find . -type f -iname "*${1}*" else find . -type f -maxdepth "${2}" -iname "*${1}*" fi } # Search for a file by its name and edit it # Usage: vf (optional) vf() { vim "$(ff "$@" | fzf)"; } # Usage: replay to repeat. Blank for 1 replay() { from="${1:-2}" to="${2:-1}" if [ "$from" -ne "$to" ]; then for i in `seq "$from" -1 "$(($to + 1))"`; do printf "$(fc -ln -${i} -${i}) && " done fi $(fc -ln -${to} -${to}) }