Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

zsh

  • Directly run a command

  • cp -a preserves flags and dates (and implies -r)

  • clear history exec rm "$HISTFILE"

  • execute a command every time one cd-ing into a foler:

function cd {
    # actually change the directory with all args passed to the function
    builtin cd "$@"
    # if there's a regular file named "todo.txt"...
    if [ -f "todo.txt" ] ; then
        # display its contents
        cat todo.txt
    fi
}
  • time how long it takes to load zsh: /usr/bin/time zsh -i -c exit

  • optimize nvm loading time:

    export NVM_DIR="$HOME/.nvm"
    # [ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && \. "/opt/homebrew/opt/nvm/nvm.sh"  # This loads nvm (commented out)
    [ -s "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" ] && \. "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm"  # This loads nvm bash_completion
    alias nvm="unalias nvm; [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"; nvm $@" # added
    
  • ~/.zshrc

export HISTFILE=~/.zsh_history
export HISTFILESIZE=1000000000
export HISTSIZE=1000000000
setopt INC_APPEND_HISTORY
export HISTTIMEFORMAT="[%F %T] "
setopt EXTENDED_HISTORY
setopt HIST_IGNORE_ALL_DUPS

# Lang
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8

# Example aliases
alias zshconf="code ~/.zshrc"

# comment for performance
# test -e "${HOME}/.iterm2_shell_integration.zsh" && source "${HOME}/.iterm2_shell_integration.zsh"

# Editor
export EDITOR=nano
export VISUAL=nano

# Homebrew
export PATH=/opt/homebrew/bin:/usr/local/sbin:/usr/local/bin:$PATH

# OpenSSL - prioritise to Homebrew openssl so PyEnv and RbEnv use it for Python installations
export PATH="/usr/local/opt/openssl@3/bin:$PATH"
export RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@3)"

# for compilers
# export LDFLAGS="-L/opt/homebrew/opt/openssl@1.1/lib"
# export CFLAGS="-L/opt/homebrew/opt/openssl@1.1/lib"
# export CPPFLAGS="-I/opt/homebrew/opt/openssl@1.1/include"

# Java
export JAVA_STUDIO_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"
export JAVA_IDEA_HOME="/Applications/IntelliJ IDEA CE.app/Contents/jbr/Contents/Home"
export JAVA_GRAALVM_HOME="/Library/Java/JavaVirtualMachines/graalvm-community-openjdk-17.0.9+9.1/Contents/Home"

alias jstudio='export JAVA_HOME="$JAVA_STUDIO_HOME" && export PATH="$JAVA_HOME/bin:$PATH"'
alias jidea='export JAVA_HOME="$JAVA_IDEA_HOME" && export PATH="$JAVA_HOME/bin:$PATH"'
alias j11='export JAVA_HOME="`/usr/libexec/java_home -v 11`";export PATH="$JAVA_HOME/bin:$PATH"'
alias jgraal='export JAVA_HOME="$JAVA_GRAALVM_HOME" && export PATH="$JAVA_HOME/bin:$PATH"'

# Default to IntelliJ JBR
jidea


# Android
export ANDROID_HOME=$HOME/Library/Android/sdk
export ANDROID_SDK=$ANDROID_HOME
export ANDROID_SDK_ROOT=$ANDROID_HOME
export PATH="$ANDROID_HOME/platform-tools:$ANDROID_HOME/cmdline-tools/latest/bin:$PATH"

# RbEnv
export PATH="$HOME/.rbenv/bin:$PATH:"
eval "$(rbenv init -)"

# PyEnv
export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

# jenv
# export PATH="$HOME/.jenv/bin:$PATH"
# eval "$(jenv init -)"

# Flutter
export PATH="$HOME/Developer/flutter/bin:$PATH"

# Dart
export PATH="$PATH":"$HOME/.pub-cache/bin"

# alias px-off="unset http_proxy https_proxy ALL_PROXY JAVA_OPTS JAVA_TOOL_OPTIONS"
# alias px-on="source ~/.zshrc"

# mongodb
export PATH="/usr/local/opt/mongodb-community@4.4/bin:$PATH"

# cli apps
export PATH="$HOME/cliapps:$PATH"


# aliases
alias g='git'

alias hh='history -E -1000'
alias ls='exa -lag --header'
alias up='brew update && brew upgrade && flutter upgrade'
alias gt='gtime -f "time result\ncmd:%C\nreal %es\nuser %Us \nsys  %Ss \nmemory:%MKB \ncpu %P"'
alias fd='fd -HI'

alias push='git push'
alias pull='git pull'
alias merge='git merge'
alias commit='git commit'
alias switch='git switch'
alias branch='git branch'
alias checkout='git checkout'
alias status='git status'
alias clone='git clone'
alias glog='git log --graph --decorate --oneline'
alias worktree='git worktree'
alias gtree='git worktree'
alias gdiff='git diff'
alias greset='git reset'

alias certs='$HOME/certs/certs.sh'

export PATH="/Applications/sonar-scanner-5.0.1.3006-macosx/bin/:$PATH"

# Node
export NVM_DIR="$HOME/.nvm"
  # [ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && \. "/opt/homebrew/opt/nvm/nvm.sh"  # This loads nvm
  [ -s "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" ] && \. "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm"  # This loads nvm bash_completion
  alias nvm="unalias nvm; [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"; nvm $@"

# export PATH="/opt/homebrew/opt/node@18/bin:$PATH"

eval "$(starship init zsh)"

function cd {
    # actually change the directory with all args passed to the function
    builtin cd "$@"
    # if there's a regular file named "readme.md"...
    if [ -f "readme.md" ] ; then
        # display its content
        cat readme.md
    fi
}