Last active
October 15, 2024 16:59
-
-
Save rugbyprof/661950aac1d800972dc5fd2cbcd52966 to your computer and use it in GitHub Desktop.
zshrc file with many shortcuts
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
# ===================================================================================== | |
# 1. PATH SETUP | |
# ===================================================================================== | |
#export PATH=/bin:/usr/bin:/usr/local/bin | |
export TEXINPUTS=/Users/yourUserName/.TexConfigs//: | |
# For SFML programming | |
export LD_LIBRARY_PATH=/usr/local/bin/SFML-2.5.0-macOS-clang/lib | |
# ===================================================================================== | |
# 2. ZSH SETUP | |
# ===================================================================================== | |
# Path to your oh-my-zsh installation. | |
export ZSH="$HOME/.oh-my-zsh" | |
# Set name of the theme to load. Optionally, if you set this to "random" | |
# it'll load a random theme each time that oh-my-zsh is loaded. | |
# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes | |
#ZSH_THEME="robbyrussell" | |
#ZSH_THEME="zeta" | |
#ZSH_THEME="intika" | |
#ZSH_THEME="jonathan" | |
ZSH_THEME="yourUserName" | |
#ZSH_THEME="half-life" | |
#ZSH_THEME="griffdev" | |
# Set list of themes to load | |
# Setting this variable when ZSH_THEME=random | |
# cause zsh load theme from this variable instead of | |
# looking in ~/.oh-my-zsh/themes/ | |
# An empty array have no effect | |
# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" ) | |
# Uncomment the following line to use case-sensitive completion. | |
# CASE_SENSITIVE="true" | |
# Uncomment the following line to use hyphen-insensitive completion. Case | |
# sensitive completion must be off. _ and - will be interchangeable. | |
# HYPHEN_INSENSITIVE="true" | |
# Uncomment the following line to disable bi-weekly auto-update checks. | |
# DISABLE_AUTO_UPDATE="true" | |
# Uncomment the following line to change how often to auto-update (in days). | |
# export UPDATE_ZSH_DAYS=13 | |
# Uncomment the following line to disable colors in ls. | |
# DISABLE_LS_COLORS="true" | |
# Uncomment the following line to disable auto-setting terminal title. | |
# DISABLE_AUTO_TITLE="true" | |
# Uncomment the following line to enable command auto-correction. | |
# ENABLE_CORRECTION="true" | |
# Uncomment the following line to display red dots whilst waiting for completion. | |
# COMPLETION_WAITING_DOTS="true" | |
# Uncomment the following line if you want to disable marking untracked files | |
# under VCS as dirty. This makes repository status check for large repositories | |
# much, much faster. | |
# DISABLE_UNTRACKED_FILES_DIRTY="true" | |
# Uncomment the following line if you want to change the command execution time | |
# stamp shown in the history command output. | |
# The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" | |
# HIST_STAMPS="mm/dd/yyyy" | |
# Would you like to use another custom folder than $ZSH/custom? | |
# ZSH_CUSTOM=/path/to/new-custom-folder | |
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*) | |
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/ | |
# Example format: plugins=(rails git textmate ruby lighthouse) | |
# Add wisely, as too many plugins slow down shell startup. | |
#git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions | |
plugins=( | |
git | |
zsh-autosuggestions | |
zsh-syntax-highlighting | |
) | |
source $ZSH/oh-my-zsh.sh | |
# ===================================================================================== | |
# 3. TERMINAL ADDITIONS | |
# ===================================================================================== | |
# User configuration | |
export EDITOR=nano | |
# Check to see if on mac to run shell integration | |
test -e "${HOME}/.iterm2_shell_integration.zsh" && source "${HOME}/.iterm2_shell_integration.zsh" | |
alias cp='cp -i' # Preferred 'cp' implementation | |
alias cpp='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 la='ls -lah' | |
alias less='less -FSRXc' # Preferred 'less' implementation | |
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 edit='code' # edit: Opens any file in sublime editor | |
alias f='open -a Finder ./' # f: Opens current directory in MacOS Finder | |
alias ~="cd ~" # ~: Go Home | |
alias c='clear' # c: Clear terminal display | |
#alias which='type -all' # which: Find executables | |
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 | |
mcd () { mkdir -p "$1" && cd "$1"; } # mcd: Makes new Dir and jumps inside | |
trash () { command mv "$@" ~/.Trash ; } # trash: Moves a file to the MacOS trash | |
ql () { qlmanage -p "$*" >& /dev/null; } # ql: Opens any file in MacOS Quicklook Preview | |
alias DT='tee ~/Desktop/terminalOut.txt' # DT: Pipe content to file on MacOS Desktop | |
whode () {which $1 | xargs code;} # Get exe using `which` then edit with `code`` | |
# lr: Full Recursive Directory Listing | |
# ------------------------------------------ | |
alias lr='ls -R | grep ":$" | sed -e '\''s/:$//'\'' -e '\''s/[^-][^\/]*\//--/g'\'' -e '\''s/^/ /'\'' -e '\''s/-/|/'\''' | |
# 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 ; } | |
# ===================================================================================== | |
# 4. FILE AND FOLDERS | |
# ===================================================================================== | |
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='mkfile 1m ./1MB.dat' # make1mb: Creates a file of 1mb size (all zeros) | |
alias make5mb='mkfile 5m ./5MB.dat' # make5mb: Creates a file of 5mb size (all zeros) | |
alias make10mb='mkfile 10m ./10MB.dat' # make10mb: Creates a file of 10mb size (all zeros) | |
# # Helper function to push stuff to cs server | |
# csup () { | |
# user=$(whoami) | |
# if [ -z "$2" ] | |
# then | |
# rsync -azP "$1" "[email protected]:/home/$user/" | |
# #echo "$1" "[email protected]:/home/$USER" | |
# else | |
# rsync -azP "$1" "[email protected]:/home/$user/$2" | |
# #echo "$1" "[email protected]:/home/$USER/$2" | |
# fi | |
# } | |
# csdata () { | |
# if [ -z "$2" ] | |
# then | |
# rsync -azP "$1" "[email protected]:/home/yourUserName/public_html/data/" | |
# #echo "$1" "[email protected]:/home/$USER" | |
# else | |
# rsync -azP "$1" "[email protected]:/home/yourUserName/public_html/data/$2" | |
# #echo "$1" "[email protected]:/home/$USER/$2" | |
# fi | |
# } | |
# csdown () { | |
# user=$(whoami) | |
# rsync -azP "[email protected]:/home/$user/$1" . | |
# } | |
dockSpace () { | |
defaults write com.apple.dock persistent-apps -array-add '{"tile-type"="spacer-tile";}' && killall Dock | |
} | |
# 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 known 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 | |
} | |
# ===================================================================================== | |
# 5. 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 | |
# spotlight: Search for a file using MacOS Spotlight's metadata | |
# ----------------------------------------------------------- | |
spotlight () { mdfind "kMDItemDisplayName == '$@'wc"; } | |
# ===================================================================================== | |
# 6. 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 () { sudo 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 ; } | |
# ===================================================================================== | |
# 7. NETWORKING | |
# ===================================================================================== | |
#alias myip='curl ip.appspot.com' # myip: Python script in Dropbox/bin | |
alias netCons='lsof -i' # netCons: Show all open TCP/IP sockets | |
alias flushDNS='dscacheutil -flushcache' # flushDNS: Flush out the DNS Cache | |
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='ipconfig getpacket en0' # ipInfo0: Get info on connections for en0 | |
alias ipInfo1='ipconfig 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 | |
} | |
# ===================================================================================== | |
# 8. TERRY'S STUFF | |
# ===================================================================================== | |
hfind () { history | grep "$1"; } # hfind: Finds all commands with keyword from history | |
chrome () { /usr/bin/open -a "/Applications/Google Chrome.app" "$1"; } | |
mymarp(){ | |
base_name=${1%.*} | |
ext=${2} | |
if [ -z "$ext" ] | |
then | |
echo "no extension" | |
ext=pdf | |
echo "$ext" | |
fi | |
echo "Removing $base_name.$ext and $base_name.html" | |
rm $base_name.$ext | |
rm $base_name.html | |
echo "Converting $base_name.md to $base_name.$ext ..." | |
marp --theme gradient.css $base_name.md $base_name.$ext --$ext | |
} | |
# | |
# usage: largefiles path/to/files n[ckMGTP] | |
# example: largefiles ~/ 100M (finds files >= 100 meg from home dir) | |
largefiles () {find "$1" -type f -size +"$2""$3" -exec ls -lh {} \; | awk '{ print $5 " :\t" $9 }'} | |
## DIRECTORY ALIASES | |
alias dropbox='cd ~/Dropbox' # dropbox: goto dropbox folder | |
alias sync='cd ~/Sync' | |
alias desktop='cd ~/Desktop' # desktop: goto desktop | |
alias icloud='cd ~/Library/Mobile\ Documents/com~apple~CloudDocs' | |
alias courses='cd ~/Sync/__currentCourses' # courses: goto courses folder | |
alias downloads='cd ~/Downloads' | |
alias documents='cd ~/Documents' | |
## Course Aliases | |
alias 2143='cd /Users/yourUserName/Sync/__currentCourses/2143-Object-Oriented-Programming' | |
alias 3013='cd /Users/yourUserName/Sync/__currentCourses/3013-Algorithms' | |
alias 5443='cd /Users/yourUserName/Sync/__currentCourses/5443-2D-Gaming' | |
alias 4883='cd /Users/yourUserName/Sync/__currentCourses/4883-Programming_Techniques' | |
alias 5143='cd /Users/yourUserName/Sync/__currentCourses/5143-Operating-Systems' | |
alias 4143='cd /Users/yourUserName/Sync/__currentCourses/4143-PLC' | |
alias problemsolving='cd /Users/yourUserName/Sync/ProblemSolving/' | |
## SSH SERVER ALIASES | |
alias turing='ssh [email protected]' # Turing cluster | |
alias cs='ssh [email protected]' # CS Servers | |
alias cs2='ssh [email protected]' | |
alias missile='ssh [email protected]' # spdb course | |
alias battleship='ssh [email protected]' | |
alias crappy2d='ssh [email protected]' | |
# alias dev='ssh [email protected]' # Finalscores | |
# alias prod='ssh [email protected]' # Finalscores | |
# keep server alive | |
#alias dev='ssh -v -o ServerAliveInterval=60 [email protected]' | |
alias emacs='/usr/local/bin/emacs' | |
#alias linenums=''awk '{printf("% 4d %s\n", NR, $0)}' $1'' | |
cmdedit () { | |
binloc=$(which $1); | |
code $binloc; | |
} | |
alias dockSpace='defaults write com.apple.dock persistent-apps -array-add '"'"'{"tile-type"="spacer-tile";}'"'"'; killall Dock' | |
# if [ ! -f "$HOME/.oh-my-zsh/themes/zeta.zsh-theme" ]; then | |
# wget https://raw.githubusercontent.com/skylerlee/zeta-zsh-theme/master/zeta.zsh-theme -O "$HOME/.oh-my-zsh/themes/zeta.zsh-theme" | |
# fi | |
## Added to show battery life of keyboard and mouse on office computer | |
# if [ -d /Users/yourUserName ]; then | |
# CompName=$(scutil --get ComputerName) | |
# host=$(hostname -f) | |
# # Program written by Terry to | |
# btbat | |
# fi | |
if command -v pyenv 1>/dev/null 2>&1; then | |
eval "$(pyenv init -)" | |
fi | |
sp2under() { | |
if [ "$#" -ne 1 ]; then | |
echo "Usage: sp2under <filename>" | |
return 1 | |
fi | |
file="$1" | |
new_file="${file// /_}" | |
new_file="${new_file//_-_/-}" | |
if [ "$file" != "$new_file" ]; then | |
mv "$file" "$new_file" | |
echo "Renamed '$file' to '$new_file'" | |
else | |
echo "No spaces found in '$file'" | |
fi | |
} | |
function activate_venv() { | |
# Check if we are already inside a virtual environment | |
if [ -z "$VIRTUAL_ENV" ]; then | |
# Check if the venv directory exists | |
if [ -d ".venv" ]; then | |
# Activate the virtual environment | |
source ".venv/bin/activate" | |
echo "Activated virtual environment in $(pwd)/venv." | |
else | |
echo "No virtual environment found in $(pwd) ... deactivating." | |
#deactivate | |
fi | |
else | |
echo "Virtual environment already active." | |
fi | |
} | |
function create-venv(){ | |
python3 -m venv .venv | |
} | |
# Alias the cd command to run activate_venv after cd | |
function cd() { | |
builtin cd "$@" && activate_venv && ll | |
} | |
export CPPFLAGS="-I/opt/homebrew/opt/ncurses/include" | |
export LDFLAGS="-L/opt/homebrew/opt/ncurses/lib" | |
export PKG_CONFIG_PATH="/opt/homebrew/opt/ncurses/lib/pkgconfig" | |
export NVM_DIR="$HOME/.nvm" | |
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm | |
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment