使用shell封装Linux命令实现自定义Linux命令

前言

在日常工作中,尤其是在Linux上做开发的同学或者运维的同学们肯定会遇到过如下场景,比如在Linxu下通过find查找一个文件并且想看这个文件的详细信息,如果直接使用命令可能会一时想不起来,或者想起来了但是有个别参数忘记了。或者一些很频繁的操作,但是需要脚本来完成。于是一个目录下出现了很多脚本,真正用的时候又忘记了哪个脚本是干什么的。导致工作效率低下。

解决方法

我的思路是将一些常用的但是又不好记的命令统一写成一个脚本,然后重新去命名这个命令,比如上面提到的使用find查看一个文件的详细信息。
Linux原生命令:find /home ‘test.xml’ -exec ls -lh {}
使用shell封装后的函数:

find_info() {

  file_name=$1
  current_path=`pwd`
  find $current_path -name $file_name -exec ls -lh {} ;
}

将该函数保存为find_info.sh,之后运行 sh find_info.sh ‘test.xml’ 即可从当前位置发起搜索。

再比如使用awk分割某个字符,如果使用原生命令如下:
例如:分割日志文件中的数据库查询耗时时间,
awk -F “TOTALTIME” ‘{print $2}’
使用shell封装后的函数:

split() {
  str=$1
  split_symbol=$2
  num=$3
  echo `echo $str | awk -v a=${num} -F $split_symbol '{print $a}'`
}

将函数保存为split.sh, 运行sh split.sh ‘log文件中的一段话’ ‘TOTALTIME’ 2 这样就可以达到和上面一样的效果。

当然了,这样保存为一个一个的脚本使用起来其实并没有简化操作,那么如果将多个函数封装到一个shell脚本之后,那么使用起来会不会方便一些呢,我们来尝试一下。

创建jef.sh 然后修改权限为777,也就是最大的可读可写可执行权限。

#!/usr/bin/env bash

#########################################
# Describe: 封装常用函数
# Version: v1.0
# Author: cz
#########################################

# 分割
split() {
  str=$1
  split_symbol=$2
  num=$3
  echo `echo $str | awk -v a=${num} -F $split_symbol '{print $a}'`
}

# 查找
find_info() {

  file_name=$1
  current_path=`pwd`
  find $current_path -name $file_name -exec ls -lh {} ;
}

command_array=("split" "findinfo")
if [ $# -lt 1 ]; then
    echo "请明确指令:"
    length=${#command_array[@]}
    for ((i=0;i<$length; i++));
        do
        echo ${command_array[$i]}
        done
    exit
else

  if [[ $1 == "split" || $1 == "-split" ||$1 == "SPLIT" ]]
   then
     split $2 $3 $4
   elif [[ $1 == 'findinfo' || $1 == '-findinfo' || $1 == "FINDINFO" ]]
     then
       find_info $2
  elif [[ $1 == "help" || $1 == "-help" || $1 == "HELP" ]]
   then
     echo "split: 将指定内容按照指定分隔符分割并且获取指定下标的内容 第一个参数为内容,第二个为分隔符 for example: jef split 'q|w|e|r|t' '|' 2"
     echo "findinfo: find并展示详细信息 jef findinfo 'test.txt'"
  fi
fi

这样一个常用命令函数就封装好了,在使用的时候只需要sh jef.sh findinfo 'test.xml’或者sh jef.sh splic xxx ‘xx’ 1即可。代码中还做了一些装饰。用于一些友善的提示

但是这样虽然相对好用一些了,但是看着还是怪怪的,不太高大上。
那么咱们继续封装

将jef.sh 配置到环境变量中,增加一个快捷方式如下:
vi .cshrc
alias jef ‘sh /home/acctuser/cz/test/jef’

这样在使用的时候就和普通的Linux命令一样了.如下:
在不添加任何其他指令时,会友善的提示:

使用shell封装Linux命令实现自定义Linux命令_第1张图片

在不知道怎么使用时,执行jef -help 或者jef help:

使用shell封装Linux命令实现自定义Linux命令_第2张图片

执行具体的命令时

image.png

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第15天,点击查看活动详情

你可能感兴趣的:(linux,运维,服务器)