Manoj Rao bio photo

Manoj Rao

Your Average Common Man

Email Twitter Github

I use bash, I see too many smart people use zsh. So I decided to switch to it, but decided to spice it up by using oh-my-zsh.

Power Level 9k - a zsh theme

# Path to your oh-my-zsh installation.
export ZSH=/home/manoj/.oh-my-zsh

# Path to your powerlevel9k installation
ZSH_THEME="powerlevel9k/powerlevel9k"
POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
POWERLEVEL9K_SHORTEN_DELIMITER=""
POWERLEVEL9K_SHORTEN_STRATEGY="truncate_from_right"
POWERLEVEL9K_PROMPT_ON_NEWLINE=true

Below I am shamelessly copying the cheatsheet from their wiki. If you are here I will

To try it out if you have just cloned it (to your home directory):

source ~/.oh-my-zsh/templates/zshrc.zsh-template

Commands

Command Description
tabs Create a new tab in the current directory (macOS - requires enabling access for assistive devices under System Preferences).
take Create a new directory and change to it, will create intermediate directories as required.
x / extract Extract an archive (supported types: tar.{bz2,gz,xz,lzma}, bz2, rar, gz, tar, tbz2, tgz, zip, Z, 7z).
zsh_stats Get a list of the top 20 commands and how many times they have been run.
uninstall_oh_my_zsh Uninstall Oh-my-zsh.
upgrade_oh_my_zsh Upgrade Oh-my-zsh.
exec zsh Apply changes made to zshrc

Alias Command
alias list all aliases
.. cd ..
cd ../..
…. cd ../../..
….. cd ../../../..
/ cd /
~ cd ~
cd +n switch to directory number n
- cd -
1 cd -
2 cd -2
3 cd -3
4 cd -4
5 cd -5
6 cd -6
7 cd -7
8 cd -8
9 cd -9
md mkdir -p
rd rmdir
d dirs -v (lists last used directories)

See ~/.oh-my-zsh/lib/directories.zsh

Alias

example:

alias -s rb=vim #opens ruby files in vim
# $ foo.rb 
# vim => foo.rb
alias -g gp='| grep -i' #creates a global alias for grep
# $ ps ax gp ruby
# (all ruby process will be displayed)
Flag Description
L print each alias in the form of calls to alias
g list or define global aliases
m print aliases matching specified pattern
r list or define regular aliases
s list or define suffix aliases

Tab-completion

For options and helpful text of what they do
ls -(tab)
cap (tab)
rake (tab)
ssh (tab)
sudo umount (tab)
kill (tab)
unrar (tab)

Git

Dynamic access to current branch name with the current_branch function
git pull origin $(current_branch)
grb publish $(current_branch) origin
Alias Command
g git
ga git add
gau git add -u
gaa git add –all
gapa git add –patch
gb git branch
gba git branch -a
gbd git branch -d
gbl git blame -b -w
gbnm git branch –no-merged
gbr git branch –remote
gbs git bisect
gbsb git bisect bad
gbsg git bisect good
gbsr git bisect reset
gbss git bisect start
gc git commit -v
gc! git commit -v –amend
gca git commit -v -a
gca! git commit -v -a –amend
gcan! git commit -v -a –no-edit –amend
gcans! git commit -v -a -s –no-edit –amend
gcam git commit -a -m
gcsm git commit -s -m
gcb git checkout -b
gcf git config –list
gcl git clone –recursive
gclean git clean -id
gpristine git reset –hard && git clean -dfx
gcm git checkout master
gcd git checkout develop
gcmsg git commit -m
gco git checkout
gcount git shortlog -sn
gcp git cherry-pick
gcpa git cherry-pick –abort
gcpc git cherry-pick –continue
gcs git commit -S
gd git diff
gdca git diff –cached
gdct git describe –tags `git rev-list –tags –max-count=1`
gds git diff –staged
gdt git diff-tree –no-commit-id –name-only -r
gdw git diff –word-diff
gf git fetch
gfa git fetch –all –prune
gfo git fetch origin
gg git gui citool
gga git gui citool –amend
ggpnp git pull origin $(current_branch) && git push origin $(current_branch)
ggpull git pull origin $(current_branch)
ggl git pull origin $(current_branch)
ggpur git pull –rebase origin $(current_branch)
glum git pull upstream master
ggpush git push origin $(current_branch)
ggp git push origin $(current_branch)
ggfl git push –force-with-lease origin /$(current_branch)
ggsup git branch –set-upstream-to=origin/$(current_branch)
gpsup git push –set-upstream origin $(current_branch)
gignore git update-index –assume-unchanged
gignored git ls-files -v | grep “^[[:lower:]]”
git-svn-dcommit-push git svn dcommit && git push github master:svntrunk
gk gitk –all –branches
gl git pull
glg git log –stat –max-count = 10
glgg git log –graph –max-count = 10
glgga git log –graph –decorate –all
glo git log –oneline –decorate –color
glog git log –oneline –decorate –color –graph
glp _git_log_prettily (git log –pretty=$1)
gm git merge
gma git merge –abort
gmt git mergetool –no-prompt
gp git push
gpoat git push origin –all && git push origin –tags
gr git remote
grb git rebase
grba git rebase –abort
grbc git rebase –continue
grbd git rebase develop
grbm git rebase master
grbs git rebase –skip
grbi git rebase -i
grh git reset HEAD
grhh git reset HEAD –hard
grmv git remote rename
grrm git remote remove
grs git restore
grset git remote set-url
grt cd $(git rev-parse –show-toplevel || echo “.”)
grup git remote update
grv git remote -v
gsd git svn dcommit
gsps git show –pretty = short –show-signature
gsr git svn rebase
gss git status -s
gst git status
gsta git stash save
gstaa git stash apply
gstd git stash drop
gstl git stash list
gstp git stash pop
gsts git stash show –text
gsu git submodule update
gts git tag -s
gunignore git update-index –no-assume-unchanged
gunwip git log -n 1 | grep -q -c “--wip--” && git reset HEAD~1
gup git pull –rebase
gvt git verify-tag
gwch git whatchanged -p –abbrev-commit –pretty = medium
gwip git add -A; git ls-files –deleted -z | xargs -r0 git rm; git commit -m “–wip–”

You also find these commands in Dash as a Cheat-sheet.

Editors

Alias Command
stt (When using sublime plugin) Open current directory in Sublime Text 2/3
v (When using vi-mode plugin) Edit current command line in Vim

Symfony2

Alias Command
sf php ./app/console
sfcl php app/console cache:clear
sfcontainer sf debug:container
sfcw sf cache:warmup
sfgb sf generate:bundle
sfroute sf debug:router
sfsr sf server:run -vvv

tmux

Alias Command
ta tmux attach -t
tad tmux attach -d -t
ts tmux new-session -s
tl tmux list-sessions
tksv tmux kill-server
tkss tmux kill-session -t

Systemd

systemctl

Command Description
sc-status NAME show the status of the NAME process
sc-show NAME show the NAME systemd .service file
sc-start NAME start the NAME process
sc-stop NAME stop the NAME process
sc-restart NAME restart the NAME process
sc-enable NAME enable the NAME process to start at boot
sc-disable NAME disable the NAME process at boot

Rails

Rails Aliases

Alias Command
rc rails console
rcs rails console –sandbox
rd rails destroy
rdb rails dbconsole
rg rails generate
rgm rails generate migration
rp rails plugin
ru rails runner
rs rails server
rsd rails server –debugger
rsp rails server –port

RAILS_ENV Aliases

Alias Command
RED RAILS_ENV=development
REP RAILS_ENV=production
RET RAILS_ENV=test

Upgrade

To upgrade .oh-my-zsh, run:

upgrade_oh_my_zsh

My Podcast!

If you like topics such as this then please consider subscribing to my podcast. I talk to some of the stalwarts in tech and ask them what their favorite productivity hacks are:

Available on iTunes Podcast

Visit Void Star Podcast’s page on iTunes Podcast Portal. Please Click ‘Subscribe’, leave a comment.

Get it iTunes