Linux下实现自定义系统命令工具小技巧

简介: shell脚本自定义系统命令行工具,实现批量解压缩不同类型压缩包功能。

引言


最近几日在Linux系统部署服务过程中,常常会用到tar(压缩/解压缩)命令,如果就个别两个xx.tar.gz文件,还能通过tar -xvf xx.tar.gz命令快速实现解压缩操作,但如果几十、几百个tar包的话,使用此命令一一解压未免过于繁琐。因此,可以通过for循环来实现批量解压缩:

for tar in *.tar.gz;do tar -xvf$tar;done

但随之而来的问题是,如果有多个目录下都有大量的压缩包需要解压,那每解压一个目录下的文件都要敲一遍此命令?能否自定义一个命令行工具,像系统命令ls/mv/cp/tar/ps···那样,在任意目录下都能执行,并实现批量解压缩的操作?答案肯定是可以的。实现思路:

  • 在存放可执行程序的目录下创建一个可执行脚本文件
  • 将上述批量解压缩命令写在可执行文件中
  • 赋予该文件执行权限、重新加载配置

实现过程

1.创建shell脚本

1)Linux下存放脚本目录及作用

目录

作用

/usr/bin

当前用户的程序,为系统预装的可执行程序,会随着系统升级而改变。

/usr/local/bin

用户放置自己的可执行程序的地方,不会被系统升级而覆盖同名文件。

2)创建脚本

cd /usr/local/bin 
touch tarall

取名tarall(名字任意,取名helloworld也可以),内容如下:

#!/bin/bash# author by jigang.chen for tar in *.tar.gz;do tar -xvf$tar;done

2.赋予文件执行权限

chmod+x /usr/local/bin/tarall # 赋予tarall执行权限 source /etc/profile # 重新加载配置文件(必须,否则系统无法找到这个命令)

3.测试脚本

例如:解压缩/home/test目录下的所有以tar.gz结尾的文件,其中ab.tar.gz文件包含a.txt、b.txt两个文件,cd.tar.gz包含c.txt、d.txt两个文件

通过截图可以看出,已经解压缩成功

4.优化脚本

上述tarall脚本仅仅实现了“解压缩当前目录下所有以tar.gz结尾的文件”的功能,还无法解压缩.tar格式的压缩文件,也没有异常处理,因此,可以对脚本进行优化,取名targz,内容如下:

#!/bin/bash# author by jigang.chengz_file=$(ls *.tar.gz 2>/dev/null | wc -l)tar_file=$(ls *.tar 2>/dev/null | wc -l)if [ "$gz_file" !="0" ]
thenfor tar in *.tar.gz;do tar -xvf$tar;done
elseecho"no such *.tar.gz file"fiif [ "$tar_file" !="0" ]
thenfor tar in *.tar;do tar -xvf$tar;done
elseecho"no such *.tar file"fi

5.测试优化后的脚本

1)不存在tar或tar.gz文件时

如:在test2目录下执行解压缩操作(test2目录下无压缩文件,只有一个txt文件)

2)同时存在tar或tar.gz文件时

例如:解压缩/home/test目录下的所有以tar.gz和.tar结尾的文件,其中ab.tar.gz文件包含a.txt、b.txt两个文件,cd.tar.gz包含c.txt、d.txt两个文件,ef.tar包含e.txt、f.txt两个文件

通过上图可以看出,tar.gz和.tar结尾的文件均已成功解压

3)仅存在tar或tar.gz文件时

解压缩成功,提示语与脚本中定义的一致

总结


以上就是利用shell脚本实现自定义系统命令行工具的实践过程,整体比较简单,主要记录和分享实现思路。同样地,这种方法也可以复制在实现其他自定义命令工具上。当然,上述脚本还存在很多可以优化的地方,如:

  • 如何解压指定目录下的文件
  • 如何解压指定格式的压缩文件




相关文章
|
3天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
18 3
|
3天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
16 2
|
3天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
18 3
|
6天前
|
安全 Linux 数据安全/隐私保护
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。本文介绍了使用 `ls -l` 和 `stat` 命令查找文件所有者的基本方法,以及通过文件路径、通配符和结合其他命令的高级技巧。还提供了实际案例分析和注意事项,帮助读者更好地掌握这一操作。
23 6
|
6天前
|
Linux
在 Linux 系统中,`find` 命令是一个强大的文件查找工具
在 Linux 系统中,`find` 命令是一个强大的文件查找工具。本文详细介绍了 `find` 命令的基本语法、常用选项和具体应用示例,帮助用户快速掌握如何根据文件名、类型、大小、修改时间等条件查找文件,并展示了如何结合逻辑运算符、正则表达式和排除特定目录等高级用法。
31 6
|
Linux Perl Ubuntu
Linux小技巧总结
1、fdisk创建磁盘分区不重启系统partprobe 使用fdisk工具只是将分区信息写到磁盘,如果需要mkfs磁盘分区则需要重启系统才能够读取到/dev/sda*,而使用partprobe则可以使kernel重新读取分区信息,避免重启系统。
865 0
|
11天前
|
缓存 监控 Linux
|
14天前
|
Linux Shell 数据安全/隐私保护
|
15天前
|
域名解析 网络协议 安全
|
21天前
|
运维 监控 网络协议