習慣使用編輯的快捷鍵能夠大大提升效率,記憶學習過程要有意識的忽略功能鍵、方向鍵和數字小鍵盤。如下快捷鍵適用在bash處於默認的Emacs模式下。若是你有set -o vi
,就處於 vi 模式就不適用了。
另外下面的內容並不包含全部快捷鍵,只是我我的適用頻率最高的幾種,但相信已經能夠大大提升工做效率了:html
Ctrl + l
:清除屏幕,同clearCtrl + 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
:從歷史搜索模式退出,同ESCCtrl + p
:歷史中的上一條命令,同↑Ctrl + n
:歷史中的下一條命令,同↓Alt + .
:同!$,輸出上一個命令的最後一個參數(選項or單詞)。!:n
,表示上一命令的第n個參數,如你剛備份一個配置文件,立刻編輯它:cp nginx.conf nginx.conf
,vi !: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
參考:高效操做Bash ,Bash (Unix shell) Keyboard shortcuts 。bash
如下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
歡迎補充評論補充~