diff --git a/.zshrc b/.zshrc new file mode 100644 index 0000000..7c96196 --- /dev/null +++ b/.zshrc @@ -0,0 +1,297 @@ +####################################################### +####### Anarchy ZSH configuration file ####### +####################################################### + +### Set/unset ZSH options +######################### +# setopt NOHUP +# setopt NOTIFY +# setopt NO_FLOW_CONTROL +setopt INC_APPEND_HISTORY SHARE_HISTORY +setopt APPEND_HISTORY +# setopt AUTO_LIST +# setopt AUTO_REMOVE_SLASH +# setopt AUTO_RESUME +unsetopt BG_NICE +setopt CORRECT +setopt EXTENDED_HISTORY +# setopt HASH_CMDS +setopt MENUCOMPLETE +setopt ALL_EXPORT + +### Set/unset shell options +############################ +setopt notify globdots correct pushdtohome cdablevars autolist +setopt correctall autocd recexact longlistjobs +setopt autoresume histignoredups pushdsilent +setopt autopushd pushdminus extendedglob rcquotes mailwarning +unsetopt bgnice autoparamslash + +### Autoload zsh modules when they are referenced +################################################# +autoload -U history-search-end +zmodload -a zsh/stat stat +zmodload -a zsh/zpty zpty +zmodload -a zsh/zprof zprof +#zmodload -ap zsh/mapfile mapfile +zle -N history-beginning-search-backward-end history-search-end +zle -N history-beginning-search-forward-end history-search-end + +### Set variables +################# +PATH="/usr/local/bin:/usr/local/sbin/:$PATH" +HISTFILE=$HOME/.zhistory +HISTSIZE=1000 +SAVEHIST=1000 +LS_COLORS='rs=0:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:tw=30;42:ow=34;42:st=37;44:ex=01;32:'; + +### Load colors +############### +autoload colors zsh/terminfo +if [[ "$terminfo[colors]" -ge 8 ]]; then + colors +fi +for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE; do + eval PR_$color='%{$terminfo[bold]$fg[${(L)color}]%}' + eval PR_LIGHT_$color='%{$fg[${(L)color}]%}' + (( count = $count + 1 )) +done + +### Set Colors to use in in the script +############# +# Normal Colors +Black='\e[0;30m' # Black +Red='\e[0;31m' # Red +Green='\e[0;32m' # Green +Yellow='\e[0;33m' # Yellow +Blue='\e[0;34m' # Blue +Purple='\e[0;35m' # Purple +Cyan='\e[0;36m' # Cyan +White='\e[0;37m' # White + +# Bold +BBlack='\e[1;30m' # Black +BRed='\e[1;31m' # Red +BGreen='\e[1;32m' # Green +BYellow='\e[1;33m' # Yellow +BBlue='\e[1;34m' # Blue +BPurple='\e[1;35m' # Purple +BCyan='\e[1;36m' # Cyan +BWhite='\e[1;37m' # White + +# Background +On_Black='\e[40m' # Black +On_Red='\e[41m' # Red +On_Green='\e[42m' # Green +On_Yellow='\e[43m' # Yellow +On_Blue='\e[44m' # Blue +On_Purple='\e[45m' # Purple +On_Cyan='\e[46m' # Cyan +On_White='\e[47m' # White + +NC="\e[m" # Color Reset + +### Set prompt +############## +PR_NO_COLOR="%{$terminfo[sgr0]%}" +PS1="[%(!.${PR_RED}%n.$PR_LIGHT_YELLOW%n)%(!.${PR_LIGHT_YELLOW}@.$PR_RED@)$PR_NO_COLOR%(!.${PR_LIGHT_RED}%U%m%u.${PR_LIGHT_GREEN}%U%m%u)$PR_NO_COLOR:%(!.${PR_RED}%2c.${PR_BLUE}%2c)$PR_NO_COLOR]%(?..[${PR_LIGHT_RED}%?$PR_NO_COLOR])%(!.${PR_LIGHT_RED}#.${PR_LIGHT_GREEN}$) " +RPS1="$PR_LIGHT_YELLOW(%D{%m-%d %H:%M})$PR_NO_COLOR" +unsetopt ALL_EXPORT + +### set common functions +############# + +function my_ip() # Get IP adress. +{ + curl ifconfig.co +} + +# Find a file with a pattern in name: +function ff() +{ + find . -type f -iname '*'"$*"'*' -ls ; +} + + + +function sysinfo() # Get current host related info. +{ + echo -e "\n${BRed}System Informations:$NC " ; uname -a + echo -e "\n${BRed}Online User:$NC " ; w -hs | + cut -d " " -f1 | sort | uniq + echo -e "\n${BRed}Date :$NC " ; date + echo -e "\n${BRed}Server stats :$NC " ; uptime + echo -e "\n${BRed}Memory stats :$NC " ; free + echo -e "\n${BRed}Public IP Address :$NC " ; my_ip + echo -e "\n${BRed}Open connections :$NC "; netstat -pan --inet; + echo -e "\n${BRed}CPU info :$NC "; cat /proc/cpuinfo ; + echo -e "\n" +} + +function extract { + if [ -z "$1" ]; then + # display usage if no parameters given + echo "Usage: extract ." + else + if [ -f $1 ] ; then + # NAME=${1%.*} + # mkdir $NAME && cd $NAME + case $1 in + *.tar.bz2) tar xvjf ../$1 ;; + *.tar.gz) tar xvzf ../$1 ;; + *.tar.xz) tar xvJf ../$1 ;; + *.lzma) unlzma ../$1 ;; + *.bz2) bunzip2 ../$1 ;; + *.rar) unrar x -ad ../$1 ;; + *.gz) gunzip ../$1 ;; + *.tar) tar xvf ../$1 ;; + *.tbz2) tar xvjf ../$1 ;; + *.tgz) tar xvzf ../$1 ;; + *.zip) unzip ../$1 ;; + *.Z) uncompress ../$1 ;; + *.7z) 7z x ../$1 ;; + *.xz) unxz ../$1 ;; + *.exe) cabextract ../$1 ;; + *) echo "extract: '$1' - unknown archive method" ;; + esac + else + echo "$1 - file does not exist" + fi +fi +} + + +# Creates an archive (*.tar.gz) from given directory. +function maketar() { tar cvzf "${1%%/}.tar.gz" "${1%%/}/"; } + +# Create a ZIP archive of a file or folder. +function makezip() { zip -r "${1%%/}.zip" "$1" ; } + + +function my_ps() { ps $@ -u $USER -o pid,%cpu,%mem,bsdtime,command ; } + +mcd () { + mkdir -p $1 + cd $1 +} + +### Set alias +############# +alias cls="clear" +alias ..="cd .." +alias cd..="cd .." +alias ll="ls -lisa --color=auto" +alias home="cd ~" +alias df="df -ahiT --total" +alias mkdir="mkdir -pv" +alias mkfile="touch" +alias rm="rm -rfi" +alias userlist="cut -d: -f1 /etc/passwd" +alias ls="ls -CF --color=auto" +alias lsl="ls -lhFA | less" +alias free="free -mt" +alias du="du -ach | sort -h" +alias ps="ps auxf" +alias psgrep="ps aux | grep -v grep | grep -i -e VSZ -e" +alias wget="wget -c" +alias histg="history | grep" +alias myip="curl http://ipecho.net/plain; echo" +alias logs="find /var/log -type f -exec file {} \; | grep 'text' | cut -d' ' -f1 | sed -e's/:$//g' | grep -v '[0-9]$' | xargs tail -f" +alias folders='find . -maxdepth 1 -type d -print0 | xargs -0 du -sk | sort -rn' +alias grep='grep --color=auto' + + +### Bind keys +############# +autoload -U compinit +compinit +bindkey "^?" backward-delete-char +bindkey '^[OH' beginning-of-line +bindkey '^[OF' end-of-line +bindkey '^[[5~' up-line-or-history +bindkey '^[[6~' down-line-or-history +bindkey "^[[A" history-beginning-search-backward-end +bindkey "^[[B" history-beginning-search-forward-end +bindkey "^r" history-incremental-search-backward +bindkey ' ' magic-space # also do history expansion on space +bindkey '^I' complete-word # complete on tab, leave expansion to _expand +zstyle ':completion::complete:*' use-cache on +zstyle ':completion::complete:*' cache-path ~/.zsh/cache/$HOST + +zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} +zstyle ':completion:*' list-prompt '%SAt %p: Hit TAB for more, or the character to insert%s' +zstyle ':completion:*' menu select=1 _complete _ignored _approximate +zstyle -e ':completion:*:approximate:*' max-errors \ + 'reply=( $(( ($#PREFIX+$#SUFFIX)/2 )) numeric )' +zstyle ':completion:*' select-prompt '%SScrolling active: current selection at %p%s' + +# Completion Styles + +# list of completers to use +zstyle ':completion:*::::' completer _expand _complete _ignored _approximate + +# allow one error for every three characters typed in approximate completer +zstyle -e ':completion:*:approximate:*' max-errors \ + 'reply=( $(( ($#PREFIX+$#SUFFIX)/2 )) numeric )' + +# insert all expansions for expand completer +zstyle ':completion:*:expand:*' tag-order all-expansions + +# formatting and messages +zstyle ':completion:*' verbose yes +zstyle ':completion:*:descriptions' format '%B%d%b' +zstyle ':completion:*:messages' format '%d' +zstyle ':completion:*:warnings' format 'No matches for: %d' +zstyle ':completion:*:corrections' format '%B%d (errors: %e)%b' +zstyle ':completion:*' group-name '' + +# match uppercase from lowercase +zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' + +# offer indexes before parameters in subscripts +zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters + +# command for process lists, the local web server details and host completion +# on processes completion complete all user processes +zstyle ':completion:*:processes' command 'ps -au$USER' + +## add colors to processes for kill completion +zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31' + +#zstyle ':completion:*:processes' command 'ps -o pid,s,nice,stime,args' +#zstyle ':completion:*:urls' local 'www' '/var/www/htdocs' 'public_html' +# +#NEW completion: +# 1. All /etc/hosts hostnames are in autocomplete +# 2. If you have a comment in /etc/hosts like #%foobar.domain, +# then foobar.domain will show up in autocomplete! +zstyle ':completion:*' hosts $(awk '/^[^#]/ {print $2 $3" "$4" "$5}' /etc/hosts | grep -v ip6- && grep "^#%" /etc/hosts | awk -F% '{print $2}') +# Filename suffixes to ignore during completion (except after rm command) +zstyle ':completion:*:*:(^rm):*:*files' ignored-patterns '*?.o' '*?.c~' \ + '*?.old' '*?.pro' +# the same for old style completion +#fignore=(.o .c~ .old .pro) + +# ignore completion functions (until the _ignored completer) +zstyle ':completion:*:functions' ignored-patterns '_*' +zstyle ':completion:*:*:*:users' ignored-patterns \ + adm apache bin daemon games gdm halt ident junkbust lp mail mailnull \ + named news nfsnobody nobody nscd ntp operator pcap postgres radvd \ + rpc rpcuser rpm shutdown squid sshd sync uucp vcsa xfs avahi-autoipd\ + avahi backup messagebus beagleindex debian-tor dhcp dnsmasq fetchmail\ + firebird gnats haldaemon hplip irc klog list man cupsys postfix\ + proxy syslog www-data mldonkey sys snort +# SSH Completion +zstyle ':completion:*:scp:*' tag-order \ + files users 'hosts:-host hosts:-domain:domain hosts:-ipaddr"IP\ Address *' +zstyle ':completion:*:scp:*' group-order \ + files all-files users hosts-domain hosts-host hosts-ipaddr +zstyle ':completion:*:ssh:*' tag-order \ + users 'hosts:-host hosts:-domain:domain hosts:-ipaddr"IP\ Address *' +zstyle ':completion:*:ssh:*' group-order \ + hosts-domain hosts-host users hosts-ipaddr +zstyle '*' single-ignored show + +### Source plugins +################## +source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh diff --git a/README.md b/README.md new file mode 100644 index 0000000..62ac67e --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# Dotfiles