-
-
Save mgunneras/83685c3bcaba3b3d93692b698130c333 to your computer and use it in GitHub Desktop.
Mac OSX Bash Profile
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# --------------------------------------------------------------------------- | |
# | |
# Description: This file holds all my BASH configurations and aliases | |
# | |
# Sections: | |
# 1. Environment Configuration | |
# 2. Make Terminal Better (remapping defaults and adding functionality) | |
# 3. File and Folder Management | |
# 4. Searching | |
# 5. Process Management | |
# 6. Networking | |
# 7. System Operations & Information | |
# 8. Web Development | |
# 9. Reminders & Notes | |
# | |
# --------------------------------------------------------------------------- | |
# ------------------------------- | |
# 1. ENVIRONMENT CONFIGURATION | |
# ------------------------------- | |
# Change Prompt | |
# ------------------------------------------------------------ | |
source ~/.bash_prompt | |
# Set Paths | |
# ------------------------------------------------------------ | |
export PATH="$PATH:/usr/local/bin/" | |
export PATH="/usr/local/git/bin:/sw/bin/:/usr/local/bin:/usr/local/:/usr/local/sbin:/usr/local/mysql/bin:$PATH" | |
export PATH="/usr/local/opt/avr-gcc@6/bin:$PATH" | |
# Set Default Editor (change 'Nano' to the editor of your choice) | |
# ------------------------------------------------------------ | |
export EDITOR=/usr/bin/vim | |
# Set default blocksize for ls, df, du | |
# from this: http://hints.macworld.com/comment.php?mode=view&cid=24491 | |
# ------------------------------------------------------------ | |
export BLOCKSIZE=1k | |
# Add color to terminal | |
# (this is all commented out as I use Mac Terminal Profiles) | |
# from http://osxdaily.com/2012/02/21/add-color-to-the-terminal-in-mac-os-x/ | |
# ------------------------------------------------------------ | |
# export CLICOLOR=1 | |
# export LSCOLORS=ExFxBxDxCxegedabagacad | |
# ----------------------------- | |
# 2. 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 -FGlAhp' # Preferred 'ls' implementation | |
alias less='less -FSRXc' # Preferred 'less' implementation | |
alias cd..='cd ../' # Go back 1 directory level (for fast typers) | |
alias f='open -a Finder ./' # f: Opens current directory in MacOS Finder | |
alias which='type -all' # which: Find executables | |
alias path='echo -e ${PATH//:/\\n}' # path: Echo all executable Paths | |
mcd () { mkdir -p "$1" && cd "$1"; } # mcd: Makes new Dir and jumps inside | |
ql () { qlmanage -p "$*" >& /dev/null; } # ql: Opens any file in MacOS Quicklook Preview | |
# lr: Full Recursive Directory Listing | |
# ------------------------------------------ | |
alias lr='ls -R | grep ":$" | sed -e '\''s/:$//'\'' -e '\''s/[^-][^\/]*\//--/g'\'' -e '\''s/^/ /'\'' -e '\''s/-/|/'\'' | less' | |
# ------------------------------- | |
# 3. FILE AND FOLDER MANAGEMENT | |
# ------------------------------- | |
# cdf: 'Cd's to frontmost window of MacOS Finder | |
# ------------------------------------------------------ | |
cdf () { | |
currFolderPath=$( /usr/bin/osascript <<EOT | |
tell application "Finder" | |
try | |
set currFolder to (folder of the front window as alias) | |
on error | |
set currFolder to (path to desktop folder as alias) | |
end try | |
POSIX path of currFolder | |
end tell | |
EOT | |
) | |
echo "cd to \"$currFolderPath\"" | |
cd "$currFolderPath" | |
} | |
# 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 | |
} | |
# --------------------------- | |
# 4. SEARCHING | |
# --------------------------- | |
# --------------------------- | |
# 5. 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 "$@" ; } | |
# --------------------------- | |
# 6. NETWORKING | |
# --------------------------- | |
alias myip='curl ip.appspot.com' # myip: Public facing IP Address | |
# 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 | |
} | |
export WORKON_HOME=~/Virtualenvs | |
source /usr/local/bin/virtualenvwrapper.sh | |
export NVM_DIR="$HOME/.nvm" | |
source "/usr/local/opt/nvm/nvm.sh" | |
# Make sure to install reattach-to-user-namespace | |
alias open='reattach-to-user-namespace open' |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Shell prompt based on the Solarized Dark theme. | |
# Screenshot: http://i.imgur.com/EkEtphC.png | |
# Heavily inspired by @necolas’s prompt: https://github.com/necolas/dotfiles | |
# iTerm → Profiles → Text → use 13pt Monaco with 1.1 vertical spacing. | |
if [[ $COLORTERM = gnome-* && $TERM = xterm ]] && infocmp gnome-256color >/dev/null 2>&1; then | |
export TERM='gnome-256color'; | |
elif infocmp xterm-256color >/dev/null 2>&1; then | |
export TERM='xterm-256color'; | |
fi; | |
prompt_git() { | |
local s=''; | |
local branchName=''; | |
# Check if the current directory is in a Git repository. | |
if [ $(git rev-parse --is-inside-work-tree &>/dev/null; echo "${?}") == '0' ]; then | |
# check if the current directory is in .git before running git checks | |
if [ "$(git rev-parse --is-inside-git-dir 2> /dev/null)" == 'false' ]; then | |
# Ensure the index is up to date. | |
git update-index --really-refresh -q &>/dev/null; | |
# Check for uncommitted changes in the index. | |
if ! $(git diff --quiet --ignore-submodules --cached); then | |
s+='+'; | |
fi; | |
# Check for unstaged changes. | |
if ! $(git diff-files --quiet --ignore-submodules --); then | |
s+='!'; | |
fi; | |
# Check for untracked files. | |
if [ -n "$(git ls-files --others --exclude-standard)" ]; then | |
s+='?'; | |
fi; | |
# Check for stashed files. | |
if $(git rev-parse --verify refs/stash &>/dev/null); then | |
s+='$'; | |
fi; | |
fi; | |
# Get the short symbolic ref. | |
# If HEAD isn’t a symbolic ref, get the short SHA for the latest commit | |
# Otherwise, just give up. | |
branchName="$(git symbolic-ref --quiet --short HEAD 2> /dev/null || \ | |
git rev-parse --short HEAD 2> /dev/null || \ | |
echo '(unknown)')"; | |
[ -n "${s}" ] && s=" [${s}]"; | |
echo -e "${1}${branchName}${2}${s}"; | |
else | |
return; | |
fi; | |
} | |
if tput setaf 1 &> /dev/null; then | |
tput sgr0; # reset colors | |
bold=$(tput bold); | |
reset=$(tput sgr0); | |
# Solarized colors, taken from http://git.io/solarized-colors. | |
black=$(tput setaf 0); | |
blue=$(tput setaf 33); | |
cyan=$(tput setaf 37); | |
green=$(tput setaf 64); | |
orange=$(tput setaf 166); | |
purple=$(tput setaf 125); | |
red=$(tput setaf 124); | |
violet=$(tput setaf 61); | |
white=$(tput setaf 15); | |
yellow=$(tput setaf 136); | |
else | |
bold=''; | |
reset="\e[0m"; | |
black="\e[1;30m"; | |
blue="\e[1;34m"; | |
cyan="\e[1;36m"; | |
green="\e[1;32m"; | |
orange="\e[1;33m"; | |
purple="\e[1;35m"; | |
red="\e[1;31m"; | |
violet="\e[1;35m"; | |
white="\e[1;37m"; | |
yellow="\e[1;33m"; | |
fi; | |
# Highlight the user name when logged in as root. | |
if [[ "${USER}" == "root" ]]; then | |
userStyle="${red}"; | |
else | |
userStyle="${orange}"; | |
fi; | |
# Highlight the hostname when connected via SSH. | |
if [[ "${SSH_TTY}" ]]; then | |
hostStyle="${bold}${red}"; | |
else | |
hostStyle="${yellow}"; | |
fi; | |
# Set the terminal title and prompt. | |
PS1="\[\033]0;\W\007\]"; # working directory base name | |
#PS1+="\[${bold}\]\n"; # newline | |
#PS1+="\[${userStyle}\]\u"; # username | |
#PS1+="\[${white}\]@"; | |
PS1+="\[${hostStyle}\]\h"; # host | |
PS1+="\[${white}\] in "; | |
PS1+="\[${green}\]\w"; # working directory full path | |
PS1+="\$(prompt_git \"\[${white}\] on \[${violet}\]\" \"\[${blue}\]\")"; # Git repository details | |
#PS1+="\n"; | |
PS1+="\[${white}\] \$ \[${reset}\]"; # `$` (and reset color) | |
export PS1; | |
PS2="\[${yellow}\]→ \[${reset}\]"; | |
export PS2; | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment