无码视频在线观看,99人妻,国产午夜视频,久久久久国产一级毛片高清版新婚

  • 始創(chuàng)于2000年 股票代碼:831685
    咨詢熱線:0371-60135900 注冊有禮 登錄
    • 掛牌上市企業(yè)
    • 60秒人工響應(yīng)
    • 99.99%連通率
    • 7*24h人工
    • 故障100倍補(bǔ)償
    全部產(chǎn)品
    您的位置: 網(wǎng)站首頁 > 幫助中心>文章內(nèi)容

    Zsh使用心得三則

    發(fā)布時間:  2012/8/9 17:24:38

    在每個目錄下,經(jīng)常用到的命令是不一樣的比如在源碼目錄下常用的是 make xxx ,在配置文件目錄下常用的是 vi xxx …… 這種情況下,每個目錄使用獨(dú)立的歷史紀(jì)錄就比較方便(似乎有發(fā)行版中的 bash 默認(rèn)如此設(shè)置) 實(shí)現(xiàn)方式很簡單: 1. 在 $HOME/.zshhistory 目錄下創(chuàng)建與工作目錄層級相同的目錄,并在使用該目錄下的 zhistory 作為歷史紀(jì)錄文件 2. 由于切換目錄總是使用 cd 命令,因此在 cd 的時候重新設(shè)定 $HISTFILE 變量即可 ($HISTFILE 指定 zsh 使用的歷史紀(jì)錄文件)
    # 定義函數(shù),替換原來的 cd
    cd()
    -  {
        builtin cd "$@"                             # 執(zhí)行原來的 cd 命令
        fc -W                                       # 寫歷史紀(jì)錄文件,默認(rèn)參數(shù)為 $HISTFILE 。初始值為 #2 處的定義;執(zhí)行了 cd 命令后為 #1 處的定義
    # 實(shí)際上,你不可能在每個目錄下都執(zhí)行個把命令,很多目錄你沒有去過,只要為你去過的目錄建立歷史紀(jì)錄就可以了
        local HISTDIR="$HOME/.zshhistory$PWD"      # 定義歷史紀(jì)錄目錄。每次 cd 后,$PWD 對應(yīng)與工作目錄層級相同的目錄
            if  [ ! -d "$HISTDIR" ] ; then          # 如果不存在這個目錄,則建立一個
                mkdir -p "$HISTDIR"
            fi
            export HISTFILE="$HISTDIR/zhistory"     #1 定義歷史紀(jì)錄文件 
        touch $HISTFILE                                # 先 touch 一下,如果不存在的話就會新建一個
    # 清空原來的歷史紀(jì)錄
        local ohistsize=$HISTSIZE                # 設(shè)定一個變量臨時存儲原歷史紀(jì)錄大小
            HISTSIZE=0                              # 通過禁用歷史紀(jì)錄清空
            HISTSIZE=$ohistsize                     # 重新設(shè)定歷史紀(jì)錄大小
        fc -R                                       #讀歷史紀(jì)錄文件,默認(rèn)參數(shù)為 $HISTFILE  。也就是 #1 處的定義
    }
    # 啟動 zsh 的時候,并沒有執(zhí)行 cd 命令,因此 $HOME 目錄對應(yīng)的歷史紀(jì)錄目錄可能不存在,先建立它
    mkdir -p $HOME/.zshhistory$PWD
    #2 同樣,啟動 zsh 的時候, 還沒有定義 $HOME 目錄對應(yīng)的 $HISTFILE ,所以先定義它
    export HISTFILE="$HOME/.zshhistory$PWD/zhistory"

    這樣翻歷史紀(jì)錄是方便了,但要查看全部的歷史紀(jì)錄可能有點(diǎn)麻煩了

    # 使用 setopt EXTENDED_HISTORY 選項(xiàng),為命令添加時間戳
    # 這非常重要,匯總到一起的歷史紀(jì)錄比較混亂,時間戳是重新排序的依據(jù)

    # 定義 allhistory ,將所有的歷史紀(jì)錄匯總到一起
    function allhistory { cat $(find $HOME/.zsh_history -name zhistory) }
    # 針對歷史紀(jì)錄的格式進(jìn)行轉(zhuǎn)換
    function convhistory {
                sort $1 |         #排序
                uniq |         #合并相同行。
                                #由于時間戳精確到秒,所以幾乎不可能有相同的紀(jì)錄
                                #出現(xiàn)相同的紀(jì)錄是因?yàn)?zsh 的處理方式,每次 cd 會在兩個紀(jì)錄文件中產(chǎn)生相同的 cd 命令
                sed 's/^:([ 0-9]*):[0-9]*;(.*)/\1::::::\2/' |   #去掉歷史紀(jì)錄中不需要的字段。添加自定義的分隔符,方便下一步處理
                awk -F"::::::" '{ $1=strftime("%Y-%m-%d %T",$1) "|"; print }'    # 將 UNIX 時間戳轉(zhuǎn)換成可以看懂的格式
    }

    #使用 histall 命令查看全部歷史紀(jì)錄
    function histall { convhistory =(allhistory) |
                sed '/^.{20} *cd/i\' }  # 在每個 cd 命令前添加空行,判斷工作目錄比較容易
                                           # 可能會有一點(diǎn)不準(zhǔn)確。因?yàn)閱雍屯顺鰰r不執(zhí)行 cd 命令,沒有相應(yīng)的紀(jì)錄。尤其是同時運(yùn)行多個 zsh  的時候
    #使用 hist 查看當(dāng)前目錄歷史紀(jì)錄
    function hist { convhistory $HISTFILE }

    #全部歷史紀(jì)錄 top20
    #統(tǒng)計單詞出現(xiàn)的次數(shù)
    function top20 { allhistory | awk -F':[ 0-9]:[0-9];' '{ $1="" ; print }' |
    sed 's/ /\n/g' |    # 根據(jù)空格拆分單詞,可能不準(zhǔn)確,比如 "\ " 之類的。但是以這類單詞出現(xiàn)的頻率,應(yīng)該不會進(jìn)入 top20
                        # 本著我不會的就是不需要的原則,不作相應(yīng)的處理了
    sed '/^$/d' | sort | uniq -c | sort -nr | head -n 20 }
     

    切換目錄時輸入 cd 還是比較麻煩的,下面的腳本實(shí)現(xiàn)在沒有輸入任何內(nèi)容的情況下按 TAB ,自動填入 "cd [TAB]"

    user-complete(){
        if [[ -n $BUFFER ]] ; then     # 如果該行有內(nèi)容
            zle expand-or-complete    # 執(zhí)行 TAB 原來的功能
        else                                  # 如果沒有
            BUFFER="cd "                 # 填入 cd(空格)
            zle end-of-line                # 這時光標(biāo)在行首,移動到行末
            zle expand-or-complete    # 執(zhí)行 TAB 原來的功能
        fi }
    zle -N user-complete
    bindkey "\t" user-complete        #將上面的功能綁定到 TAB 鍵
    有時候輸完了一個命令,才想起這個命令需要管理員權(quán)限,這時最快的步驟為: Ctrl+a s u d o (空格)[Ctrl+e] 按兩下 ESC 鍵完成上面的過程:

    sudo-command-line() {
        [[ -z $BUFFER ]] && zle up-history
        [[ $BUFFER != sudo\ * ]] && BUFFER="sudo $BUFFER"
    #光標(biāo)移動到行末
        zle end-of-line
    }
    zle -N sudo-command-line
    #定義快捷鍵為: [Esc] [Esc]
    bindkey "\e\e" sudo-command-line

    以下配置文件供參考 WP會自動把引號轉(zhuǎn)換為成對的,可以復(fù)制這里的配置文件:

    #命令提示符 {{{
    RPROMPT=$(echo '%{33[31m%}%D %T%{33[m%}')
    PROMPT=$(echo '%{33[34m%}%M%{33[32m%}%/
    %{33[36m%}%n%{33[01;33m%} >>> %{33[m%}')
    #}}}

    #關(guān)于歷史紀(jì)錄的配置 {{{
    #歷史紀(jì)錄條目數(shù)量
    export HISTSIZE=10000
    #注銷后保存的歷史紀(jì)錄條目數(shù)量
    export SAVEHIST=10000
    #歷史紀(jì)錄文件
    #export HISTFILE=~/.zhistory
    #以附加的方式寫入歷史紀(jì)錄
    setopt INCAPPENDHISTORY
    #如果連續(xù)輸入的命令相同,歷史紀(jì)錄中只保留一個
    setopt HISTIGNOREDUPS
    #為歷史紀(jì)錄中的命令添加時間戳     
    setopt EXTENDED_HISTORY     

    #啟用 cd 命令的歷史紀(jì)錄,cd -[TAB]進(jìn)入歷史路徑
    setopt AUTOPUSHD
    #相同的歷史路徑只保留一個
    setopt PUSHDIGNORE_DUPS

    #在命令前添加空格,不將此命令添加到紀(jì)錄文件中
    #setopt HISTIGNORESPACE     
    #}}}

    #每個目錄使用獨(dú)立的歷史紀(jì)錄{{{
    cd() {
        builtin cd "$@"                             # do actual cd
        fc -W                                       # write current history  file
        local HISTDIR="$HOME/.zshhistory$PWD"      # use nested folders for history
            if  [ ! -d "$HISTDIR" ] ; then          # create folder if needed
                mkdir -p "$HISTDIR"
            fi
            export HISTFILE="$HISTDIR/zhistory"     # set new history file
        touch $HISTFILE
        local ohistsize=$HISTSIZE
            HISTSIZE=0                              # Discard previous dir's history
            HISTSIZE=$ohistsize                     # Prepare for new dir's history
        fc -R                                       #read from current histfile
    }
    mkdir -p $HOME/.zshhistory$PWD
    export HISTFILE="$HOME/.zsh_history$PWD/zhistory"

    function allhistory { cat $(find $HOME/.zsh_history -name zhistory) }
    function convhistory {
                sort $1 | uniq |
                sed 's/^:([ 0-9]*):[0-9]*;(.*)/\1::::::\2/' |
                awk -F"::::::" '{ $1=strftime("%Y-%m-%d %T",$1) "|"; print }'
    }
    #使用 histall 命令查看全部歷史紀(jì)錄
    function histall { convhistory =(allhistory) |
                sed '/^.{20} *cd/i\' }
    #使用 hist 查看當(dāng)前目錄歷史紀(jì)錄
    function hist { convhistory $HISTFILE }

    #全部歷史紀(jì)錄 top44
    function top44 { allhistory | awk -F':[ 0-9]:[0-9];' '{ $1="" ; print }' | sed 's/ /\n/g' | sed '/^$/d' | sort | uniq -c | sort -nr | head -n 44 }

    #}}}

    #雜項(xiàng) {{{
    #允許在交互模式中使用注釋  例如:
    #cmd #這是注釋
    setopt INTERACTIVE_COMMENTS     

    #啟用自動 cd,輸入目錄名回車進(jìn)入目錄
    #稍微有點(diǎn)混亂,不如 cd 補(bǔ)全實(shí)用
    #setopt AUTO_CD

    #禁用 core dumps
    limit coredumpsize 0

    #Emacs風(fēng)格 鍵綁定
    bindkey -e
    #設(shè)置 [DEL]鍵 為向后刪除
    bindkey "\e[3~" delete-char

    #以下字符視為單詞的一部分
    WORDCHARS='*?_-[]~=&;!#$%^(){}<>'
    #}}}

    #自動補(bǔ)全功能 {{{
    setopt AUTOLIST
    setopt AUTOMENU
    #開啟此選項(xiàng),補(bǔ)全時會直接選中菜單項(xiàng)
    #setopt MENU_COMPLETE

    autoload -U compinit
    compinit

    #自動補(bǔ)全緩存
    #zstyle ':completion::complete:' use-cache on
    #zstyle ':completion::complete:' cache-path .zcache
    #zstyle ':completion::cd:' ignore-parents parent pwd

    #自動補(bǔ)全選項(xiàng)
    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

    #路徑補(bǔ)全
    zstyle ':completion:' expand 'yes'
    zstyle ':completion:' squeeze-shlashes 'yes'
    zstyle ':completion::complete:*' '\'

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

    #彩色補(bǔ)全菜單
    eval $(dircolors -b)
    export ZLSCOLORS="${LSCOLORS}"
    zmodload zsh/complist
    zstyle ':completion:*' list-colors ${(s.:.)LSCOLORS}
    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

    #kill 命令補(bǔ)全     
    compdef pkill=kill
    compdef pkill=killall
    zstyle ':completion:::kill:' menu yes select
    zstyle ':completion:::::processes' force-list always
    zstyle ':completion::processes' command 'ps -au$USER'

    #補(bǔ)全類型提示分組
    zstyle ':completion::matches' group 'yes'
    zstyle ':completion:' group-name ''
    zstyle ':completion::options' description 'yes'
    zstyle ':completion::options' 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'        #'
    #}}}

    ##行編輯高亮模式 {{{
    # Ctrl+@ 設(shè)置標(biāo)記,標(biāo)記和光標(biāo)點(diǎn)之間為 region
    zle_highlight=(region:bg=magenta #選中區(qū)域
                   special:bold      #特殊字符
                   isearch:underline)#搜索時使用的關(guān)鍵字
    #}}}

    ##空行(光標(biāo)在行首)補(bǔ)全 cd {{{
    user-complete(){
        if [[ -n $BUFFER ]] ; then
            zle expand-or-complete
        else
            BUFFER="cd "
            zle end-of-line
            zle expand-or-complete
        fi }
    zle -N user-complete
    bindkey "\t" user-complete
    #}}}

    ##在命令前插入 sudo {{{
    #定義功能
    sudo-command-line() {
        [[ -z $BUFFER ]] && zle up-history
        [[ $BUFFER != sudo\ * ]] && BUFFER="sudo $BUFFER"
    #光標(biāo)移動到行末
        zle end-of-line
    }
    zle -N sudo-command-line
    #定義快捷鍵為: [Esc] [Esc]
    bindkey "\e\e" sudo-command-line
    #}}}

    #命令別名 {{{
    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'

    #[Esc][h] man 當(dāng)前命令時,顯示簡短說明
    alias run-help >&/dev/null && unalias run-help
    autoload run-help

    #歷史命令 top10
    alias top10='print -l  ${(o)history%% *} | uniq -c | sort -nr | head -n 10'
    #}}}

    #路徑別名 {{{
    #進(jìn)入相應(yīng)的路徑時只要 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 的一些設(shè)置 不推薦在 Emacs 中使用它
    if [[ "$TERM" == "dumb" ]]; then
    setopt No_zle
    PROMPT='%n@%M %/
    >>'
    alias ls='ls -F'
    fi
    #}}}

    ####{{{
    function timeconv { date -d @$1 +"%Y-%m-%d %T" }

    zstyle ':completion::ping:' hosts 129.27.2.3 www.tugraz.at \
           10.16.17.1{{7..9},}
    # }}}


     


    本文出自:億恩科技【mszdt.com】

    服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經(jīng)營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經(jīng)營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經(jīng)營性ICP/ISP證:贛B2-20080012
  • 服務(wù)器/云主機(jī) 24小時售后服務(wù)電話:0371-60135900
  • 虛擬主機(jī)/智能建站 24小時售后服務(wù)電話:0371-60135900
  • 專注服務(wù)器托管17年
    掃掃關(guān)注-微信公眾號
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權(quán)所有  地址:鄭州市高新區(qū)翠竹街1號總部企業(yè)基地億恩大廈  法律顧問:河南亞太人律師事務(wù)所郝建鋒、杜慧月律師   京公網(wǎng)安備41019702002023號
      1
     
     
     
     

    0371-60135900
    7*24小時客服服務(wù)熱線