alias提高工作效率 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
}


    #Productivity
    alias ls="ls --color=auto"
    alias ll="ls --color -al"
    alias grep='grep --color=auto'
    mcd() { mkdir -p "$1"; cd "$1";}
    cls() { cd "$1"; ls;}
    backup() { cp "$1"{,.bak};}
    md5check() { md5sum "$1" | grep "$2";}
    alias makescript="fc -rnl | head -1 >"
    alias genpasswd="strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 30 | tr -d '\n'; echo"
    alias c="clear"
    alias histg="history | grep"
    alias ..='cd ..'
    alias ...='cd ../..'
    extract() {
        if [ -f $1 ] ; then
          case $1 in
            *.tar.bz2)   tar xjf $1     ;;
            *.tar.gz)    tar xzf $1     ;;
            *.bz2)       bunzip2 $1     ;;
            *.rar)       unrar e $1     ;;
            *.gz)        gunzip $1      ;;
            *.tar)       tar xf $1      ;;
            *.tbz2)      tar xjf $1     ;;
            *.tgz)       tar xzf $1     ;;
            *.zip)       unzip $1       ;;
            *.Z)         uncompress $1  ;;
            *.7z)        7z x $1        ;;
            *)     echo "'$1' cannot be extracted via extract()" ;;
             esac
         else
             echo "'$1' is not a valid file"
         fi
    }

    #System info
    alias cmount="mount | column -t"
    alias tree="ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/   /' -e 's/-/|/'"
    sbs(){ du -b --max-depth 1 | sort -nr | perl -pe 's{([0-9]+)}{sprintf "%.1f%s", $1>=2**30? ($1/2**30, "G"): $1>=2**20? ($1/2**20, "M"): $1>=2**10? ($1/2**10, "K"): ($1, "")}e';}
    alias intercept="sudo strace -ff -e trace=write -e write=1,2 -p"
    alias meminfo='free -m -l -t'
    alias ps?="ps aux | grep"
    alias volume="amixer get Master | sed '1,4 d' | cut -d [ -f 2 | cut -d ] -f 1"

    #Network
    alias websiteget="wget --random-wait -r -p -e robots=off -U mozilla"
    alias listen="lsof -P -i -n"
    alias port='netstat -tulanp'
    gmail() { curl -u "$1" --silent "https://mail.google.com/mail/feed/atom" | sed -e 's/<\/fullcount.*/\n/' | sed -e 's/.*fullcount>//'}
    alias ipinfo="curl ifconfig.me && curl ifconfig.me/host"
    getlocation() { lynx -dump http://www.ip-adress.com/ip_tracer/?QRY=$1|grep address|egrep 'city|state|country'|awk '{print $3,$4,$5,$6,$7,$8}'|sed 's\ip address flag \\'|sed 's\My\\';}

    #Funny
    kernelgraph() { lsmod | perl -e 'print "digraph \"lsmod\" {";<>;while(<>){@_=split/\s+/; print "\"$_[0]\" -> \"$_\"\n" for split/,/,$_[3]}print "}"' | dot -Tpng | display -;}
    alias busy="cat /dev/urandom | hexdump -C | grep \"ca fe\""
    #搜索gradle文件
    function ggrep()
    {
        find . -name .repo -prune -o -name .git -prune -o -name out -prune -o -type f -name "*\.gradle" -print0 | xargs -0 grep --color -n "$@"
    }
    #搜索Java文件
    function jgrep()
    {
        find . -name .repo -prune -o -name .git -prune -o -name out -prune -o -type f -name "*\.java" -print0 | xargs -0 grep --color -n "$@"
    }
    #搜索c++文件
    function cgrep()
    {
        find . -name .repo -prune -o -name .git -prune -o -name out -prune -o -type f \( -name '*.c' -o -name '*.cc' -o -name '*.cpp' -o -name '*.h' \) -print0 | xargs -0 grep --color -n "$@"
    }
    #搜索资源文件
    function resgrep()
    {
        for dir in `find . -name .repo -prune -o -name .git -prune -o -name out -prune -o -name res -type d`; do find $dir -type f -name '*\.xml' -print0 | xargs -0 grep --color -n "$@"; done;
    }
    #搜索清单文件
    function mangrep()
    {
        find . -name .repo -prune -o -name .git -prune -o -path ./out -prune -o -type f -name 'AndroidManifest.xml' -print0 | xargs -0 grep --color -n "$@"
    }
    #搜索sepolicy
    function sepgrep()
    {
        find . -name .repo -prune -o -name .git -prune -o -path ./out -prune -o -name sepolicy -type d -print0 | xargs -0 grep --color -n -r --exclude-dir=\.git "$@"
    }
    #搜索make文件
    function mgrep()
    {
        find . -name .repo -prune -o -name .git -prune -o -path ./out -prune -o -regextype posix-egrep -iregex '(.*\/Makefile|.*\/Makefile\..*|.*\.make|.*\.mak|.*\.mk)' -type f -print0 | xargs -0 grep --color -n "$@"
    }
    #搜索(c|h|cpp|S|java|xml)文件
    function treegrep()
    {
        find . -name .repo -prune -o -name .git -prune -o -regextype posix-egrep -iregex '.*\.(c|h|cpp|S|java|xml)' -type f -print0 | xargs -0 grep --color -n -i "$@"
    }


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

bash快捷键

习惯使用编辑的快捷键可以大大提高效率,记忆学习过程要有意识的忽略功能键、方向键和数字小键盘。以下快捷键适用在bash处于默认的Emacs模式下,是由一个名为Readline的库实现的,用户可以通过命令bind添加新快捷键,或者修改系统中已经存在的快捷键。(如果你有set -o vi,就处于 vi 模式就不适用了)

另外下面的内容并不包含所有快捷键,只是我个人适用频率最高的几种,但相信已经可以大大提高工作效率了。以下所有 Alt 键可以以 Esc 键代替。

Ctrl + l :清除屏幕,同clear
Ctrl + a :将光标定位到命令的开头
Ctrl + e :与上一个快捷键相反,将光标定位到命令的结尾
Ctrl + u :剪切光标之前的内容,在输错命令或密码
Ctrl + k :与上一个快捷键相反,剪切光标之后的内容
Ctrl + y :粘贴以上两个快捷键所剪切的内容。Alt+y粘贴更早的内容
Ctrl + w :删除光标左边的参数(选项)或内容(实际是以空格为单位向前剪切一个word)

Ctrl + / :撤销,同Ctrl+x + Ctrl+u

Ctrl + f :按字符前移(右向),同→
Ctrl + b :按字符后移(左向),同←
Alt + f :按单词前移,标点等特殊字符与空格一样分隔单词(右向),同Ctrl+→
Alt + b :按单词后移(左向),同Ctrl+←
Alt + d :从光标处删除至字尾。可以Ctrl+y粘贴回来
Alt + \ :删除当前光标前面所有的空白字符
Ctrl + d :删除光标处的字符,同Del键。没有命令是表示注销用户

Ctrl + h :删除光标前的字符

Ctrl + r :逆向搜索命令历史,比history好用
Ctrl + g :从历史搜索模式退出,同ESC
Ctrl + p :历史中的上一条命令,同↑
Ctrl + n :历史中的下一条命令,同↓
Alt + .:同!$,输出上一个命令的最后一个参数(选项or单词)。
还有如Alt+0 Alt+. Alt+.,表示输出上上一条命令的的第一个单词(即命令)。
另外有一种写法 !:n,表示上一命令的第n个参数,如你刚备份一个配置文件,马上编辑它:cp nginx.conf nginx.conf,vi !:1,同vi !^。!^表示命令的第一个参数,!$最后一个参数(一般是使用Alt + .代替)。

这里提一下按字符或字符串,向左向后搜索字符串的命令:

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设置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值