高效Linux bash快捷鍵及alias總結

bash快捷鍵

習慣使用編輯的快捷鍵能夠大大提升效率,記憶學習過程要有意識的忽略功能鍵、方向鍵和數字小鍵盤。如下快捷鍵適用在bash處於默認的Emacs模式下。若是你有set -o vi,就處於 vi 模式就不適用了。
另外下面的內容並不包含全部快捷鍵,只是我我的適用頻率最高的幾種,但相信已經能夠大大提升工做效率了:html

  • Ctrl + l :清除屏幕,同clear
  • Ctrl + a :將光標定位到命令的開頭
  • Ctrl + e :與上一個快捷鍵相反,將光標定位到命令的結尾
  • Ctrl + u :剪切光標以前的內容,在輸錯命令或密碼
  • Ctrl + k :與上一個快捷鍵相反,剪切光標以後的內容
  • Ctrl + y :粘貼以上兩個快捷鍵所剪切的內容。Alt+y粘貼更早的內容
  • Ctrl + w :刪除光標左邊的參數(選項)或內容(實際是以空格爲單位向前剪切一個word)
  • Ctrl + / :撤銷,同Ctrl+x ulinux

  • Ctrl + f :按字符前移(右向),同→nginx

  • Ctrl + b :按字符後移(左向),同←
  • Alt + f :按單詞前移,標點等特殊字符與空格同樣分隔單詞(右向),同Ctrl+→
  • Alt + b :按單詞後移(左向),同Ctrl+←
  • Alt + d :從光標處刪除至字尾。能夠Ctrl+y粘貼回來
  • Alt + \ :刪除當前光標前面全部的空白字符
  • Ctrl + d :刪除光標處的字符,同Del鍵。沒有命令是表示註銷用戶
  • Ctrl + h :刪除光標前的字符shell

  • Ctrl + r :逆向搜索命令歷史,比history好用vim

  • Ctrl + g :從歷史搜索模式退出,同ESC
  • Ctrl + p :歷史中的上一條命令,同↑
  • Ctrl + n :歷史中的下一條命令,同↓
  • Alt + .:同!$,輸出上一個命令的最後一個參數(選項or單詞)。
    還有如Alt+0 Alt+. Alt+.,表示輸出上上一條命令的的第一個單詞(即命令)。
    另外有一種寫法 !:n,表示上一命令的第n個參數,如你剛備份一個配置文件,立刻編輯它:cp nginx.conf nginx.confvi !:1,同vi !^!^表示命令的第一個參數,!$最後一個參數(通常是使用Alt + .代替)。

這裏提一下按字符或字符串,向左向後搜索字符串的命令:centos

  • Ctrl + ] c :從當前光標處向定位到字符 c 處
  • Esc Ctrl + ] c :從當前光標向定位到字符 c 處。( bind -P 能夠看到綁定信息)
  • Ctrl + r str :能夠搜索歷史,也能夠當前光標處向定位到字符串 str,Esc後可定位繼續編輯
  • Ctrl -s str :從當前光標處向定位到字符串 str 處,Esc 退出。注意,Ctrl + S默認被用戶控制 XON/XOFF ,須要在終端裏執行stty -ixon或加入profile。

注意上述全部涉及Alt鍵的實際是Meta鍵,在xshell中默認是沒有勾選「Use Alt key as Meta key」,要充分體驗這些鍵帶來的快捷,請在對應的terminal設置。tomcat

參考高效操做BashBash (Unix shell) Keyboard shortcutsbash

經常使用alias

如下bash中別名設置我還並無徹底使用,也是我的以爲很是有用的(多了記起來也麻煩),因此收集在一塊兒,習慣就好。
/etc/profile.d/alias.sh服務器

alias wl='ll | wc -l'
alias l='ls -l'
alias lh='ls -lh'
alias grep='grep -i --color' #用顏色標識,更醒目;忽略大小寫
alias vi=vim
alias c='clear'  # 快速清屏
alias p='pwd'

# 進入目錄並列出文件
cdl() { cd "$@" && pwd ; ls -al; }

alias ..="cdl .."
alias ...="cd ../.."   # 快速進入上上層目錄
alias .3="cd ../../.." 
alias cd..='cdl ..'

# alias cp="cp -iv"      # interactive, verbose
alias rm="rm -i"      # interactive
# alias mv="mv -iv"       # interactive, verbose

alias psg='ps aux | grep -v grep | grep -i --color' # 查看進程信息

alias hg='history|grep'

alias netp='netstat -tulanp'  # 查看服務器端口鏈接信息

alias lvim="vim -c \"normal '0\""  # 編輯vim最近打開的文件

alias tf='tail -f '  # 快速查看文件末尾輸出

# 自動在文件末尾加上 .bak-日期 來備份文件,如 bu nginx.conf
bak() { cp "$@" "$@.bak"-`date +%y%m%d`; echo "`date +%Y-%m-%d` backed up $PWD/$@"; }

# 級聯建立目錄並進入,如 mcd a/b/c
mcd() { mkdir -p $1 && cd $1 && pwd ; }

# 查看去掉#註釋和空行的配置文件,如 nocomm /etc/squid/squid.conf
alias nocomm='grep -Ev '\''^(#|$)'\'''

# 快速根據進程號pid殺死進程,如 psid tomcat, 而後 kill9 兩個tab鍵提示要kill的進程號
alias kill9='kill -9';
psid() {
  [[ ! -n ${1} ]] && return;   # bail if no argument
  pro="[${1:0:1}]${1:1}";      # process-name –> [p]rocess-name (makes grep better)
  ps axo pid,user,command | grep -v grep |grep -i --color ${pro};   # show matching processes
  pids="$(ps axo pid,user,command | grep -v grep | grep -i ${pro} | awk '{print $1}')";   # get pids
  complete -W "${pids}" kill9     # make a completion list for kk
}

# 解壓全部歸檔文件工具
function extract {
 if [ -z "$1" ]; then
    # display usage if no parameters given
    echo "Usage: extract <path/file_name>.<zip|rar|bz2|gz|tar|tbz2|tgz|Z|7z|xz|ex|tar.bz2|tar.gz|tar.xz>"
 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
}

# 其它你本身的命令
alias nginxreload='sudo /usr/local/nginx/sbin/nginx -s reload'

要去掉別名,請用unalias aliasname,或者臨時執行不用別名,執行原始命令\alias工具

參考30 Handy Bash Shell Aliases For Linux

歡迎補充評論補充~


原文連接地址:http://seanlook.com/2014/03/09/linux-bash/

相關文章
相關標籤/搜索