zsh - алтернатива на bash

Некатегоризирани в останалите раздели статии.

Модератори: Freya, Kulu Ngile

zsh - алтернатива на bash

Мнениеот Kulu Ngile » Съб 23, Авг, 2008 16:55

От известно време ползвам zsh вместо bash и бих казал, че съм доста впечетлен. Ето ви и няколко примера за да може да ме разберете:
1. Тръгвате да ползвате някаква команда, но се забравили нужната ви опция, то просто натискате "tab" бутон и ви се принтира help за да се подсетите. Примерно командата ls -a и искам да видя, кой параметър е за време на създаване

Код за потвърждение: Избери целия код
[gaara: ~]$ ls -lt                                                                                                                              (08-23 19:10)
option
-1  -- single column output
-A  -- list all except . and ..
-B  -- don't list entries ending with ~
-C  -- list entries in columns sorted vertically
-D  -- generate output designed for Emacs' dired mode
-F  -- append file type indicators
-G  -- inhibit display of group information
-H  -- sizes in human readable form; powers of 1000
-I  -- don't list entire matching pattern
-L  -- list referenced file for sym link
-N  -- print raw characters
-Q  -- quote names
-R  -- list subdirectories recursively
-S  -- sort by size
-T  -- specify tab size
-U  -- unsorted
-X  -- sort by extension
-a  -- list entries starting with .
-b  -- print octal escapes for control characters
-c  -- status change time
-d  -- list directory entries instead of contents
-f  -- unsorted, all, short list
-g  -- long listing but without owner information
-h  -- print sizes in human readable form
-i  -- print file inode numbers
-k  -- use block size of 1k
-m  -- comma separated
-n  -- numeric uid, gid
-o  -- no group, long
-p  -- append file type indicators except *
-q  -- hide control chars
-r  -- reverse sort order
-s  -- display size of each file in blocks
-t  -- sort by modification time
-u  -- access time
-v  -- sort by version (filename treated numerically)
-w  -- specify screen width
-x  -- sort horizontally


2. Изписал съм някакъв безкраен ред с команди, но не се сещам как се ползваше "sed".... няма проблем.... заставам в/у него с маркера, натискам alt+h и ми се отваря man page-a :)
Код за потвърждение: Избери целия код
[gaara: ~]$ cat /etc/resolv.conf |grep -v ^# |sed #заставам в/у sed-> alt+h, прочитам си нужната информация, натискам q за изход от man-a и продължавам да си дописвам командата :)

3. При писането на команди и не ползването на "tab", понякога води до грешки в самите команди, като след това трябва copy->paste и редактиране, но тук нещата стават малко по-различни :)
Код за потвърждение: Избери целия код
[gaara: ~]$ car /proc/meminfo | egrep "^M.+t+"
zsh: command not found: car
[gaara: ~]$ ^car^cat
cat /proc/meminfo | egrep "^M.+t+"
MemTotal:      1036236 kB
[gaara: ~]$

т.е. казах му ^car^cat (да замени car с cat)

За инсталация под Дебиан ... простичко изпълнете apt-get install zsh :)
За да смените подразбиращият се shell, използвайте командата chsh :)

Ето и .zshrc-то, което аз ползвам:
Код за потвърждение: Избери целия код
[gaara: ~]$ grep -v "^#" .zshrc                                                                                                                 (08-23 19:14)

setopt INC_APPEND_HISTORY SHARE_HISTORY
setopt APPEND_HISTORY
unsetopt BG_NICE      # do NOT nice bg commands
setopt CORRECT         # command CORRECTION
setopt EXTENDED_HISTORY      # puts timestamps in the history
setopt MENUCOMPLETE
setopt ALL_EXPORT

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

zmodload -a zsh/stat stat
zmodload -a zsh/zpty zpty
zmodload -a zsh/zprof zprof
zmodload -ap zsh/mapfile mapfile


HISTFILE=$HOME/.zhistory
HISTSIZE=1000
SAVEHIST=1000
HOSTNAME="`hostname`"
PAGER='less'
EDITOR='vim'
    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
    PR_NO_COLOR="%{$terminfo[sgr0]%}"
PS1="[$PR_GREEN%n: $PR_BLUE%1~$PR_NO_COLOR]%(!.#.$) "
RPS1="$PR_LIGHT_YELLOW(%D{%m-%d %H:%M})$PR_NO_COLOR"
LC_ALL='en_US.UTF-8'
LANG='en_US.UTF-8'
LC_CTYPE=C

