# K4YT3X Public Server zshrc # Version 2020.01.13 # Licensed under the GNU General Public License Version 3 (GNU GPL v3), # available at: https://www.gnu.org/licenses/gpl-3.0.txt # (C) 2018-2020 K4YT3X # Gist Page: https://gist.github.com/k4yt3x/3b41a1a65f5d3087133e449793eb8858 # =========================== Global Variables # Add path for user with sudo export PATH=$PATH:/sbin # =========================== Aliases # Enhanced built-in commands alias a2='aria2c -x10' alias abs='realpath -e' alias c='clear' alias cl='cd && clear' alias clean='cat /dev/null > ~/.zsh_history' alias diffwatch='watch -n0 -d' alias get='wget --continue --tries=1 --connect-timeout=60 --read-timeout=300 --directory-prefix . --no-directories --no-background --progress=dot:default' alias ip6='ip -6' alias ipa='ip a | egrep --color=never -o "^[0-9]+: ([a-z0-9])+[0-9]*|.*link/(ether|loopback) ([a-zA-Z0-9]{2}:){5}[a-zA-Z0-9]{2}|.*inet ([0-9]{1,3}.){3}([0-9]{1,3}/[0-9]{1,2})|.*inet6 (([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))/[0-9]{1,3}" | sed "s/link\/ether/Ethernet:/g" | sed "s/inet6/IPv6:/g" | sed "s/inet/IPv4:/g"' alias reload='exec "$SHELL"' # systemctl shortcuts alias start='sudo systemctl start' alias stop='sudo systemctl stop' alias restart='sudo systemctl restart' alias status='systemctl status' alias enable='sudo systemctl enable' alias disable='sudo systemctl disable' # Misc alias addkey='sudo apt-key adv --keyserver=hkp://keys.gnupg.net --recv' alias ccat='pygmentize -g' alias egrep='egrep --color' alias grep='egrep --color' alias ll='ls -l' alias sudo='sudo ' # preserve aliases when using sudo # Verbose output alias rm='rm -v' alias mv='mv -v' alias cp='cp -v' alias ln='ln -v' alias ssh='ssh -v' alias sftp='sftp -v' alias scp='scp -v' alias ping='ping -O' alias ping4='ping4 -O' alias ping6='ping6 -O' # Express edit alias vih='vim ~/.zsh_history' alias viz='vim ~/.zshrc' alias viv='vim ~/.vimrc' alias vir='sudo vim /etc/resolv.conf' # delete logs alias purge-histories='rm ~/.msf4/history ~/.cache/radare2/history ~/.bash_history ~/.python_history' alias purge-x='rm ~/.xfce4-session.verbose-log ~/.xfce4-session.verbose-log.last ~/.xsession-errors ~/.xsession-errors.old' # Pip update all alias pip2-update="python -m pip install -U pip && python -m pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 sudo python -m pip install -U" alias pip3-update="python3 -m pip install -U pip && python3 -m pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 sudo python3 -m pip install -U" # alias pip2-update="pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 sudo pip install -U" # alias pip3-update="pip3 list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 sudo pip3 install -U" # update sources.list alias update-sources='sudo mv /etc/apt/sources.list /etc/apt/sources.list.backup && sudo curl https://files.flexio.org/.tools/sources.list -o /etc/apt/sources.list' # Services shortcut alias start-tftpd="sudo atftpd --daemon --no-fork --port 69 --retry-timeout 5 --mcast-port 1758 --mcast-addr 239.239.239.0-255 --mcast-ttl 1 --maxthread 100 --verbose=5 /srv/tftp" # =========================== Custom Functions function ipinfo() { # If -s argument given await for stream input # otherwise query the first argument # If $1 is empty query current IP address if [[ $1 = "-s" ]] ; then /usr/bin/env python3 -c "import json,requests;print('\n'.join(['{0:15}{1}'.format(k.upper(), v) for k,v in json.loads(requests.get('https://ipinfo.io/$(cat /dev/stdin)').content).items()]))" else /usr/bin/env python3 -c "import json,requests;print('\n'.join(['{0:15}{1}'.format(k.upper(), v) for k,v in json.loads(requests.get('https://ipinfo.io/$1').content).items()]))" fi } # Update zshrc from server function update-zshrc() { curl https://gist.github.com/k4yt3x/3b41a1a65f5d3087133e449793eb8858/raw -o ~/.zshrc # If current shell is zsh, restart shell if [ '/usr/bin/zsh' = "$SHELL" ] || [ '/bin/zsh' = "$SHELL" ] ; then exec "$SHELL" fi } # =========================== Check Requirements # Antigen: https://github.com/zsh-users/antigen ANTIGEN="$HOME/.local/bin/antigen.zsh" # Install antigen.zsh if not exist if [ ! -f "$ANTIGEN" ]; then echo "Installing antigen ..." [ ! -d "$HOME/.local" ] && mkdir -p "$HOME/.local" 2> /dev/null [ ! -d "$HOME/.local/bin" ] && mkdir -p "$HOME/.local/bin" 2> /dev/null [ ! -f "$HOME/.z" ] && touch "$HOME/.z" URL="http://git.io/antigen" TMPFILE="/tmp/antigen.zsh" if [ -x "$(which curl)" ]; then curl -L "$URL" -o "$TMPFILE" elif [ -x "$(which wget)" ]; then wget "$URL" -O "$TMPFILE" else echo "ERROR: please install curl or wget before installation !!" exit fi if [ ! $? -eq 0 ]; then echo "\nERROR: downloading antigen.zsh ($URL) failed !!" exit fi; echo "move $TMPFILE to $ANTIGEN" mv "$TMPFILE" "$ANTIGEN" fi # Check git if ! [ -x "$(which git)" ]; then echo "ERROR: Please install git" exit fi # =========================== Initialize Antigen and Plugins # command prompt # blue prompt for root a=$(id|awk -F\( '{print $1}') if [ "$a" = "uid=0" ] then # for root export PS1='%F{240}[%*] %F{33}%n%F{white}%#%F{240}%m%F{blue}[%~]%F{white}> ' else # for other users export PS1='%F{240}[%*] %F{11}%n%F{white}%#%F{240}%m%F{yellow}[%~]%F{white}> ' fi # Enable 256 color to make auto-suggestions look nice export TERM="xterm-256color" # Load local bash/zsh compatible settings _INIT_SH_NOFUN=1 [ -f "$HOME/.local/etc/init.sh" ] && source "$HOME/.local/etc/init.sh" # exit for non-interactive shell [[ $- != *i* ]] && return # WSL (aka Bash for Windows) doesn't work well with BG_NICE [ -d "/mnt/c" ] && [[ "$(uname -a)" == *Microsoft* ]] && unsetopt BG_NICE # Initialize antigen source "$ANTIGEN" # Initialize oh-my-zsh antigen use oh-my-zsh # default bundles # visit https://github.com/unixorn/awesome-zsh-plugins antigen bundle git # antigen bundle heroku antigen bundle pip antigen bundle svn-fast-info # antigen bundle command-not-find antigen bundle colorize antigen bundle github antigen bundle python antigen bundle rupa/z z.sh # antigen bundle z antigen bundle zsh-users/zsh-autosuggestions antigen bundle zsh-users/zsh-completions # antigen bundle supercrabtree/k antigen bundle Vifon/deer # uncomment the line below to enable theme #antigen theme bureau # check login shell if [[ -o login ]]; then [ -f "$HOME/.local/etc/login.sh" ] && source "$HOME/.local/etc/login.sh" [ -f "$HOME/.local/etc/login.zsh" ] && source "$HOME/.local/etc/login.zsh" fi # syntax color definition ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern) typeset -A ZSH_HIGHLIGHT_STYLES # ZSH_HIGHLIGHT_STYLES[command]=fg=white,bold # ZSH_HIGHLIGHT_STYLES[alias]='fg=magenta,bold' ZSH_HIGHLIGHT_STYLES[default]=none ZSH_HIGHLIGHT_STYLES[unknown-token]=fg=009 ZSH_HIGHLIGHT_STYLES[reserved-word]=fg=009,standout ZSH_HIGHLIGHT_STYLES[alias]=fg=cyan,bold ZSH_HIGHLIGHT_STYLES[builtin]=fg=cyan,bold ZSH_HIGHLIGHT_STYLES[function]=fg=cyan,bold ZSH_HIGHLIGHT_STYLES[command]=fg=white,bold ZSH_HIGHLIGHT_STYLES[precommand]=fg=white,underline ZSH_HIGHLIGHT_STYLES[commandseparator]=none ZSH_HIGHLIGHT_STYLES[hashed-command]=fg=009 ZSH_HIGHLIGHT_STYLES[path]=fg=214,underline ZSH_HIGHLIGHT_STYLES[globbing]=fg=063 ZSH_HIGHLIGHT_STYLES[history-expansion]=fg=white,underline ZSH_HIGHLIGHT_STYLES[single-hyphen-option]=none ZSH_HIGHLIGHT_STYLES[double-hyphen-option]=none ZSH_HIGHLIGHT_STYLES[back-quoted-argument]=none ZSH_HIGHLIGHT_STYLES[single-quoted-argument]=fg=063 ZSH_HIGHLIGHT_STYLES[double-quoted-argument]=fg=063 ZSH_HIGHLIGHT_STYLES[dollar-double-quoted-argument]=fg=009 ZSH_HIGHLIGHT_STYLES[back-double-quoted-argument]=fg=009 ZSH_HIGHLIGHT_STYLES[assign]=none # load local config [ -f "$HOME/.local/etc/config.zsh" ] && source "$HOME/.local/etc/config.zsh" [ -f "$HOME/.local/etc/local.zsh" ] && source "$HOME/.local/etc/local.zsh" # enable syntax highlighting antigen bundle zsh-users/zsh-syntax-highlighting antigen apply # setup for deer autoload -U deer zle -N deer # default keymap bindkey -s '\ee' 'vim\n' bindkey '\eh' backward-char bindkey '\el' forward-char bindkey '\ej' down-line-or-history bindkey '\ek' up-line-or-history # bindkey '\eu' undo bindkey '\eH' backward-word bindkey '\eL' forward-word bindkey '\eJ' beginning-of-line bindkey '\eK' end-of-line bindkey -s '\eo' 'cd ..\n' bindkey -s '\e;' 'll\n' bindkey '\e[1;3D' backward-word bindkey '\e[1;3C' forward-word bindkey '\e[1;3A' beginning-of-line bindkey '\e[1;3B' end-of-line bindkey '\ev' deer # options unsetopt correct_all setopt BANG_HIST # Treat the '!' character specially during expansion. setopt INC_APPEND_HISTORY # Write to the history file immediately, not when the shell exits. setopt SHARE_HISTORY # Share history between all sessions. setopt HIST_EXPIRE_DUPS_FIRST # Expire duplicate entries first when trimming history. setopt HIST_IGNORE_DUPS # Don't record an entry that was just recorded again. setopt HIST_IGNORE_ALL_DUPS # Delete old recorded entry if new entry is a duplicate. setopt HIST_FIND_NO_DUPS # Do not display a line previously found. setopt HIST_IGNORE_SPACE # Don't record an entry starting with a space. setopt HIST_SAVE_NO_DUPS # Don't write duplicate entries in the history file. setopt HIST_REDUCE_BLANKS # Remove superfluous blanks before recording entry. setopt HIST_VERIFY # Don't execute immediately upon history expansion. # =========================== File and Configuration Sourcing # source function.sh if it exists [ -f "$HOME/.local/etc/function.sh" ] && . "$HOME/.local/etc/function.sh" # ignore complition zstyle ':completion:*:complete:-command-:*:*' ignored-patterns '*.pdf|*.exe|*.dll' zstyle ':completion:*:*sh:*:' tag-order files