Reorganize bash config.
This commit is contained in:
90
includes/bash_aliases.sh
Normal file
90
includes/bash_aliases.sh
Normal file
@ -0,0 +1,90 @@
|
||||
# Easier navigation: .., ..., ...., ....., ~ and -
|
||||
alias ..="cd .."
|
||||
alias ...="cd ../.."
|
||||
alias ....="cd ../../.."
|
||||
alias .....="cd ../../../.."
|
||||
alias ~="cd ~"
|
||||
alias -- -="cd -" # The alias is `-`, not `--`
|
||||
|
||||
# Shortcuts
|
||||
alias dr="cd ~/Dropbox"
|
||||
#alias dl="cd ~/Downloads"
|
||||
#alias dt="cd ~/Desktop"
|
||||
alias pj="cd ~/Dropbox/Projects"
|
||||
alias o="open"
|
||||
alias oo="open ."
|
||||
|
||||
# Detect which `ls` flavor is in use
|
||||
if ls --color > /dev/null 2>&1; then # GNU `ls`
|
||||
colorflag="--color"
|
||||
else # OS X `ls`
|
||||
colorflag="-G"
|
||||
fi
|
||||
|
||||
# Always use color output for `ls`
|
||||
alias ls="command ls ${colorflag}"
|
||||
export LS_COLORS='no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.ogg=01;35:*.mp3=01;35:*.wav=01;35:'
|
||||
|
||||
# Enable aliases to be sudo’ed
|
||||
alias sudo='sudo '
|
||||
|
||||
# Gzip-enabled `curl`
|
||||
#alias gurl="curl --compressed"
|
||||
|
||||
# Get OS X Software Updates, and update installed Ruby gems, Homebrew, npm, and their installed packages
|
||||
alias update='sudo softwareupdate -i -a; brew update; brew upgrade; brew cleanup; npm update npm -g; npm update -g; sudo gem update'
|
||||
|
||||
# Clean up LaunchServices to remove duplicates in the “Open With” menu
|
||||
#alias lscleanup="/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user && killall Finder"
|
||||
|
||||
# Trim new lines and copy to clipboard
|
||||
alias c="tr -d '\n' | pbcopy"
|
||||
|
||||
# Recursively delete `.DS_Store` files
|
||||
#alias cleanup="find . -type f -name '*.DS_Store' -ls -delete"
|
||||
|
||||
# Empty the Trash on all mounted volumes and the main HDD
|
||||
# Also, clear Apple’s System Logs to improve shell startup speed
|
||||
alias emptytrash="sudo rm -rfv /Volumes/*/.Trashes; sudo rm -rfv ~/.Trash; sudo rm -rfv /private/var/log/asl/*.asl"
|
||||
|
||||
# Show/hide hidden files in Finder
|
||||
alias show="defaults write com.apple.Finder AppleShowAllFiles -bool true && killall Finder"
|
||||
alias hide="defaults write com.apple.Finder AppleShowAllFiles -bool false && killall Finder"
|
||||
|
||||
# URL-encode strings
|
||||
#alias urlencode='python -c "import sys, urllib as ul; print ul.quote_plus(sys.argv[1]);"'
|
||||
|
||||
# Ring the terminal bell, and put a badge on Terminal.app’s Dock icon
|
||||
# (useful when executing time-consuming commands)
|
||||
#alias badge="tput bel"
|
||||
|
||||
# HTTP requests
|
||||
for method in GET HEAD POST PUT DELETE TRACE OPTIONS; do
|
||||
alias "$method"="lwp-request -m '$method'"
|
||||
done
|
||||
|
||||
# Convert line endings to UNIX
|
||||
alias dos2unix="perl -pi -e 's/\r\n?/\n/g' "
|
||||
|
||||
# Password generator
|
||||
password() { openssl rand -base64 ${1:-8} | c; }
|
||||
|
||||
# Git root
|
||||
alias gr='[ ! -z `git rev-parse --show-cdup` ] && cd `git rev-parse --show-cdup || pwd`'
|
||||
|
||||
# NPM
|
||||
alias npm-patch='npm version patch -m "%s"'
|
||||
alias npm-release='npm version minor -m "%s"'
|
||||
|
||||
# Grunt
|
||||
alias gw="grunt deploy --debug && grunt watch --debug"
|
||||
ginit() { grunt init:$@; }
|
||||
|
||||
# Magic Project Opener
|
||||
function proj { cd "$("$HOME/dotfiles/bin/opener.py" "$HOME/Dropbox/Projects" $1 -w project $2)"; }
|
||||
function repo { cd "$("$HOME/dotfiles/bin/opener.py" "$HOME/Dropbox/Projects" $1 -w repo $2)"; }
|
||||
function wptheme { cd "$("$HOME/dotfiles/bin/opener.py" "$HOME/Dropbox/Projects" $1 -w wptheme $2)"; }
|
||||
|
||||
# Load external aliases
|
||||
source ~/dotfiles/includes/functions.sh
|
||||
|
121
includes/bash_prompt.sh
Normal file
121
includes/bash_prompt.sh
Normal file
@ -0,0 +1,121 @@
|
||||
# Inspired by: https://github.com/dreadatour/dotfiles/blob/master/.bash_profile
|
||||
|
||||
# Setup color variables
|
||||
color_is_on=
|
||||
color_red=
|
||||
color_green=
|
||||
color_yellow=
|
||||
color_blue=
|
||||
color_white=
|
||||
color_gray=
|
||||
color_bg_red=
|
||||
color_off=
|
||||
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
|
||||
color_is_on=true
|
||||
color_red="\[$(/usr/bin/tput setaf 1)\]"
|
||||
color_green="\[$(/usr/bin/tput setaf 2)\]"
|
||||
color_yellow="\[$(/usr/bin/tput setaf 3)\]"
|
||||
color_blue="\[$(/usr/bin/tput setaf 6)\]"
|
||||
color_white="\[$(/usr/bin/tput setaf 7)\]"
|
||||
color_gray="\[$(/usr/bin/tput setaf 8)\]"
|
||||
color_off="\[$(/usr/bin/tput sgr0)\]"
|
||||
color_error="$(/usr/bin/tput setab 1)$(/usr/bin/tput setaf 7)"
|
||||
color_error_off="$(/usr/bin/tput sgr0)"
|
||||
|
||||
# set user color
|
||||
case `id -u` in
|
||||
0) color_user=$color_red ;;
|
||||
*) color_user=$color_green ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
|
||||
# Some kind of optimization - check if git installed only on config load
|
||||
PS1_GIT_BIN=$(which git 2>/dev/null)
|
||||
|
||||
function prompt_command {
|
||||
local PS1_GIT=
|
||||
local GIT_BRANCH=
|
||||
local GIT_DIRTY=
|
||||
local PWDNAME=$PWD
|
||||
|
||||
# Beautify working directory name
|
||||
if [ $HOME == $PWD ]; then
|
||||
PWDNAME="~"
|
||||
elif [ $HOME == ${PWD:0:${#HOME}} ]; then
|
||||
PWDNAME="~${PWD:${#HOME}}"
|
||||
fi
|
||||
|
||||
# Parse git status and get git variables
|
||||
if [[ ! -z $PS1_GIT_BIN ]]; then
|
||||
# check we are in git repo
|
||||
local CUR_DIR=$PWD
|
||||
while [[ ! -d "${CUR_DIR}/.git" ]] && [[ ! "${CUR_DIR}" == "/" ]] && [[ ! "${CUR_DIR}" == "~" ]] && [[ ! "${CUR_DIR}" == "" ]]; do CUR_DIR=${CUR_DIR%/*}; done
|
||||
if [[ -d "${CUR_DIR}/.git" ]]; then
|
||||
# 'git repo for dotfiles' fix: show git status only in home dir and other git repos
|
||||
if [[ "${CUR_DIR}" != "${HOME}" ]] || [[ "${PWD}" == "${HOME}" ]]; then
|
||||
# get git branch
|
||||
GIT_BRANCH=$($PS1_GIT_BIN symbolic-ref HEAD 2>/dev/null)
|
||||
if [[ ! -z $GIT_BRANCH ]]; then
|
||||
GIT_BRANCH=${GIT_BRANCH#refs/heads/}
|
||||
|
||||
# get git status
|
||||
local GIT_STATUS=$($PS1_GIT_BIN status --porcelain 2>/dev/null)
|
||||
[[ -n $GIT_STATUS ]] && GIT_DIRTY=1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Build B&W prompt for git
|
||||
[[ ! -z $GIT_BRANCH ]] && PS1_GIT=" #${GIT_BRANCH}"
|
||||
|
||||
# Calculate prompt length
|
||||
local PS1_length=$((${#USER}+${#HOSTNAME}+${#PWDNAME}+${#PS1_GIT}+3))
|
||||
local FILL=
|
||||
|
||||
# Of length is greater, than terminal width
|
||||
if [[ $PS1_length -gt $COLUMNS ]]; then
|
||||
# strip working directory name
|
||||
PWDNAME="...${PWDNAME:$(($PS1_length-$COLUMNS+3))}"
|
||||
else
|
||||
# else calculate fillsize
|
||||
local fillsize=$(($COLUMNS-$PS1_length))
|
||||
FILL=$color_gray
|
||||
while [[ $fillsize -gt 0 ]]; do FILL="${FILL}─"; fillsize=$(($fillsize-1)); done
|
||||
FILL="${FILL}${color_off}"
|
||||
fi
|
||||
|
||||
if $color_is_on; then
|
||||
# Git status for prompt
|
||||
if [ ! -z $GIT_BRANCH ]; then
|
||||
if [ -z $GIT_DIRTY ]; then
|
||||
PS1_GIT=" #${color_green}${GIT_BRANCH}${color_off}"
|
||||
else
|
||||
PS1_GIT=" #${color_red}${GIT_BRANCH}${color_off}"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# set new color prompt
|
||||
PS1="${color_user}${USER}${color_off}@${color_yellow}${HOSTNAME}${color_off}:${color_white}${PWDNAME}${color_off}${PS1_GIT} ${FILL}\n→ "
|
||||
|
||||
# get cursor position and add new line if we're not in first column
|
||||
# cool'n'dirty trick (http://stackoverflow.com/a/2575525/1164595)
|
||||
# XXX FIXME: this hack broke ssh =(
|
||||
# exec < /dev/tty
|
||||
# local OLDSTTY=$(stty -g)
|
||||
# stty raw -echo min 0
|
||||
# echo -en "\033[6n" > /dev/tty && read -sdR CURPOS
|
||||
# stty $OLDSTTY
|
||||
echo -en "\033[6n" && read -sdR CURPOS
|
||||
[[ ${CURPOS##*;} -gt 1 ]] && echo "${color_error}●${color_error_off}"
|
||||
|
||||
# Set title
|
||||
echo -ne "\033]0;${USER}@${HOSTNAME}:${PWDNAME}"; echo -ne "\007"
|
||||
}
|
||||
|
||||
# Set prompt command (title update and color prompt)
|
||||
PROMPT_COMMAND=prompt_command
|
||||
# Set new B&W prompt (will be overwritten in `prompt_command` later with color prompt)
|
||||
PS1='\u@\h:\w\$ '
|
Reference in New Issue
Block a user