if [ $SSH_TTY ]; then
  MUTT_EDITOR=vim
else
  MUTT_EDITOR=emacsclient.emacs-snapshot
fi

unsetopt ALL_EXPORT

alias f=finger
alias ll='ls -al'
alias ls='ls --color=auto '




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 "^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'


zstyle ':completion:*::::' completer _expand _complete _ignored _approximate

zstyle -e ':completion:*:approximate:*' max-errors \
    'reply=( $(( ($#PREFIX+$#SUFFIX)/2 )) numeric )'
   
zstyle ':completion:*:expand:*' tag-order all-expansions

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 ''

zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'

zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters

zstyle ':completion:*:processes' command 'ps -au$USER'

zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31'

zstyle ':completion:*' hosts $(awk '/^[^#]/ {print $2 $3" "$4" "$5}' /etc/hosts | grep -v ip6- && grep "^#%" /etc/hosts | awk -F% '{print $2}')
zstyle ':completion:*:*:(^rm):*:*files' ignored-patterns '*?.o' '*?.c~' \
    '*?.old' '*?.pro'

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
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
[gaara: ~]$


Ето и пример от крайният резултат:
Код за потвърждение: Избери целия код
# натиснал съм "tab"
# от дясно е датата и часа
[gaara: ~]$ cd /sbin/                                             (08-23 19:20)
directory
sbin/  srv/   sys/
Ако съдбата е срещу теб, толкова по-зле за нея.

Изображение
APT HOWTO
Kulu Ngile
Унуфри
 
Мнения: 1233
Регистриран на: Съб 04, Мар, 2006 1:04
Местоположение: София

Мнениеот Progress » Съб 23, Авг, 2008 21:31

Момента с таб го ползвам и с bash. :P

Ето и демонстрация:

Код за потвърждение: Избери целия код
progress@debian:~$ mplayer -
Display all 219 possibilities? (y or n)
-aadriver              -fs                    -skin
-aaeight               -fstype                -skipopening
-aaextended            -geometry              -slang
-aahelp                -guiwid                -slave
-aaosdcolor            -h                     -softsleep
-aasubcolor            -hardframedrop         -speed
-ac                    -help                  -spuaa
-af                    --help                 -spualign
-af-adv                -hr-mp3-seek           -spugauss
-afm                   -hue                   -srate
-aid                   -icelayer              -ss
-alang                 -identify              -ssf
-ao                    -idx                   -sstep
-aofile                -ifo                   -stereo
-aop                   -input                 -stop-xscreensaver
-aspect                -jpeg                  -sub
-audio-demuxer         -lavdopts              -subalign
-audiofile             -lircconf              -sub-bg-alpha
-autoq                 -loop                  -sub-bg-color
-autosync              -mc                    -subcc
-bandwidth             -menu                  -subcp
-benchmark             -menu-cfg              -subdelay
-bpp                   -menu-root             -sub-demuxer


btw Би ли ми показал ~/.bashrc или може би zsh не го ползва. <_<
Progress your mind
Аватар
Progress
Участник
 
Мнения: 562
Регистриран на: Сря 24, Яну, 2007 20:12

Мнениеот Kulu Ngile » Нед 24, Авг, 2008 0:24

Не разбирам zsh кое не ползва... аз не съм казал, че bash не го може, а просто съм показал zsh какво може :)
BASH със сигурност не може да изкара man page-a на дадена команда така, както го прави zsh :)

А с комбинация с .zshrc, резултата е великолепен....
Изображение

Както се вижда..... със стрелките заствам в/у правилният избор и натискам enter :)
Ако съдбата е срещу теб, толкова по-зле за нея.

Изображение
APT HOWTO
Kulu Ngile
Унуфри
 
Мнения: 1233
Регистриран на: Съб 04, Мар, 2006 1:04
Местоположение: София

Мнениеот Progress » Нед 24, Авг, 2008 1:25

Kulu Ngile написа:Не разбирам zsh кое не ползва... аз не съм казал, че bash не го може, а просто съм показал zsh какво може :)
BASH със сигурност не може да изкара man page-a на дадена команда така, както го прави zsh :)

Сорка. Ти си споделил zhrc-то ама няма кой да го види. :P

Мисълта ми беше да погледна [gaara: ~]$ тази част, но явно няма да се получи с баш.

А има ли моменти на липса на функционалност. Проблеми с програми...??
Progress your mind
Аватар
Progress
Участник
 
Мнения: 562
Регистриран на: Сря 24, Яну, 2007 20:12

Мнениеот Kulu Ngile » Нед 24, Авг, 2008 12:55

Ако говориш за настройката на PS1, то в баш е:
Код за потвърждение: Избери целия код
PS1='[\[\033[01;32m\]\u:\[\033[00m\] \[\033[01;34m\]\W\[\033[00m\]]\$ '


Иначе само един проблем съм видял и не мога да го разбера, а именно:
- субтитрите на mplayer-a излизат на долни черти, но ако ползвам gui-то на mplayer-a....... всичко е както трябва.... явно има някакъв проблем с unicode-a, но не съм сигурен :)

Едит:
Проблема е с unicode :(..... gui-то, най-вероятно ползва default shell-a, който е bash, но ако го пусна през user gaara (deault shell-a ми е zsh), отново черти :(

Е, надявам се скоро да го оправят, защото ако пуснеш auto complete и auto correct , нещата стават извънземни:
1. Примерно бъркаш дадена команда, и zsh те пита дали да я оправи :D
Код за потвърждение: Избери целия код
[gaara: ~]$ car /etc/debian_version                               (08-24 15:49)
zsh: correct 'car' to 'cat' [nyae]? y
lenny/sid
[gaara: ~]$ 

Искам да убия даден процес... пиша kill натискам tab и със стрелките си селектвам желаният процес, който ми се листва от zsh :)

Код за потвърждение: Избери целия код
[gaara: ~]$ kill 3195                                                       (08-24 15:51)
 2984 ?        00:00:00 apache2                                               
 3070 ?        00:00:00 gconfd-2                                               
 3072 ?        00:00:00 gnome-keyring-d                                       
 3074 ?        00:00:00 x-session-manag                                       
 3131 ?        00:00:00 dbus-launch                                           
 3132 ?        00:00:00 dbus-daemon                                           
 3135 ?        00:00:00 gnome-settings-                                       
 3146 ?        00:00:00 bonobo-activati                                       
 3153 ?        00:00:00 metacity                                               
 3155 ?        00:00:01 gnome-panel                                           
 3157 ?        00:00:00 nautilus                                               
 3163 ?        00:00:00 gnome-vfs-daemo                                       
 3168 ?        00:00:00 system-config-p                                       
 3173 ?        00:00:00 nm-applet                                             
 3188 ?        00:00:00 mapping-daemon                                         
 3195 ?        00:00:00 audacious                                             
 3200 ?        00:00:13 firefox-bin                                           
 3229 ?        00:00:00 gnome-terminal                                         
 3231 ?        00:00:00 gnome-pty-helpe                                       
 3232 pts/0    00:00:00 zsh                                                   
 3245 pts/0    00:00:00 zsh                                                   
 3246 pts/0    00:00:00 ps 
Ако съдбата е срещу теб, толкова по-зле за нея.

Изображение
APT HOWTO
Kulu Ngile
Унуфри
 
Мнения: 1233
Регистриран на: Съб 04, Мар, 2006 1:04
Местоположение: София

Мнениеот Progress » Нед 24, Авг, 2008 17:46

Таб коплетишън при zsh явно наистина е доста по усъвършенстван. Тоя момент с командите също мн ми хареса. Ще го пробвам и ше споделя впечатления. :)

/off
За mplayer пробвай в zhrc да добавиш:

alias mplayer='LC_ALL=bg_BG.UTF-8 mplayer'

ако синтаксиса е наред и локала е генериран трябва да сработи. :)
Progress your mind
Аватар
Progress
Участник
 
Мнения: 562
Регистриран на: Сря 24, Яну, 2007 20:12

Мнениеот Kulu Ngile » Нед 24, Авг, 2008 22:00

С alias-a се получи и всичко заспа :)

Сега няма пречка от тестването и ползването на zsh :)... дал съм .zshrc-то, което ползвам и остава само вие да си кажете мнението.... аз съм много доволен, ама много *ura*
Благодарско *friends*
Ако съдбата е срещу теб, толкова по-зле за нея.

Изображение
APT HOWTO
Kulu Ngile
Унуфри
 
Мнения: 1233
Регистриран на: Съб 04, Мар, 2006 1:04
Местоположение: София

Мнениеот cybertorture » Сря 25, Мар, 2009 18:37

някой има ли идея защо този сочен конфиг не ще да работи ? -.-
копи-пейст от тук направих за да пробвам , но уви не ще ......

сега ползвам този конф надяам се да ви ариза :)


# My .zshrc file
#
# Written by Matthew Blissett.
#
# Latest version available from
#
# Some functions taken from various web sites/mailing lists, others written
# myself.
#
# Last updated 2009-03-23
#
# Released into the public domain.
#

# Skip all this for non-interactive shells
[[ -z "$PS1" ]] && return

# Set prompt (white and purple, nothing too fancy)
PS1=$'%{\e[0;37m%}%B%*%b %{\e[0;35m%}%m:%{\e[0;37m%}%~ %(!.#.>) %{\e[00m%}'

# Set less options
if [[ -x $(which less) ]]
then
export PAGER="less"
export LESS="--ignore-case --LONG-PROMPT --QUIET --chop-long-lines -Sm --RAW-CONTROL-CHARS --quit-if-one-screen --no-init"
if [[ -x $(which lesspipe.sh) ]]
then
LESSOPEN="| lesspipe.sh %s"
export LESSOPEN
fi
fi

# Set default editor
if [[ -x $(which emacs) ]]
then
export EDITOR="emacs"
export USE_EDITOR=$EDITOR
export VISUAL=$EDITOR
fi

# Zsh settings for history
export HISTIGNORE="&:ls:[bf]g:exit:reset:clear:cd:cd ..:cd.."
export HISTSIZE=25000
export HISTFILE=~/.zsh_history
export SAVEHIST=25000
setopt APPEND_HISTORY
setopt INC_APPEND_HISTORY
setopt HIST_IGNORE_ALL_DUPS
setopt HIST_IGNORE_SPACE
setopt HIST_REDUCE_BLANKS
setopt HIST_SAVE_NO_DUPS
setopt HIST_VERIFY

# Zsh spelling correction options
#setopt CORRECT
#setopt DVORAK

# Prompts for confirmation after 'rm *' etc
# Helps avoid mistakes like 'rm * o' when 'rm *.o' was intended
setopt RM_STAR_WAIT

# Background processes aren't killed on exit of shell
setopt AUTO_CONTINUE

# Don’t write over existing files with >, use >! instead
setopt NOCLOBBER

# Don’t nice background processes
setopt NO_BG_NICE

# Watch other user login/out
watch=notme
export LOGCHECK=60

# Enable color support of ls
if [[ "$TERM" != "dumb" ]]; then
if [[ -x `which dircolors` ]]; then
eval `dircolors -b`
alias 'ls=ls --color=auto'
fi
fi

# Short command aliases
alias 'l=ls'
alias 'la=ls -A'
alias 'll=ls -l'
alias 'lq=ls -Q'
alias 'lr=ls -R'
alias 'lrs=ls -lrS'
alias 'lrt=ls -lrt'
alias 'lrta=ls -lrtA'
alias 'j=jobs -l'
alias 'kw=kwrite'
alias 'tf=tail -f'
alias 'grep=grep --colour'
alias 'e=emacs -nw --quick'

# Useful KDE integration (see later for definition of z)
alias 'k=z kate -u' # -u is reuse existing session if possible
alias 'q=z kfmclient openURL' # Opens (or executes a .desktop) arg1 in Konqueror

# These are useful with the Dvorak keyboard layout
alias 'h=ls'
alias 'ha=la'
alias 'hh=ll'
alias 'hq=lq'
alias 'hr=lr'
alias 'hrt=lrt'
alias 'hrs=lrs'

# Play safe!
alias 'rm=rm -i'
alias 'mv=mv -i'
alias 'cp=cp -i'

# For convenience
alias 'mkdir=mkdir -p'
alias 'dus=du -ms * | sort -n'

# Typing errors...
alias 'cd..=cd ..'

# Running 'b.ps' runs 'q b.ps'
alias -s ps=q
alias -s html=q

# PDF viewer (just type 'file.pdf')
if [[ -x `which kpdf` ]]; then
alias -s 'pdf=kfmclient exec'
else
if [[ -x `which gpdf` ]]; then
alias -s 'pdf=gpdf'
else
if [[ -x `which evince` ]]; then
alias -s 'pdf=evince'
fi
fi
fi

# Global aliases (expand whatever their position)
# e.g. find . E L
alias -g L='| less'
alias -g H='| head'
alias -g S='| sort'
alias -g T='| tail'
alias -g N='> /dev/null'
alias -g E='2> /dev/null'

# SSH aliases
alias 'sshb=ssh matt@blissett.me.uk'

# SSH to shell[1234].doc.ic.ac.uk at random
sshdoc() {
ssh mrb04@shell$(($RANDOM % 4 + 1)).doc.ic.ac.uk $*
}

# Automatically background processes (no output to terminal etc)
alias 'z=echo $RANDOM > /dev/null; zz'
zz () {
echo $*
$* &> "/tmp/z-$1-$RANDOM" &!
}

# Aliases to use this
# Use e.g. 'command gv' to avoid
alias 'acroread=z acroread'
alias 'amarok=z amarok'
alias 'azureus=z azureus'
alias 'easytag=z easytag'
alias 'eclipse=z eclipse'
alias 'firefox=z firefox'
alias 'icedove=z icedove'
alias 'gaim=z gaim'
alias 'gimp=z gimp'
alias 'gpdf=z gpdf'
alias 'gv=z gv'
alias 'k3b=z k3b'
alias 'kate=z kate'
alias 'kmail=z kmail'
alias 'konqueror=z konqueror'
alias 'konsole=z konsole'
alias 'kontact=z kontact'
alias 'kopete=z kopete'
alias 'kpdf=z kpdf'
alias 'kwrite=z kwrite'
alias 'ooffice=z ooffice'
alias 'oowriter=z oowriter'
alias 'opera=z opera'
alias 'pan=z pan'
alias 'sunbird=z sunbird'
alias 'thunderbird=z thunderbird'

# Quick find
f() {
echo "find . -iname \"*$1*\""
find . -iname "*$1*"
}

# Remap Dvorak-Qwerty quickly
alias 'aoeu=setxkbmap gb' # (British keyboard layout)
alias 'asdf=setxkbmap gb dvorak 2> /dev/null || setxkbmap dvorak gb 2> /dev/null || setxkbmap dvorak'

# Clear konsole history
alias 'zaph=dcop $KONSOLE_DCOP_SESSION clearHistory'

# When directory is changed set xterm title to host:dir
chpwd() {
[[ -t 1 ]] || return
case $TERM in
sun-cmd) print -Pn "\e]l%~\e\\";;
*xterm*|rxvt|(dt|k|E)term) print -Pn "\e]2;%m:%~\a";;
esac
}

# For changing the umask automatically
# Maybe I should be using chpwd for this.
umask 0077
cd() {
builtin cd $*

# Private folders
if [[ -z ${~PWD:#${HOME}/documents*} ||
-z ${~PWD:#${HOME}/imperial*} ||
-z ${~PWD:#${HOME}} ||
-z ${~PWD:#${HOME}/zo*} ]]
then
if [[ $(umask) -ne 077 ]]
then
umask 0077
echo -e "\033[01;32mUmask: private \033[m"
fi
else
# Web permissions
if [[ -z ${~PWD:#/web*} ||
-z ${~PWD:#/matt/web*} ||
-z ${~PWD:#${HOME}/web*} ]]
then
if [[ $(umask) -ne 072 ]]
then
umask 0072
echo -e "\033[01;33mUmask: other readable \033[m"
fi
else
# Group writable permissions
if [[ -z ${~PWD:#/vol/linux*} ||
-z ${~PWD:#/vol/project*} ||
-z ${~PWD:#/vol/source*} ||
-z ${~PWD:#/home/blissett*} ]]
then
if [[ $(umask) -ne 002 ]]
then
umask 0002
echo -e "\033[01;35mUmask: group writable \033[m"
fi
else
# World readable
if [[ $(umask) -ne 022 ]]
then
umask 0022
echo -e "\033[01;31mUmask: world readable \033[m"
fi
fi
fi
fi

}
cd . &> /dev/null

# For quickly plotting data with gnuplot. Arguments are files for 'plot "" with lines'.
plot () {
echo -n '(echo set term png; '
echo -n 'echo -n plot \"'$1'\" with lines; '
for i in $*[2,$#@]; echo -n 'echo -n , \"'$i'\" with lines; '
echo 'echo ) | gnuplot | display png:-'

(
echo "set term png"
echo -n plot \"$1\" with lines
for i in $*[2,$#@]; echo -n "," \"$i\" "with lines"
) | gnuplot | display png:-
}
# Persistant gnuplot (can be resized etc)
plotp () {
echo -n '(echo -n plot \"'$1'\" with lines; '
for i in $*[2,$#@]; echo -n 'echo -n , \"'$i'\" with lines; '
echo 'echo ) | gnuplot -persist'

(
echo -n plot \"$1\" with lines
for i in $*[2,$#@]; echo -n "," \"$i\" "with lines"
echo
) | gnuplot -persist
}

# CD into random directory in PWD
cdrand () {
all=( *(/) )
rand=$(( 1 + $RANDOM % $#all ))
cd $all[$rand]
}

# Print some stuff
if [[ -x `which date` ]]; then
date
echo
fi
if [[ -x `which fortune` ]]; then
fortune -a 2> /dev/null
fi

# The following lines were added by compinstall
zstyle ':completion:*' completer _expand _complete _match
zstyle ':completion:*' completions 0
zstyle ':completion:*' format 'Completing %d'
zstyle ':completion:*' glob 0
zstyle ':completion:*' group-name ''
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
zstyle ':completion:*' matcher-list '+m:{a-z}={A-Z} r:|[._-]=** r:|=**' '' '' '+m:{a-z}={A-Z} r:|[._-]=** r:|=**'
zstyle ':completion:*' max-errors 1 numeric
zstyle ':completion:*' substitute 0
zstyle :compinstall filename "$HOME/.zshrc"

autoload -Uz compinit
compinit
# End of lines added by compinstall

zstyle -d users
#zstyle ':completion:*' users mrb04 matt
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 backup bind \
dictd gnats identd irc man messagebus postfix proxy sys www-data \
avahi Debian-exim hplip list cupsys haldaemon ntpd proftpd statd

zstyle ':completion:*' hosts $(<$HOME/.hosts)

zstyle ':completion:*:cd:*' ignored-patterns '(*/)#lost+found'

zstyle ':completion:*:(rm|kill|diff):*' ignore-line yes
zstyle ':completion:*:*:kill:*' menu yes select
zstyle ':completion:*:kill:*' force-list always

# Filename suffixes to ignore during completion (except after rm command)
zstyle ':completion:*:*:(^rm):*:*files' ignored-patterns '*?.o' '*?.c~' \
'*?.old' '*?.pro'

zstyle ':completion:*:(all-|)files' ignored-patterns '(|*/)CVS'
zstyle ':completion:*:cd:*' ignored-patterns '(*/)#CVS'

zstyle ':completion:*:*:xdvi:*' file-sort time

autoload zsh/sched

# Copys word from earlier in the current command line
# or previous line if it was chosen with ^[. etc
autoload copy-earlier-word
zle -N copy-earlier-word
bindkey '^[,' copy-earlier-word

# Cycle between positions for ambigous completions
autoload cycle-completion-positions
zle -N cycle-completion-positions
bindkey '^[z' cycle-completion-positions

# Increment integer argument
autoload incarg
zle -N incarg
bindkey '^X+' incarg

# Write globbed files into command line
autoload insert-files
zle -N insert-files
bindkey '^Xf' insert-files

# Play tetris
autoload -U tetris
zle -N tetris
bindkey '^X^T' tetris

# xargs but zargs
autoload -U zargs

# Calculator
autoload zcalc

# Line editor
autoload zed

# Renaming with globbing
autoload zmv

# Various reminders of things I forget...
# (Mostly useful features that I forget to use)
# vared
# =ls turns to /bin/ls
# =(ls) turns to filename (which contains output of ls)
# <(ls) turns to named pipe
# ^X* expand word
# ^[^_ copy prev word
# ^[A accept and hold
# echo $name:r not-extension
# echo $name:e extension
# echo $xx:l lowercase
# echo $name:s/foo/bar/

# Add host/domain specific zshrc
if [ -f $HOME/.zshrc-$HOST ]
then
. $HOME/.zshrc-$HOST
fi

if [ -f $HOME/.zshrc-$(hostname -d) ]
then
. $HOME/.zshrc-$(hostname -d)
fi

# Get round annoyance in Gentoo
# (No idea if this is needed any more)
source $HOME/.zshenv
Аватар
cybertorture
Участник
 
Мнения: 104
Регистриран на: Пон 23, Мар, 2009 15:53


Назад към Разни

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 госта

cron