mirror of
https://github.com/ohmybash/oh-my-bash.git
synced 2024-05-11 05:55:37 +00:00
Initial Oh My Bash framework
This commit is contained in:
199
plugins/bashmarks/bashmarks.plugin.sh
Normal file
199
plugins/bashmarks/bashmarks.plugin.sh
Normal file
@@ -0,0 +1,199 @@
|
||||
# Copyright (c) 2014, NNToan - http://about.me/nntoan
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||
# that the following conditions are met:
|
||||
#
|
||||
# * Redistributions of source code must retain the above copyright notice, this list of conditions
|
||||
# and the following disclaimer.
|
||||
# * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the
|
||||
# following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
# * Neither the name of Toan Nguyen Ngoc (aka NNToan) nor the names of contributors
|
||||
# may be used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
||||
# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
# POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
|
||||
# USAGE:
|
||||
# bm -a bookmarkname - saves the curr dir as bookmarkname
|
||||
# bm -g bookmarkname - jumps to the that bookmark
|
||||
# bm -g b[TAB] - tab completion is available
|
||||
# bm -p bookmarkname - prints the bookmark
|
||||
# bm -p b[TAB] - tab completion is available
|
||||
# bm -d bookmarkname - deletes the bookmark
|
||||
# bm -d [TAB] - tab completion is available
|
||||
# bm -l - list all bookmarks
|
||||
|
||||
# setup file to store bookmarks
|
||||
if [ ! -n "$SDIRS" ]; then
|
||||
SDIRS=~/.sdirs
|
||||
fi
|
||||
touch $SDIRS
|
||||
|
||||
RED="0;31m"
|
||||
GREEN="0;33m"
|
||||
|
||||
# main function
|
||||
function bm {
|
||||
option="${1}"
|
||||
case ${option} in
|
||||
# save current directory to bookmarks [ bm -a BOOKMARK_NAME ]
|
||||
-a)
|
||||
_save_bookmark "$2"
|
||||
;;
|
||||
# delete bookmark [ bm -d BOOKMARK_NAME ]
|
||||
-d)
|
||||
_delete_bookmark "$2"
|
||||
;;
|
||||
# jump to bookmark [ bm -g BOOKMARK_NAME ]
|
||||
-g)
|
||||
_goto_bookmark "$2"
|
||||
;;
|
||||
# print bookmark [ bm -p BOOKMARK_NAME ]
|
||||
-p)
|
||||
_print_bookmark "$2"
|
||||
;;
|
||||
# show bookmark list [ bm -l ]
|
||||
-l)
|
||||
_list_bookmark
|
||||
;;
|
||||
# help [ bm -h ]
|
||||
*)
|
||||
echo 'USAGE:'
|
||||
echo 'bm -a <bookmark_name> - Saves the current directory as "bookmark_name"'
|
||||
echo 'bm -g <bookmark_name> - Goes (cd) to the directory associated with "bookmark_name"'
|
||||
echo 'bm -p <bookmark_name> - Prints the directory associated with "bookmark_name"'
|
||||
echo 'bm -d <bookmark_name> - Deletes the bookmark'
|
||||
echo 'bm -l - Lists all available bookmarks'
|
||||
kill -SIGINT $$
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# save current directory to bookmarks
|
||||
function _save_bookmark {
|
||||
_bookmark_name_valid "$@"
|
||||
if [ -z "$exit_message" ]; then
|
||||
_purge_line "$SDIRS" "export DIR_$1="
|
||||
CURDIR=$(echo $PWD| sed "s#^$HOME#\$HOME#g")
|
||||
echo "export DIR_$1=\"$CURDIR\"" >> $SDIRS
|
||||
fi
|
||||
}
|
||||
|
||||
# delete bookmark
|
||||
function _delete_bookmark {
|
||||
_bookmark_name_valid "$@"
|
||||
if [ -z "$exit_message" ]; then
|
||||
_purge_line "$SDIRS" "export DIR_$1="
|
||||
unset "DIR_$1"
|
||||
fi
|
||||
}
|
||||
|
||||
# jump to bookmark
|
||||
function _goto_bookmark {
|
||||
source $SDIRS
|
||||
target="$(eval $(echo echo $(echo \$DIR_$1)))"
|
||||
if [ -d "$target" ]; then
|
||||
cd "$target"
|
||||
elif [ ! -n "$target" ]; then
|
||||
echo -e "\033[${RED}WARNING: '${1}' bashmark does not exist\033[00m"
|
||||
else
|
||||
echo -e "\033[${RED}WARNING: '${target}' does not exist\033[00m"
|
||||
fi
|
||||
}
|
||||
|
||||
# list bookmarks with dirname
|
||||
function _list_bookmark {
|
||||
source $SDIRS
|
||||
# if color output is not working for you, comment out the line below '\033[1;32m' == "red"
|
||||
env | sort | awk '/DIR_.+/{split(substr($0,5),parts,"="); printf("\033[0;33m%-20s\033[0m %s\n", parts[1], parts[2]);}'
|
||||
# uncomment this line if color output is not working with the line above
|
||||
# env | grep "^DIR_" | cut -c5- | sort |grep "^.*="
|
||||
}
|
||||
|
||||
# print bookmark
|
||||
function _print_bookmark {
|
||||
source $SDIRS
|
||||
echo "$(eval $(echo echo $(echo \$DIR_$1)))"
|
||||
}
|
||||
|
||||
# list bookmarks without dirname
|
||||
function _l {
|
||||
source $SDIRS
|
||||
env | grep "^DIR_" | cut -c5- | sort | grep "^.*=" | cut -f1 -d "="
|
||||
}
|
||||
|
||||
# validate bookmark name
|
||||
function _bookmark_name_valid {
|
||||
exit_message=""
|
||||
if [ -z $1 ]; then
|
||||
exit_message="bookmark name required"
|
||||
echo $exit_message
|
||||
elif [ "$1" != "$(echo $1 | sed 's/[^A-Za-z0-9_]//g')" ]; then
|
||||
exit_message="bookmark name is not valid"
|
||||
echo $exit_message
|
||||
fi
|
||||
}
|
||||
|
||||
# completion command
|
||||
function _comp {
|
||||
local curw
|
||||
COMPREPLY=()
|
||||
curw=${COMP_WORDS[COMP_CWORD]}
|
||||
COMPREPLY=($(compgen -W '`_l`' -- $curw))
|
||||
return 0
|
||||
}
|
||||
|
||||
# ZSH completion command
|
||||
function _compzsh {
|
||||
reply=($(_l))
|
||||
}
|
||||
|
||||
# safe delete line from sdirs
|
||||
function _purge_line {
|
||||
if [ -s "$1" ]; then
|
||||
# safely create a temp file
|
||||
t=$(mktemp -t bashmarks.XXXXXX) || exit 1
|
||||
trap "rm -f -- '$t'" EXIT
|
||||
|
||||
# purge line
|
||||
sed "/$2/d" "$1" > "$t"
|
||||
mv "$t" "$1"
|
||||
|
||||
# cleanup temp file
|
||||
rm -f -- "$t"
|
||||
trap - EXIT
|
||||
fi
|
||||
}
|
||||
|
||||
# bind completion command for g,p,d to _comp
|
||||
if [ $ZSH_VERSION ]; then
|
||||
compctl -K _compzsh bm -g
|
||||
compctl -K _compzsh bm -p
|
||||
compctl -K _compzsh bm -d
|
||||
compctl -K _compzsh g
|
||||
compctl -K _compzsh p
|
||||
compctl -K _compzsh d
|
||||
else
|
||||
shopt -s progcomp
|
||||
complete -F _comp bm -g
|
||||
complete -F _comp bm -p
|
||||
complete -F _comp bm -d
|
||||
complete -F _comp g
|
||||
complete -F _comp p
|
||||
complete -F _comp d
|
||||
fi
|
||||
|
||||
alias s='bm -a' # Save a bookmark [bookmark_name]
|
||||
alias g='bm -g' # Go to bookmark [bookmark_name]
|
||||
alias p='bm -p' # Print bookmark of a path [path]
|
||||
alias d='bm -d' # Delete a bookmark [bookmark_name]
|
262
plugins/core/core.plugin.sh
Normal file
262
plugins/core/core.plugin.sh
Normal file
@@ -0,0 +1,262 @@
|
||||
# ---------------------------------------------------------------------------
|
||||
#
|
||||
# Description: This file holds all my BASH configurations and aliases
|
||||
#
|
||||
# Sections:
|
||||
# 1. Make Terminal Better (remapping defaults and adding functionality)
|
||||
# 2. File and Folder Management
|
||||
# 3. Searching
|
||||
# 4. Process Management
|
||||
# 5. Networking
|
||||
# 6. System Operations & Information
|
||||
# 7. Date & Time Management
|
||||
# 8. Web Development
|
||||
# 9. Reminders & Notes
|
||||
#
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
# -----------------------------
|
||||
# 1. MAKE TERMINAL BETTER
|
||||
# -----------------------------
|
||||
|
||||
alias cp='cp -iv' # Preferred 'cp' implementation
|
||||
alias mv='mv -iv' # Preferred 'mv' implementation
|
||||
alias mkdir='mkdir -pv' # Preferred 'mkdir' implementation
|
||||
alias ll='ls -lAFh' # Preferred 'ls' implementation
|
||||
alias less='less -FSRXc' # Preferred 'less' implementation
|
||||
alias nano='nano -W -$' # Preferred 'nano' implementation
|
||||
alias wget='wget -c' # Preferred 'wget' implementation (resume download)
|
||||
cd() { builtin cd "$@"; ll; } # Always list directory contents upon 'cd'
|
||||
alias cd..='cd ../' # Go back 1 directory level (for fast typers)
|
||||
alias ..='cd ../' # Go back 1 directory level
|
||||
alias ...='cd ../../' # Go back 2 directory levels
|
||||
alias .3='cd ../../../' # Go back 3 directory levels
|
||||
alias .4='cd ../../../../' # Go back 4 directory levels
|
||||
alias .5='cd ../../../../../' # Go back 5 directory levels
|
||||
alias .6='cd ../../../../../../' # Go back 6 directory levels
|
||||
alias dud='du -d 1 -h' # Short and human-readable file listing
|
||||
alias duf='du -sh *' # Short and human-readable directory listing
|
||||
alias ~="cd ~" # ~: Go Home
|
||||
alias c='clear' # c: Clear terminal display
|
||||
alias path='echo -e ${PATH//:/\\n}' # path: Echo all executable Paths
|
||||
alias show_options='shopt' # Show_options: display bash options settings
|
||||
alias fix_stty='stty sane' # fix_stty: Restore terminal settings when screwed up
|
||||
alias cic='set completion-ignore-case On' # cic: Make tab-completion case-insensitive
|
||||
alias h='history | grep $1' # h: Find an executed command in .bash_history
|
||||
alias src='source ~/.bashrc' # src: Reload .bashrc file
|
||||
mcd () { mkdir -p "$1" && cd "$1"; } # mcd: Makes new Dir and jumps inside
|
||||
|
||||
# lr: Full Recursive Directory Listing
|
||||
# ------------------------------------------
|
||||
alias lr='ls -R | grep ":$" | sed -e '\''s/:$//'\'' -e '\''s/[^-][^\/]*\//--/g'\'' -e '\''s/^/ /'\'' -e '\''s/-/|/'\'' | less'
|
||||
|
||||
# mans: Search manpage given in agument '1' for term given in argument '2' (case insensitive)
|
||||
# displays paginated result with colored search terms and two lines surrounding each hit. Example: mans mplayer codec
|
||||
# --------------------------------------------------------------------
|
||||
mans () {
|
||||
man $1 | grep -iC2 --color=always $2 | less
|
||||
}
|
||||
|
||||
# showa: to remind yourself of an alias (given some part of it)
|
||||
# ------------------------------------------------------------
|
||||
showa () { /usr/bin/grep --color=always -i -a1 $@ ~/Library/init/bash/aliases.bash | grep -v '^\s*$' | less -FSRXc ; }
|
||||
|
||||
|
||||
# -------------------------------
|
||||
# 2. FILE AND FOLDER MANAGEMENT
|
||||
# -------------------------------
|
||||
|
||||
zipf () { zip -r "$1".zip "$1" ; } # zipf: To create a ZIP archive of a folder
|
||||
alias numFiles='echo $(ls -1 | wc -l)' # numFiles: Count of non-hidden files in current dir
|
||||
alias make1mb='truncate -s 1m ./1MB.dat' # make1mb: Creates a file of 1mb size (all zeros)
|
||||
alias make5mb='truncate -s 5m ./5MB.dat' # make5mb: Creates a file of 5mb size (all zeros)
|
||||
alias make10mb='truncate -s 10m ./10MB.dat' # make10mb: Creates a file of 10mb size (all zeros)
|
||||
|
||||
# extract: Extract most know archives with one command
|
||||
# ---------------------------------------------------------
|
||||
extract () {
|
||||
if [ -f $1 ] ; then
|
||||
case $1 in
|
||||
*.tar.bz2) tar xjf $1 ;;
|
||||
*.tar.gz) tar xzf $1 ;;
|
||||
*.bz2) bunzip2 $1 ;;
|
||||
*.rar) unrar e $1 ;;
|
||||
*.gz) gunzip $1 ;;
|
||||
*.tar) tar xf $1 ;;
|
||||
*.tbz2) tar xjf $1 ;;
|
||||
*.tgz) tar xzf $1 ;;
|
||||
*.zip) unzip $1 ;;
|
||||
*.Z) uncompress $1 ;;
|
||||
*.7z) 7z x $1 ;;
|
||||
*) echo "'$1' cannot be extracted via extract()" ;;
|
||||
esac
|
||||
else
|
||||
echo "'$1' is not a valid file"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# ---------------------------
|
||||
# 3. SEARCHING
|
||||
# ---------------------------
|
||||
|
||||
alias qfind="find . -name " # qfind: Quickly search for file
|
||||
ff () { /usr/bin/find . -name "$@" ; } # ff: Find file under the current directory
|
||||
ffs () { /usr/bin/find . -name "$@"'*' ; } # ffs: Find file whose name starts with a given string
|
||||
ffe () { /usr/bin/find . -name '*'"$@" ; } # ffe: Find file whose name ends with a given string
|
||||
|
||||
|
||||
# ---------------------------
|
||||
# 4. PROCESS MANAGEMENT
|
||||
# ---------------------------
|
||||
|
||||
# findPid: find out the pid of a specified process
|
||||
# -----------------------------------------------------
|
||||
# Note that the command name can be specified via a regex
|
||||
# E.g. findPid '/d$/' finds pids of all processes with names ending in 'd'
|
||||
# Without the 'sudo' it will only find processes of the current user
|
||||
# -----------------------------------------------------
|
||||
findPid () { lsof -t -c "$@" ; }
|
||||
|
||||
# memHogsTop, memHogsPs: Find memory hogs
|
||||
# -----------------------------------------------------
|
||||
alias memHogsTop='top -l 1 -o rsize | head -20'
|
||||
alias memHogsPs='ps wwaxm -o pid,stat,vsize,rss,time,command | head -10'
|
||||
|
||||
# cpuHogs: Find CPU hogs
|
||||
# -----------------------------------------------------
|
||||
alias cpu_hogs='ps wwaxr -o pid,stat,%cpu,time,command | head -10'
|
||||
|
||||
# topForever: Continual 'top' listing (every 10 seconds)
|
||||
# -----------------------------------------------------
|
||||
alias topForever='top -l 9999999 -s 10 -o cpu'
|
||||
|
||||
# ttop: Recommended 'top' invocation to minimize resources
|
||||
# ------------------------------------------------------------
|
||||
# Taken from this macosxhints article
|
||||
# http://www.macosxhints.com/article.php?story=20060816123853639
|
||||
# ------------------------------------------------------------
|
||||
alias ttop="top -R -F -s 10 -o rsize"
|
||||
|
||||
# my_ps: List processes owned by my user:
|
||||
# ------------------------------------------------------------
|
||||
my_ps() { ps $@ -u $USER -o pid,%cpu,%mem,start,time,bsdtime,command ; }
|
||||
|
||||
|
||||
# ---------------------------
|
||||
# 5. NETWORKING
|
||||
# ---------------------------
|
||||
|
||||
alias myip='curl ifconfig.co' # myip: Public facing IP Address
|
||||
alias netCons='lsof -i' # netCons: Show all open TCP/IP sockets
|
||||
alias lsock='sudo /usr/sbin/lsof -i -P' # lsock: Display open sockets
|
||||
alias lsockU='sudo /usr/sbin/lsof -nP | grep UDP' # lsockU: Display only open UDP sockets
|
||||
alias lsockT='sudo /usr/sbin/lsof -nP | grep TCP' # lsockT: Display only open TCP sockets
|
||||
alias ipInfo0='ifconfig getpacket en0' # ipInfo0: Get info on connections for en0
|
||||
alias ipInfo1='ifconfig getpacket en1' # ipInfo1: Get info on connections for en1
|
||||
alias openPorts='sudo lsof -i | grep LISTEN' # openPorts: All listening connections
|
||||
alias showBlocked='sudo ipfw list' # showBlocked: All ipfw rules inc/ blocked IPs
|
||||
|
||||
# ii: display useful host related informaton
|
||||
# -------------------------------------------------------------------
|
||||
ii() {
|
||||
echo -e "\nYou are logged on ${red}$HOST"
|
||||
echo -e "\nAdditionnal information:$NC " ; uname -a
|
||||
echo -e "\n${red}Users logged on:$NC " ; w -h
|
||||
echo -e "\n${red}Current date :$NC " ; date
|
||||
echo -e "\n${red}Machine stats :$NC " ; uptime
|
||||
#echo -e "\n${red}Current network location :$NC " ; scselect
|
||||
echo -e "\n${red}Public facing IP Address :$NC " ;myip
|
||||
#echo -e "\n${red}DNS Configuration:$NC " ; scutil --dns
|
||||
echo
|
||||
}
|
||||
|
||||
|
||||
# ---------------------------------------
|
||||
# 6. SYSTEMS OPERATIONS & INFORMATION
|
||||
# ---------------------------------------
|
||||
|
||||
alias mountReadWrite='/sbin/mount -uw /' # mountReadWrite: For use when booted into single-user
|
||||
alias perm='stat --printf "%a %n \n "' # perm: Show permission of target in number
|
||||
alias 000='chmod 000' # ---------- (no fucking permissions)
|
||||
alias 640='chmod 640' # -rw-r----- (user: rw, group: r, other: -)
|
||||
alias 644='chmod 644' # -rw-r--r-- (user: rw, group: r, other: -)
|
||||
alias 755='chmod 755' # -rwxr-xr-x (user: rwx, group: rx, other: x)
|
||||
alias 775='chmod 775' # -rwxrwxr-x (user: rwx, group: rwx, other: rx)
|
||||
alias mx='chmod a+x' # ---x--x--x (user: --x, group: --x, other: --x)
|
||||
alias ux='chmod u+x' # ---x------ (user: --x, group: -, other: -)
|
||||
|
||||
# batch_chmod: Batch chmod for all files & sub-directories in the current one
|
||||
# -------------------------------------------------------------------
|
||||
batch_chmod()
|
||||
{
|
||||
e_header "Restore all files and sub-directories permissions..."
|
||||
progress 10 "Re-index file list..."
|
||||
find . -type d -print0 | xargs -0 chmod 0755 && progress 40 "[1/2]"
|
||||
find . -type f -print0 | xargs -0 chmod 0644 && progress 90 "[2/2]"
|
||||
progress 100 "Done!"
|
||||
echo "$(tput sgr0)"
|
||||
}
|
||||
|
||||
|
||||
# ---------------------------------------
|
||||
# 7. DATE & TIME MANAGEMENT
|
||||
# ---------------------------------------
|
||||
alias bdate="date '+%a, %b %d %Y %T %Z'"
|
||||
alias cal='cal -3'
|
||||
alias da='date "+%Y-%m-%d %A %T %Z"'
|
||||
alias daysleft='echo "There are $(($(date +%j -d"Dec 31, $(date +%Y)")-$(date +%j))) left in year $(date +%Y)."'
|
||||
alias epochtime='date +%s'
|
||||
alias mytime='date +%H:%M:%S'
|
||||
alias secconvert='date -d@1234567890'
|
||||
alias stamp='date "+%Y%m%d%a%H%M"'
|
||||
alias timestamp='date "+%Y%m%dT%H%M%S"'
|
||||
alias today='date +"%A, %B %-d, %Y"'
|
||||
alias weeknum='date +%V'
|
||||
|
||||
|
||||
# ---------------------------------------
|
||||
# 8. WEB DEVELOPMENT
|
||||
# ---------------------------------------
|
||||
|
||||
alias apacheEdit='sudo edit /etc/httpd/httpd.conf' # apacheEdit: Edit httpd.conf
|
||||
alias apacheRestart='sudo apachectl graceful' # apacheRestart: Restart Apache
|
||||
alias editHosts='sudo edit /etc/hosts' # editHosts: Edit /etc/hosts file
|
||||
alias herr='tail /var/log/httpd/error_log' # herr: Tails HTTP error logs
|
||||
alias apacheLogs="less +F /var/log/apache2/error_log" # Apachelogs: Shows apache error logs
|
||||
httpHeaders () { /usr/bin/curl -I -L $@ ; } # httpHeaders: Grabs headers from web page
|
||||
|
||||
# httpDebug: Download a web page and show info on what took time
|
||||
# -------------------------------------------------------------------
|
||||
httpDebug () { /usr/bin/curl $@ -o /dev/null -w "dns: %{time_namelookup} connect: %{time_connect} pretransfer: %{time_pretransfer} starttransfer: %{time_starttransfer} total: %{time_total}\n" ; }
|
||||
|
||||
|
||||
# ---------------------------------------
|
||||
# 9. REMINDERS & NOTES
|
||||
# ---------------------------------------
|
||||
|
||||
# remove_disk: spin down unneeded disk
|
||||
# ---------------------------------------
|
||||
# diskutil eject /dev/disk1s3
|
||||
|
||||
# to change the password on an encrypted disk image:
|
||||
# ---------------------------------------
|
||||
# hdiutil chpass /path/to/the/diskimage
|
||||
|
||||
# to mount a read-only disk image as read-write:
|
||||
# ---------------------------------------
|
||||
# hdiutil attach example.dmg -shadow /tmp/example.shadow -noverify
|
||||
|
||||
# mounting a removable drive (of type msdos or hfs)
|
||||
# ---------------------------------------
|
||||
# mkdir /Volumes/Foo
|
||||
# ls /dev/disk* to find out the device to use in the mount command)
|
||||
# mount -t msdos /dev/disk1s1 /Volumes/Foo
|
||||
# mount -t hfs /dev/disk1s1 /Volumes/Foo
|
||||
|
||||
# to create a file of a given size: /usr/sbin/mkfile or /usr/bin/hdiutil
|
||||
# ---------------------------------------
|
||||
# e.g.: mkfile 10m 10MB.dat
|
||||
# e.g.: hdiutil create -size 10m 10MB.dmg
|
||||
# the above create files that are almost all zeros - if random bytes are desired
|
||||
# then use: ~/Dev/Perl/randBytes 1048576 > 10MB.dat
|
237
plugins/git/git.plugin.sh
Normal file
237
plugins/git/git.plugin.sh
Normal file
@@ -0,0 +1,237 @@
|
||||
#
|
||||
# Functions
|
||||
#
|
||||
|
||||
# The name of the current branch
|
||||
# Back-compatibility wrapper for when this function was defined here in
|
||||
# the plugin, before being pulled in to core lib/git.zsh as git_current_branch()
|
||||
# to fix the core -> git plugin dependency.
|
||||
function current_branch() {
|
||||
git_current_branch
|
||||
}
|
||||
# The list of remotes
|
||||
function current_repository() {
|
||||
if ! $_omb_git_git_cmd rev-parse --is-inside-work-tree &> /dev/null; then
|
||||
return
|
||||
fi
|
||||
echo $($_omb_git_git_cmd remote -v | cut -d':' -f 2)
|
||||
}
|
||||
# Pretty log messages
|
||||
function _git_log_prettily(){
|
||||
if ! [ -z $1 ]; then
|
||||
git log --pretty=$1
|
||||
fi
|
||||
}
|
||||
# Warn if the current branch is a WIP
|
||||
function work_in_progress() {
|
||||
if $(git log -n 1 2>/dev/null | grep -q -c "\-\-wip\-\-"); then
|
||||
echo "WIP!!"
|
||||
fi
|
||||
}
|
||||
|
||||
#
|
||||
# Aliases
|
||||
# (sorted alphabetically)
|
||||
#
|
||||
|
||||
alias g='git'
|
||||
|
||||
alias ga='git add'
|
||||
alias gaa='git add --all'
|
||||
alias gapa='git add --patch'
|
||||
alias gau='git add --update'
|
||||
|
||||
alias gb='git branch'
|
||||
alias gba='git branch -a'
|
||||
alias gbd='git branch -d'
|
||||
alias gbda='git branch --no-color --merged | command grep -vE "^(\*|\s*(master|develop|dev)\s*$)" | command xargs -n 1 git branch -d'
|
||||
alias gbl='git blame -b -w'
|
||||
alias gbnm='git branch --no-merged'
|
||||
alias gbr='git branch --remote'
|
||||
alias gbs='git bisect'
|
||||
alias gbsb='git bisect bad'
|
||||
alias gbsg='git bisect good'
|
||||
alias gbsr='git bisect reset'
|
||||
alias gbss='git bisect start'
|
||||
|
||||
alias gc='git commit -v'
|
||||
alias gc!='git commit -v --amend'
|
||||
alias gcn!='git commit -v --no-edit --amend'
|
||||
alias gca='git commit -v -a'
|
||||
alias gca!='git commit -v -a --amend'
|
||||
alias gcan!='git commit -v -a --no-edit --amend'
|
||||
alias gcans!='git commit -v -a -s --no-edit --amend'
|
||||
alias gcam='git commit -a -m'
|
||||
alias gcsm='git commit -s -m'
|
||||
alias gcb='git checkout -b'
|
||||
alias gcf='git config --list'
|
||||
alias gcl='git clone --recursive'
|
||||
alias gclean='git clean -fd'
|
||||
alias gpristine='git reset --hard && git clean -dfx'
|
||||
alias gcm='git checkout master'
|
||||
alias gcd='git checkout develop'
|
||||
alias gcmsg='git commit -m'
|
||||
alias gco='git checkout'
|
||||
alias gcount='git shortlog -sn'
|
||||
compdef _git gcount
|
||||
alias gcp='git cherry-pick'
|
||||
alias gcpa='git cherry-pick --abort'
|
||||
alias gcpc='git cherry-pick --continue'
|
||||
alias gcs='git commit -S'
|
||||
|
||||
alias gd='git diff'
|
||||
alias gdca='git diff --cached'
|
||||
alias gdct='git describe --tags `git rev-list --tags --max-count=1`'
|
||||
alias gdt='git diff-tree --no-commit-id --name-only -r'
|
||||
alias gdw='git diff --word-diff'
|
||||
|
||||
gdv() { git diff -w "$@" | view - }
|
||||
compdef _git gdv=git-diff
|
||||
|
||||
alias gf='git fetch'
|
||||
alias gfa='git fetch --all --prune'
|
||||
alias gfo='git fetch origin'
|
||||
|
||||
function gfg() { git ls-files | grep $@ }
|
||||
compdef _grep gfg
|
||||
|
||||
alias gg='git gui citool'
|
||||
alias gga='git gui citool --amend'
|
||||
|
||||
ggf() {
|
||||
[[ "$#" != 1 ]] && local b="$(git_current_branch)"
|
||||
git push --force origin "${b:=$1}"
|
||||
}
|
||||
compdef _git ggf=git-checkout
|
||||
|
||||
ggl() {
|
||||
if [[ "$#" != 0 ]] && [[ "$#" != 1 ]]; then
|
||||
git pull origin "${*}"
|
||||
else
|
||||
[[ "$#" == 0 ]] && local b="$(git_current_branch)"
|
||||
git pull origin "${b:=$1}"
|
||||
fi
|
||||
}
|
||||
compdef _git ggl=git-checkout
|
||||
|
||||
ggp() {
|
||||
if [[ "$#" != 0 ]] && [[ "$#" != 1 ]]; then
|
||||
git push origin "${*}"
|
||||
else
|
||||
[[ "$#" == 0 ]] && local b="$(git_current_branch)"
|
||||
git push origin "${b:=$1}"
|
||||
fi
|
||||
}
|
||||
compdef _git ggp=git-checkout
|
||||
|
||||
ggpnp() {
|
||||
if [[ "$#" == 0 ]]; then
|
||||
ggl && ggp
|
||||
else
|
||||
ggl "${*}" && ggp "${*}"
|
||||
fi
|
||||
}
|
||||
compdef _git ggpnp=git-checkout
|
||||
|
||||
ggu() {
|
||||
[[ "$#" != 1 ]] && local b="$(git_current_branch)"
|
||||
git pull --rebase origin "${b:=$1}"
|
||||
}
|
||||
compdef _git ggu=git-checkout
|
||||
|
||||
alias ggpur='ggu'
|
||||
compdef _git ggpur=git-checkout
|
||||
|
||||
alias ggpull='git pull origin $(git_current_branch)'
|
||||
compdef _git ggpull=git-checkout
|
||||
|
||||
alias ggpush='git push origin $(git_current_branch)'
|
||||
compdef _git ggpush=git-checkout
|
||||
|
||||
alias ggsup='git branch --set-upstream-to=origin/$(git_current_branch)'
|
||||
alias gpsup='git push --set-upstream origin $(git_current_branch)'
|
||||
|
||||
alias ghh='git help'
|
||||
|
||||
alias gignore='git update-index --assume-unchanged'
|
||||
alias gignored='git ls-files -v | grep "^[[:lower:]]"'
|
||||
alias git-svn-dcommit-push='git svn dcommit && git push github master:svntrunk'
|
||||
compdef _git git-svn-dcommit-push=git
|
||||
|
||||
alias gk='\gitk --all --branches'
|
||||
compdef _git gk='gitk'
|
||||
alias gke='\gitk --all $(git log -g --pretty=%h)'
|
||||
compdef _git gke='gitk'
|
||||
|
||||
alias gl='git pull'
|
||||
alias glg='git log --stat'
|
||||
alias glgp='git log --stat -p'
|
||||
alias glgg='git log --graph'
|
||||
alias glgga='git log --graph --decorate --all'
|
||||
alias glgm='git log --graph --max-count=10'
|
||||
alias glo='git log --oneline --decorate'
|
||||
alias glol="git log --graph --pretty='%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
|
||||
alias glola="git log --graph --pretty='%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --all"
|
||||
alias glog='git log --oneline --decorate --graph'
|
||||
alias gloga='git log --oneline --decorate --graph --all'
|
||||
alias glp="_git_log_prettily"
|
||||
compdef _git glp=git-log
|
||||
|
||||
alias gm='git merge'
|
||||
alias gmom='git merge origin/master'
|
||||
alias gmt='git mergetool --no-prompt'
|
||||
alias gmtvim='git mergetool --no-prompt --tool=vimdiff'
|
||||
alias gmum='git merge upstream/master'
|
||||
|
||||
alias gp='git push'
|
||||
alias gpd='git push --dry-run'
|
||||
alias gpoat='git push origin --all && git push origin --tags'
|
||||
compdef _git gpoat=git-push
|
||||
alias gpu='git push upstream'
|
||||
alias gpv='git push -v'
|
||||
|
||||
alias gr='git remote'
|
||||
alias gra='git remote add'
|
||||
alias grb='git rebase'
|
||||
alias grba='git rebase --abort'
|
||||
alias grbc='git rebase --continue'
|
||||
alias grbi='git rebase -i'
|
||||
alias grbm='git rebase master'
|
||||
alias grbs='git rebase --skip'
|
||||
alias grh='git reset HEAD'
|
||||
alias grhh='git reset HEAD --hard'
|
||||
alias grmv='git remote rename'
|
||||
alias grrm='git remote remove'
|
||||
alias grset='git remote set-url'
|
||||
alias grt='cd $(git rev-parse --show-toplevel || echo ".")'
|
||||
alias gru='git reset --'
|
||||
alias grup='git remote update'
|
||||
alias grv='git remote -v'
|
||||
|
||||
alias gsb='git status -sb'
|
||||
alias gsd='git svn dcommit'
|
||||
alias gsi='git submodule init'
|
||||
alias gsps='git show --pretty=short --show-signature'
|
||||
alias gsr='git svn rebase'
|
||||
alias gss='git status -s'
|
||||
alias gst='git status'
|
||||
alias gsta='git stash save'
|
||||
alias gstaa='git stash apply'
|
||||
alias gstc='git stash clear'
|
||||
alias gstd='git stash drop'
|
||||
alias gstl='git stash list'
|
||||
alias gstp='git stash pop'
|
||||
alias gsts='git stash show --text'
|
||||
alias gsu='git submodule update'
|
||||
|
||||
alias gts='git tag -s'
|
||||
alias gtv='git tag | sort -V'
|
||||
|
||||
alias gunignore='git update-index --no-assume-unchanged'
|
||||
alias gunwip='git log -n 1 | grep -q -c "\-\-wip\-\-" && git reset HEAD~1'
|
||||
alias gup='git pull --rebase'
|
||||
alias gupv='git pull --rebase -v'
|
||||
alias glum='git pull upstream master'
|
||||
|
||||
alias gwch='git whatchanged -p --abbrev-commit --pretty=medium'
|
||||
alias gwip='git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify -m "--wip-- [skip ci]"'
|
60
plugins/progress/progress.plugin.sh
Normal file
60
plugins/progress/progress.plugin.sh
Normal file
@@ -0,0 +1,60 @@
|
||||
#!/bin/bash
|
||||
############################---Description---###################################
|
||||
# #
|
||||
# Summary : Show a progress bar GUI on terminal platform #
|
||||
# Support : destro.nnt@gmail.com #
|
||||
# Created date : Aug 12,2014 #
|
||||
# Latest Modified date : Aug 13,2014 #
|
||||
# #
|
||||
################################################################################
|
||||
|
||||
############################---Usage---#########################################
|
||||
|
||||
# Copy below functions (delay and progress fuctions) into your shell script directly
|
||||
# Then invoke progress function to show progress bar
|
||||
|
||||
# In other way, you could import source indirectly then using. Nothing different
|
||||
|
||||
################################################################################
|
||||
|
||||
|
||||
#
|
||||
# Description : delay executing script
|
||||
#
|
||||
function delay()
|
||||
{
|
||||
sleep 0.2;
|
||||
}
|
||||
|
||||
#
|
||||
# Description : print out executing progress
|
||||
#
|
||||
CURRENT_PROGRESS=0
|
||||
function progress()
|
||||
{
|
||||
PARAM_PROGRESS=$1;
|
||||
PARAM_STATUS=$2;
|
||||
|
||||
if [ $CURRENT_PROGRESS -le 0 -a $PARAM_PROGRESS -ge 0 ] ; then echo -ne "[..........................] (0%) $PARAM_PHASE \r" ; delay; fi;
|
||||
if [ $CURRENT_PROGRESS -le 5 -a $PARAM_PROGRESS -ge 5 ] ; then echo -ne "[#.........................] (5%) $PARAM_PHASE \r" ; delay; fi;
|
||||
if [ $CURRENT_PROGRESS -le 10 -a $PARAM_PROGRESS -ge 10 ]; then echo -ne "[##........................] (10%) $PARAM_PHASE \r" ; delay; fi;
|
||||
if [ $CURRENT_PROGRESS -le 15 -a $PARAM_PROGRESS -ge 15 ]; then echo -ne "[###.......................] (15%) $PARAM_PHASE \r" ; delay; fi;
|
||||
if [ $CURRENT_PROGRESS -le 20 -a $PARAM_PROGRESS -ge 20 ]; then echo -ne "[####......................] (20%) $PARAM_PHASE \r" ; delay; fi;
|
||||
if [ $CURRENT_PROGRESS -le 25 -a $PARAM_PROGRESS -ge 25 ]; then echo -ne "[#####.....................] (25%) $PARAM_PHASE \r" ; delay; fi;
|
||||
if [ $CURRENT_PROGRESS -le 30 -a $PARAM_PROGRESS -ge 30 ]; then echo -ne "[######....................] (30%) $PARAM_PHASE \r" ; delay; fi;
|
||||
if [ $CURRENT_PROGRESS -le 35 -a $PARAM_PROGRESS -ge 35 ]; then echo -ne "[#######...................] (35%) $PARAM_PHASE \r" ; delay; fi;
|
||||
if [ $CURRENT_PROGRESS -le 40 -a $PARAM_PROGRESS -ge 40 ]; then echo -ne "[########..................] (40%) $PARAM_PHASE \r" ; delay; fi;
|
||||
if [ $CURRENT_PROGRESS -le 45 -a $PARAM_PROGRESS -ge 45 ]; then echo -ne "[#########.................] (45%) $PARAM_PHASE \r" ; delay; fi;
|
||||
if [ $CURRENT_PROGRESS -le 50 -a $PARAM_PROGRESS -ge 50 ]; then echo -ne "[##########................] (50%) $PARAM_PHASE \r" ; delay; fi;
|
||||
if [ $CURRENT_PROGRESS -le 55 -a $PARAM_PROGRESS -ge 55 ]; then echo -ne "[###########...............] (55%) $PARAM_PHASE \r" ; delay; fi;
|
||||
if [ $CURRENT_PROGRESS -le 60 -a $PARAM_PROGRESS -ge 60 ]; then echo -ne "[############..............] (60%) $PARAM_PHASE \r" ; delay; fi;
|
||||
if [ $CURRENT_PROGRESS -le 65 -a $PARAM_PROGRESS -ge 65 ]; then echo -ne "[#############.............] (65%) $PARAM_PHASE \r" ; delay; fi;
|
||||
if [ $CURRENT_PROGRESS -le 70 -a $PARAM_PROGRESS -ge 70 ]; then echo -ne "[###############...........] (70%) $PARAM_PHASE \r" ; delay; fi;
|
||||
if [ $CURRENT_PROGRESS -le 75 -a $PARAM_PROGRESS -ge 75 ]; then echo -ne "[#################.........] (75%) $PARAM_PHASE \r" ; delay; fi;
|
||||
if [ $CURRENT_PROGRESS -le 80 -a $PARAM_PROGRESS -ge 80 ]; then echo -ne "[####################......] (80%) $PARAM_PHASE \r" ; delay; fi;
|
||||
if [ $CURRENT_PROGRESS -le 85 -a $PARAM_PROGRESS -ge 85 ]; then echo -ne "[#######################...] (90%) $PARAM_PHASE \r" ; delay; fi;
|
||||
if [ $CURRENT_PROGRESS -le 90 -a $PARAM_PROGRESS -ge 90 ]; then echo -ne "[##########################] (100%) $PARAM_PHASE \r" ; delay; fi;
|
||||
if [ $CURRENT_PROGRESS -le 100 -a $PARAM_PROGRESS -ge 100 ];then echo -ne 'Done! \n' ; delay; fi;
|
||||
|
||||
CURRENT_PROGRESS=$PARAM_PROGRESS;
|
||||
}
|
Reference in New Issue
Block a user