±±¾©Ê¯ÓÍ»¯¹¤Ñ§Ôº2026ÄêÑо¿ÉúÕÐÉú½ÓÊÕµ÷¼Á¹«¸æ
²é¿´: 536  |  »Ø¸´: 3
¡¾½±Àø¡¿ ±¾Ìû±»ÆÀ¼Û2´Î£¬×÷Õßjove1782Ôö¼Ó½ð±Ò 1 ¸ö
µ±Ç°Ö÷ÌâÒѾ­´æµµ¡£

jove1782

ľ³æ (ÕýʽдÊÖ)


[×ÊÔ´] ÖÕ¼«Shell¡ª¡ªZsh

Óо仰ÕâÑù˵£¬zsh: The last shell you¡¯ll ever need! ZÊÇ×îºóÒ»¸ö×Öĸ£¬ËùÒÔÊÇÖÕ¼«Shell¡£

    ÎÒÔø¾­ËÑË÷µ½Ò»¸ö±È½Ï¸÷ÖÖShellµÄÎÄÕ£¬Zsh½»»¥ÐÔÊÇA+¼¶±ðµÄ£¬Ô¶¸ßÓÚÆäËüShell¡£ÔÚ±à³Ì·½Ã棬ZshÊÇA¼¶µÄ°É£¬Ò²ÊÇ×î¸ßµÄ¡£Ö»ÊDz»ÖªµÀ³öÓÚʲôԭÒò£¬Zsh±»ÑÏÖØµÄµÍ¹ÀÁË¡£

´ó¶àÊýµÄLinuxÓû§±È½ÏÆ«°®Bash£¬ÒòΪ´ó¶àÊýµÄ·¢ÐаæÄ¬ÈϵľÍÊÇËü¡£Æ¾ÐĶøÂÛ£¬Bashȷʵ±ÈCshÖ®Á÷µÄºÃÓöàÁË¡£²»¹ýBashÒ²ÓÐºÜ¶àµØ·½²»¾¡ÈËÒ⣬Ïñ×Ô¶¯²¹È«µÄ¹¦Äܲ»¹»Ç¿´ó£¬¶¨Î»½Ï³¤Â·¾¶²»¹»·½±ãµÈ¡£

ºóÀ´ÎÒʹÓÃZsh¡£Èç¹û²»µ÷ÕûһЩ±ØÒªµÄÅäÖõϰ£¬ZshÉõÖÁ»¹²»ÈçBashºÃÓá£ÕâÒ²ÊǺܶàÈ˳¢ÊÔ¹ý²¢·ÅÆú¹ýµÄÔ­Òò¡£

²»ÊìϤZshµÄÈË£¬¶ÔZsh×îÉî¿ÌµÄÓ¡ÏóÓ¦¸Ã¾ÍÊÇËüµÄÃüÁîÌáʾ·ûÁË¡£ËüÖ§³ÖÓÒ²à¶ÔÆëµÄÌáʾ·û.

ZshµÄ×Ô¶¯²¹È«¹¦ÄÜÊ®·ÖµÄÇ¿´ó£¬Ëü¿ÉÒÔ×Ô¶¯²¹È«ÃüÁî¡¢²ÎÊý¡¢ÎļþÃû¡¢½ø³Ì¡¢Óû§Ãû¡¢±äÁ¿¡¢È¨ÏÞ·ûµÈ¡£

Zsh»¹ÓÐÒ»¸öÌùÐĵŦÄÜ£ºÂ·¾¶±ðÃû¡£¼ÙÉèÓÐÒ»¸öºÜ³¤µÄ·¾¶£¬ÀýÈç/home/lighttpd/html£¬¿ÉÒÔ°ÑÕâ¸ö·¾¶ÃüÃûΪ ~WWW¡£

Zsh¿ÉÒÔʹÓÃEmacs·ç¸ñµÄ¼ü°ó¶¨£¬Ï°¹ßBash¼ü°ó¶¨µÄÅóÓÑÎÞÐèÖØÐÂÊÊÓ¦¡£Zsh¼æÈÝ´ó¶àÊýÖ÷Á÷Shell£¬ÏñBash¡¢CshµÈ¡£

ÏÂÃæ½²½âÒ»ÏÂZshÅäÖÃÎļþ£º

    #ÃüÁîÌáʾ·û ( ^[ ÊÇÒ»¸öÌØÊâ×Ö·û ÔÚvi²åÈëģʽÏ °´Ctrl+v ESC ²åÈë¸Ã×Ö·û£©
    PROMPT='%{ ^[[36m%}%n%{^[[35m%}@%{^[[34m%}%M %{^[[33m%}%D %T %{^[[32m%}%/
    %{^[[31m%}>>%{^[[m%}'

    #¹ØÓÚÀúÊ·¼Í¼µÄÅäÖÃ
    # number of lines kept in history
    export HISTSIZE=10000
    # # number of lines saved in the history after logout
    export SAVEHIST=10000
    # # location of history
    export HISTFILE=~/.zhistory
    # # append command to history file once executed
    setopt INC_APPEND_HISTORY

    #Disable core dumps
    limit coredumpsize 0

    #Emacs·ç¸ñ¼ü°ó¶¨
    bindkey -e
    #ÉèÖÃDEL¼üΪÏòºóɾ³ý
    bindkey "\e[3~" delete-char

    #ÒÔÏÂ×Ö·ûÊÓΪµ¥´ÊµÄÒ»²¿·Ö
    WORDCHARS='*?_-[]~=&;!#$%^(){}<>'

    #×Ô¶¯²¹È«¹¦ÄÜ
    setopt AUTO_LIST
    setopt AUTO_MENU
    setopt MENU_COMPLETE

    autoload -U compinit
    compinit

    # Completion caching
    zstyle ':completion::complete:*' use-cache on
    zstyle ':completion::complete:*' cache-path .zcache
    #zstyle ':completion:*:cd:*' ignore-parents parent pwd

    #Completion Options
    zstyle ':completion:*:match:*' original only
    zstyle ':completion::prefix-1:*' completer _complete
    zstyle ':completion:predict:*' completer _complete
    zstyle ':completion:incremental:*' completer _complete _correct
    zstyle ':completion:*' completer _complete _prefix _correct _prefix _match _approximate

    # Path Expansion
    zstyle ':completion:*' expand 'yes'
    zstyle ':completion:*' squeeze-shlashes 'yes'
    zstyle ':completion::complete:*' '\\'

    zstyle ':completion:*:*:*:default' menu yes select
    zstyle ':completion:*:*:default' force-list always

    # GNU Colors ÐèÒª/etc/DIR_COLORSÎļþ ·ñÔò×Ô¶¯²¹È«Ê±ºòÑ¡²Ëµ¥ÖеÄÑ¡Ïî²»ÄܲÊÉ«ÏÔʾ
    [ -f /etc/DIR_COLORS ] && eval $(dircolors -b /etc/DIR_COLORS)
    export ZLSCOLORS="${LS_COLORS}"
    zmodload zsh/complist
    zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
    zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31'

    zstyle ':completion:*' completer _complete _match _approximate
    zstyle ':completion:*:match:*' original only
    zstyle ':completion:*:approximate:*' max-errors 1 numeric

    compdef pkill=kill
    compdef pkill=killall
    zstyle ':completion:*:*:kill:*' menu yes select
    zstyle ':completion:*:processes' command 'ps -au$USER'

    # Group matches and Describe
    zstyle ':completion:*:matches' group 'yes'
    zstyle ':completion:*ptions' description 'yes'
    zstyle ':completion:*ptions' auto-description '%d'
    zstyle ':completion:*:descriptions' format $'\e[01;33m -- %d --\e[0m'
    zstyle ':completion:*:messages' format $'\e[01;35m -- %d --\e[0m'
    zstyle ':completion:*:warnings' format $'\e[01;31m -- No Matches Found --\e[0m'

    #ÃüÁî±ðÃû
    alias cp='cp -i'
    alias mv='mv -i'
    alias rm='rm -i'
    alias ls='ls -F --color=auto'
    alias ll='ls -l'
    alias grep='grep --color=auto'
    alias ee='emacsclient -t'

    #·¾¶±ðÃû ½øÈëÏàÓ¦µÄ·¾¶Ê±Ö»Òª cd ~xxx
    hash -d WWW="/home/lighttpd/html"
    hash -d ARCH="/mnt/arch"
    hash -d PKG="/var/cache/pacman/pkg"
    hash -d E="/etc/env.d"
    hash -d C="/etc/conf.d"
    hash -d I="/etc/rc.d"
    hash -d X="/etc/X11"
    hash -d BK="/home/r00t/config_bak"

    ##for EmacsÔÚEmacsÖÕ¶ËÖÐʹÓÃZshµÄһЩÉèÖà ²»ÍƼöÔÚEmacsÖÐʹÓÃËü
    if [[ "$TERM" == "dumb" ]]; then
    setopt No_zle
    PROMPT='%n@%M %/
    >>'
    alias ls='ls -F'
    fi

Ч¹û³¬ìŵÄÌáʾ·û£º

    #Ч¹û³¬ìŵÄÌáʾ·û

    function precmd {

    local TERMWIDTH
    (( TERMWIDTH = ${COLUMNS} - 1 ))

    ###
    # Truncate the path if it's too long.

    PR_FILLBAR=""
    PR_PWDLEN=""

    local promptsize=${#${(%):---(%n@%m:%l)---()--}}
    local pwdsize=${#${(%):-%~}}

    if [[ "$promptsize + $pwdsize" -gt $TERMWIDTH ]]; then
    ((PR_PWDLEN=$TERMWIDTH - $promptsize))
    else
    PR_FILLBAR="\${(l.(($TERMWIDTH - ($promptsize + $pwdsize)))..${PR_HBAR}.)}"
    fi

    ###
    # Get APM info.

    #if which ibam > /dev/null; then
    #PR_APM_RESULT=`ibam --percentbattery`
    #elif which apm > /dev/null; then
    #PR_APM_RESULT=`apm`
    #fi
    }

    setopt extended_glob
    preexec () {
    if [[ "$TERM" == "screen" ]]; then
    local CMD=${1[(wr)^(*=*|sudo|-*)]}
    echo -n "\ek$CMD\e\\"
    fi
    }

    setprompt () {
    ###
    # Need this so the prompt will work.

    setopt prompt_subst

    ###
    # See if we can use 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
    PR_NO_COLOUR="%{$terminfo[sgr0]%}"

    ###
    # See if we can use extended characters to look nicer.

    typeset -A altchar
    set -A altchar ${(s..)terminfo[acsc]}
    PR_SET_CHARSET="%{$terminfo[enacs]%}"
    PR_SHIFT_IN="%{$terminfo[smacs]%}"
    PR_SHIFT_OUT="%{$terminfo[rmacs]%}"
    PR_HBAR=${altchar[q]:--}
    #PR_HBAR=" "
    PR_ULCORNER=${altchar[l]:--}
    PR_LLCORNER=${altchar[m]:--}
    PR_LRCORNER=${altchar[j]:--}
    PR_URCORNER=${altchar[k]:--}

    ###
    # Decide if we need to set titlebar text.

    case $TERM in
    xterm*)
    PR_TITLEBAR=$'%{\e]0;%(!.-=*[ROOT]*=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\a%}'
    ;;
    screen)
    PR_TITLEBAR=$'%{\e_screen \005 (\005t) | %(!.-=[ROOT]=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\e\\%}'
    ;;
    *)
    PR_TITLEBAR=''
    ;;
    esac

    ###
    # Decide whether to set a screen title
    if [[ "$TERM" == "screen" ]]; then
    PR_STITLE=$'%{\ekzsh\e\\%}'
    else
    PR_STITLE=''
    fi

    ###
    # APM detection

    #if which ibam > /dev/null; then
    #PR_APM='$PR_RED${${PR_APM_RESULT[(f)1]}[(w)-2]}%%(${${PR_APM_RESULT[(f)3]}[(w)-1]})$PR_LIGHT_BLUE:'
    #elif which apm > /dev/null; then
    #PR_APM='$PR_RED${PR_APM_RESULT[(w)5,(w)6]/\% /%%}$PR_LIGHT_BLUE:'
    #else
    PR_APM=''
    #fi

    ###
    # Finally, the prompt.

    PROMPT='$PR_SET_CHARSET$PR_STITLE${(e)PR_TITLEBAR}\
    $PR_CYAN$PR_SHIFT_IN$PR_ULCORNER$PR_BLUE$PR_HBAR$PR_SHIFT_OUT(\
    $PR_GREEN%(!.%SROOT%s.%n)$PR_GREEN@%m:%l\
    $PR_BLUE)$PR_SHIFT_IN$PR_HBAR$PR_CYAN$PR_HBAR${(e)PR_FILLBAR}$PR_BLUE$PR_HBAR$PR_SHIFT_OUT(\
    $PR_MAGENTA%$PR_PWDLEN<...<%~%<<\
    $PR_BLUE)$PR_SHIFT_IN$PR_HBAR$PR_CYAN$PR_URCORNER$PR_SHIFT_OUT\

    $PR_CYAN$PR_SHIFT_IN$PR_LLCORNER$PR_BLUE$PR_HBAR$PR_SHIFT_OUT(\
    %(?..$PR_LIGHT_RED%?$PR_BLUE\
    ${(e)PR_APM}$PR_YELLOW%D{%H:%M}\
    $PR_LIGHT_BLUE:%(!.$PR_RED.$PR_WHITE)%#$PR_BLUE)$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\
    $PR_CYAN$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\
    $PR_NO_COLOUR '

    RPROMPT=' $PR_CYAN$PR_SHIFT_IN$PR_HBAR$PR_BLUE$PR_HBAR$PR_SHIFT_OUT\
    ($PR_YELLOW%D{%a,%b%d}$PR_BLUE)$PR_SHIFT_IN$PR_HBAR$PR_CYAN$PR_LRCORNER$PR_SHIFT_OUT$PR_NO_COLOUR'

    PS2='$PR_CYAN$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\
    $PR_BLUE$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT(\
    $PR_LIGHT_GREEN%_$PR_BLUE)$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\
    $PR_CYAN$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT$PR_NO_COLOUR '
    }

    setprompt
»Ø¸´´ËÂ¥
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
ÏÖÔÚ¶¼Ö»ÄÜÍæÍ¼ÐνçÃæÁË
Ë­»¹»áÍæÃüÁîÐÐ
2Â¥2008-08-06 19:52:20
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

hookah

ľ³æ (ÕýʽдÊÖ)


¡ï¡ï¡ï ÈýÐǼ¶,Ö§³Ö¹ÄÀø

Èκζ«Î÷ÓÃÊìÁË.´ïµ½hackµÄ¾³½ç¶¼ÊǶ¥¼¶µÄA!
¹þ¹þ!
ÎÞËùνÁË!
²»¹ýÕÆÎÕÒ»¸öºÃµÄshellȷʵ·Ç³£±ØÒªµÄ!
3Â¥2008-08-06 20:39:05
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

sswv

ľ³æ (СÓÐÃûÆø)


¡ï¡ï¡ï ÈýÐǼ¶,Ö§³Ö¹ÄÀø

ÃüÁîÐй¤¾ßÔÚЧÂʺÍ׼ȷÐÔ·½ÃæµÄÓÅÊÆ»¹ÊǺÜÃ÷ÏԵģ¡
4Â¥2008-08-06 23:42:49
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ jove1782 µÄÖ÷Ìâ¸üÐÂ
¡î ÎÞÐǼ¶ ¡ï Ò»ÐǼ¶ ¡ï¡ï¡ï ÈýÐǼ¶ ¡ï¡ï¡ï¡ï¡ï ÎåÐǼ¶
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] 282Çóµ÷¼Á +20 ycy1201 2026-04-01 22/1100 2026-04-04 00:42 by userper
[¿¼ÑÐ] µç×ÓÐÅÏ¢µ÷¼Á½»²æÑ§¿ÆÓÐÍÆ¼öÂð +4 jhtfeybgj 2026-04-01 6/300 2026-04-04 00:14 by Öí»á·É
[¿¼ÑÐ] 317·Ö Ò»Ö¾Ô¸½­ÄÏ´óѧ »¯Ñ§¹¤³Ìѧ˶ Çóµ÷¼Á +6 YinTai 2026-04-03 6/300 2026-04-03 22:30 by Î޼ʵIJÝÔ­
[¿¼ÑÐ] »¯Ñ§308·Öµ÷¼Á +21 ÄãºÃÃ÷ÌìÄãºÃ 2026-03-30 22/1100 2026-04-03 21:32 by °ÙÁéͯ888
[¿¼ÑÐ] 329Çóµ÷¼Á£¬Ò»Ö¾Ô¸Î÷±±¹¤Òµ´óѧ£¬²ÄÁϹ¤³Ì£¨085601£© +8 СС»úÁ鳿 2026-03-29 14/700 2026-04-03 19:38 by lijunpoly
[¿¼ÑÐ] 085600ר˶²ÄÁÏÓ뻯¹¤348·ÖÇóµ÷¼Á +10 ÉÏѧÀ²£¡ 2026-04-01 11/550 2026-04-03 14:13 by °ÙÁéͯ888
[¿¼ÑÐ] 071000ÉúÎïѧµ÷¼Á +8 ÖªÕÑÂû 2026-04-02 8/400 2026-04-03 10:36 by macy2011
[¿¼ÑÐ] 330Çóµ÷¼Á +3 °×ÉñÎØºôºô 2026-04-02 3/150 2026-04-03 10:15 by À¶ÔÆË¼Óê
[¿¼ÑÐ] Ò»Ö¾Ô¸Éî´ó085601²ÄÁϹ¤³Ìרҵ£¨×¨Ë¶£©300·Ö¿ÉÒÔµ÷¼ÁÈ¥ÄÄ +8 10160315 2026-04-02 8/400 2026-04-03 09:36 by hypershenger
[¿¼²©] É격ÇóÖú +3 Reee1Llll 2026-04-01 3/150 2026-04-02 22:29 by ÕâÊÇÒ»¸öÎÞÁĵÄê
[¿¼ÑÐ] 275ѧ˶081000·þ´Óµ÷¼Áµ½ÆäËûרҵ£¬±£²»×¡±¾×¨ÒµÁË +7 һֻССˮţ 2026-04-02 8/400 2026-04-02 14:23 by alice-2022
[¿¼ÑÐ] Ò»Ö¾Ô¸±±½»´ó²ÄÁϹ¤³Ì×Ü·Ö358 +3 cs0106 2026-04-02 5/250 2026-04-02 11:37 by olim
[¿¼ÑÐ] 266Çóµ÷¼Á +4 ѧԱ97LZgn 2026-04-02 4/200 2026-04-02 09:52 by yulian1987
[¿¼ÑÐ] 266·Ö£¬Ò»Ö¾Ô¸µçÆø¹¤³Ì£¬±¾¿Æ²ÄÁÏ£¬Çó²ÄÁÏרҵµ÷¼Á +10 ÍÛºôºßºôºß 2026-04-01 11/550 2026-04-01 21:48 by chyhaha
[¿¼ÑÐ] 290Çóµ÷¼Á +5 dfffsar 2026-03-29 5/250 2026-04-01 19:45 by 6781022
[¿¼ÑÐ] Çóµ÷¼Á +4 ͼ¼ø212 2026-03-30 5/250 2026-04-01 15:32 by ͼ¼ø212
[¿¼ÑÐ] 266Çóµ÷¼Á +3 ÍÛºôºßºôºß 2026-03-29 3/150 2026-03-31 10:06 by cal0306
[¿¼ÑÐ] 262Çóµ÷¼Á +7 ZZ..000 2026-03-30 8/400 2026-03-31 10:05 by cal0306
[¿¼ÑÐ] 293·ÖÇóµ÷¼Á£¬ÍâÓïΪ¶íÓï +5 ¼ÓÒ»Ò»¾Å 2026-03-31 5/250 2026-03-31 09:39 by zhshch
[¿¼ÑÐ] 293Çóµ÷¼Á +3 ĩδmm 2026-03-30 5/250 2026-03-30 17:23 by Íõ±£½Ü33
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û