Skip to content

Instantly share code, notes, and snippets.

@evanfoster
Last active May 3, 2016 21:01
Show Gist options
  • Save evanfoster/7396de13b0979e6f2f32c6cd9e1dca6c to your computer and use it in GitHub Desktop.
Save evanfoster/7396de13b0979e6f2f32c6cd9e1dca6c to your computer and use it in GitHub Desktop.
############
# Completion
############
autoload -U compinit promptinit
compinit
promptinit
############
# Shell opts
############
# Autocomplete aliases.
setopt completealiases
# Ignore history duplicates.
setopt HIST_IGNORE_DUPS
# Hash automatically so that executables are found on install.
setopt nohashdirs
############
# Keybindings
############
# Use emacs mode.
bindkey -e
# Forward and back words with control.
bindkey "^[Od" backward-word
bindkey "^[Oc" forward-word
############
# Variables
############
export PATH=/home/$USER/go/bin:$PATH
export GOPATH=/home/$USER/go
export EDITOR=nvim
export FZF_DEFAULT_COMMAND='find .'
export PYTHONSTARTUP=/home/$USER/.pystart
export LESS='-R'
export LESSOPEN='|~/.lessfilter %s'
# Set term so prompt works
#export TERM="xterm-256color"
############
# Aliases
############
# Make ls colorful.
alias ls='ls --color=auto'
# Make an alias for ll because permissions and stuff.
alias ll='ls -l'
# Alias ssh to use TERM=xterm for compatibility reasons.
alias ssh='TERM=xterm ssh'
# Make this more work appropriate.
alias gosh='fuck'
# Yay Neovim!
alias vim='nvim'
alias picospeaker="picospeaker -l 'en-US'"
alias drop_the_beat="espeak -s 80 -v english-us -p 0 'boom ebrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbr' &> /dev/null"
alias sardonic_laugh="espeak -a 200 -p 0 -s 80 'ha ha ha' &> /dev/null"
alias devdocs="google-chrome-beta http://localhost:9292"
alias tcp_ports="ss -ntlp | column -t"
#####
# Super fun auto stuff!~
#####
alias -s cap=wireshark
alias -s zip="unzip -l"
alias -s rar="unrar l"
alias -s tar="tar tf"
alias -s tar.gz="echo "
############
# Sourcing
############
# Antigen is cool
source /home/$USER/.zsh/antigen/antigen.zsh
# zsh sexy sexy syntax highlighting
source /home/$USER/.zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
############
# Antigen
############
eval $(thefuck --alias)
# Gotta do this to make the prompt work
antigen use oh-my-zsh
# Cool powerline prompt
antigen theme https://github.com/caiogondim/bullet-train-oh-my-zsh-theme bullet-train
# THIS LINE LAST. Apply antigen stuff.
antigen apply
############
# Functions
############
google_speak () {
local file speech_string
if [[ ! -d ~/.cache/google_speak ]]; then
mkdir -p ~/.cache/google_speak
fi
speech_string="$*"
file="$HOME/.cache/google_speak/$speech_string.mp3"
if [[ ! -e $file ]]; then
gtts-cli -o "$file" -l 'en' "$speech_string"
fi
play "$file"
}
# ssh_retry function. It will check to see if port 22 is open on a loop, and once it is, it will ssh and notify the user with visual and audio cues.
ssh_retry () {
local userToSSHAs serverToSSH splitUp stringToSpeak
if [[ $1 =~ @ ]]; then
splitUp=($(tr '@' '\n' <<<"$1"))
userToSSHAs=${splitUp[1]}
serverToSSH=${splitUp[2]}
else
userToSSHAs="$1"; shift
serverToSSH="$1"
fi
if [[ -z "$userToSSHAs" || -z "$serverToSSH" ]]; then
echo "Missing argument! Syntax is \"ssh_retry [user] [IP address/hostname]\""
return 1
fi
stringToSpeak="Connected to $serverToSSH"
while true; do
nc -z "$serverToSSH" 22
if nc -z "$serverToSSH" 22; then
# Say stuff. I like voice_cstr_us_awb_arctic_multisyn for the voice, he's a pleasing Scottish man.
#(festival --tts <<<"$stringToSpeak" &> /dev/null &)
#(picospeaker -r 40 "$stringToSpeak" &> /dev/null &)
(google_speak "$stringToSpeak" &> /dev/null &)
figlet -t -W "Connected to $serverToSSH as $userToSSHAs"
ssh "$userToSSHAs"@"$serverToSSH"
break
else
echo "SSH port not yet open. Retrying."
sleep 1
fi
done
}
subl_find () {
local searchResults
searchResults="$(fzf)" && subl3 "$searchResults"
}
vimfind () {
local searchResults
searchResults="$(fzf)" && nvim "$searchResults"
}
catfind () {
local searchResults
searchResults="$(fzf)" && cat "$searchResults"
}
cdfind () {
local searchResults
searchResults="$(fzf)" && cd "$searchResults"
}
cf () {
local searchResults command
command="$*"
searchResults="$(fzf)" && eval "$command $searchResults"
}
exp() { curl -Gs "https://www.mankier.com/api/explain/?cols=$(tput cols)" --data-urlencode "q=$*"; }
subl3 () {
if test -t 0; then
# Stdin is a terminal.
# Open sublime normally.
/usr/bin/subl3 "$@"
else
# Stdin is not a terminal, it must be a pipe.
# Pipe stdin to a temporary file, and open it in sublime.
FILENAME=$(mktemp)
cat >"$FILENAME" && /usr/bin/subl3 "$FILENAME" "$@"
fi
}
grab_macs () {
if [[ -z "$1" ]]; then
echo "Please provide user@server"
return 1
fi
ssh "$1" <<-'HEREDOC'
ip a | grep -oE 'link/ether [0-9a-g:]+' | sed 's:link/ether ::g' | uniq | sed 's/://g' | awk '{print toupper($0)}'
HEREDOC
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment