定制化自己的shell命令

    技术2022-07-11  75

    前言,纯粹的linux下的全屏vim,shell的编辑中,难免要在编辑器外做shell的一些command命令。比如,解压一个文件。可是解压一个文件往往要看文件的类型是什么,tar的时候要查询各种参数,简直是一种受不了的事情。本文方法就是尝试用shell的定制化命令来简化参数和命令本身。比如grep 简化成ga,比如find简化成fd.当然,如果遇到了一组经常用到的shell命令,如果是需要一大组输入命令option的参数选择的命令,那么,我们能不能定义一个命令组合的代名词,代替一组命令输入,代替一组参数输入,代替这些参数的选择。本文就是解答这些问题的。

     

    1 alias 命令

     

    2 alias 的设定

    2.1 在哪里编辑 

    2.1.1  .bashrc

    2.2.2 设立一个独立的文件

     

    2.2 如何立即运用到系统里面

     2.2.1 source .bashrc 

     

    3 常用的 alias 命令写法

    [plain] view plain copy

     print?

    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'  

     

    4 相关的shell截取命令和举例:

    shell的截取命令是被高级shell编程经常用到的一个功能,命令的组合和自动执行定位文件文本的位置往往需要这个截取的命令来实现。

    [plain] view plain copy

     print?

    假设有变量 var=http://www.google.com/test.htm  一 # 号截取,删除左边字符,保留右边字符。  echo ${var#*//}  其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符  即删除 http://  结果是 :www.google.com/test.htm  二 ## 号截取,删除左边字符,保留右边字符。  echo ${var##*/}  ##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符  即删除 http://www.google.com/           结果是 test.htm  三 %号截取,删除右边字符,保留左边字符  echo ${var%/*}  %/* 表示从右边开始,删除第一个 / 号及右边的字符  结果是:http://www.google.com  四 %% 号截取,删除右边字符,保留左边字符  echo ${var%%/*}  %%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符  结果是:http:  五 从左边第几个字符开始,及字符的个数  echo ${var:0:5}  其中的 0 表示左边第一个字符开始,5 表示字符的总个数。  结果是:http:  六 从左边第几个字符开始,一直到结束。  echo ${var:7}  其中的 7 表示左边第8个字符开始,一直到结束。  结果是 :www.google.com/test.htm  七 从右边第几个字符开始,及字符的个数  echo ${var:0-7:3}  其中的 0-7 表示右边算起第七个字符开始,3 表示字符的个数。  结果是:test  八 从右边第几个字符开始,一直到结束。  echo ${var:0-7}  表示从右边第七个字符开始,一直到结束。  结果是:test.htm  注:(左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示)  
    Processed: 0.011, SQL: 9