提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
一、shell命令
1. 查看系统信息
uname -a #系统版本
cat/proc/cpuinfo #CPU
cat /proc/interrupts #中断
cat/proc/meminfo #RAM
2. tar
tar 对文件或文件夹进行打包和解包
tar [选项] 文件名或路径
- -c 创建包
- -x 解包
- -f 文件名 操作的文件名
- -v 显示操作的文件细节
- -z 用gzip/gunzip对包进行压缩和解压缩
如:tar -c -v -f text.tar text 表示将text文件夹 创建一个text.tar的包,并显示详细信息(也可以 tar -cvf …)
tar -x -f text.tar 解压text.tar包
tar -czvf text.tar.gz text 打包和压缩一起工作
tar -xzvf text.tar.gz 解压缩一个.tar.gz 的tar包
3. lspci
lspci命令是用于列出所有已安装的PCI设备的命令,可以用于获取硬件信息和调试。
常用的参数如下:
- -v:显示详细信息,包括驱动程序、总线和端口等信息
- -t:生成树形结构显示
- -k:显示设备所使用的内核模块
- -s [总线号]:[设备号].[功能号]:仅显示指定的设备信息
- -D:仅显示PCI设备
- -d [Vendor:Device ID]:仅显示指定的厂商和设备信息
- -mm:显示机器可读格式
- -M:显示设备的DMA通道
- -vvv:显示更详细的信息,包括IRQ和IO端口
- -n:显示数字标识符(Vendor:Device ID)
- -nn:显示数字化的设备ID和供应商ID,以及详细的设备信息。
4. declare
declare: declare [-aAfFgilnrtux] [-p] [名称[=值] …]
设定变量值和属性。
声明变量并且赋予它们属性。如果没有给定名称,
则显示所有变量的属性和值。
选项:
-f 限制动作或显示为仅函数名称和定义
-F 限制仅显示函数名称 (以及调试时显示行号和源文件名)
-g 当用于 shell 函数内时创建全局变量; 否则忽略
-p 显示每个 NAME 变量的属性和值
设定属性的选项:
-a 使 NAME 成为下标数组 (如果支持)
-A 使 NAME 成为关联数组 (如果支持)
-i 使 NAME 带有 `integer' (整数)属性
-l 将 NAME 在赋值时转为小写
-n 使 NAME 成为指向一个以其值为名称的变量的引用
-r 将 NAME 变为只读
-t 使 NAME 带有 `trace' (追踪)属性
-u 将每个 NAME 在赋值时转为大写
-x 将 NAME 导出
用 `+' 代替 `-' 会关闭指定选项。
带有整数属性的变量在赋值时将使用算术估值(见
`let' 命令)
在函数中使用时,`declare' 使 NAME 成为本地变量,和 `local'
命令一致。`-g' 选项抑制此行为。
退出状态:
返回成功,除非提供了无效选项或者发生变量赋值错误。
二、Shell参数传参
1. 基础
1.1根据传参顺序获取参数
新建一个test.sh文件,代码如下:
#!/bin/bash
echo "shell 名称 = $0"
echo "参数1 = $1"
echo "参数2 = $2"
echo "参数3 = $3"
echo "参数4 = $4"
echo "参数5 = $5"
执行脚本:sh test.sh 9 8 7 6 5
输出结果:
shell 名称 = shell_test.sh
参数1 = 9
参数2 = 8
参数3 = 7
参数4 = 6
参数5 = 5
使用该方式有两点需要注意的地方:
- "$0"表示的是脚本本身
- 必须按照指定的顺序输入参数,中间不能漏参数,否则参数将会产生错乱
1.2 $#获取传参个数
Shell 中,$#表示传入参数的个数
if [[ $# -gt 1 ]] //判断如果输入参数的个数是否大于1
then
// 执行的命令
else
// 执行的命令
fi
2. getopts 获取参数
如果需要实现类似 rm -r -f 指定参数值的方式,则推荐使用此种方式。
使用该方式需要使用到Shell内置的函数"getopts"。
在使用之前你需要知道一下几个内置参数的意义:
- optstring option :字符串,当中为参数选项,会逐个匹配。
- varname :每次匹配成功的选项
- arg :参数值
- $OPTIND :option index,会逐个递增,初始值为1
- $OPTARG :option argument,不同情况下会有不同的值
如 getopt_test.sh:
#!/bin/bash
while getopts ":a:b:c:s:" opt
do
case $opt in
a)
echo "$OPTARG"
;;
b)
echo "$OPTARG"
;;
c)
echo "$OPTARG"
;;
s)
echo "$OPTARG"
;;
*)
echo "未知参数$opt"
echo "参数值$OPTARG"
;;
?)
echo "未知参数$opt"
echo "参数值$OPTARG"
;;
esac
done
执行:sh getopt_test.sh -a 123 -b 文字 -s string -c -12 -d aa
输出:
123
文字
string
-12
未知参数?
参数值d
三、 Shell比较判断
1. 比较
-eq //等于
-ne //不等于
-gt //大于
-lt //小于
-ge //大于等于
-le //小于等于
2. 判断
下表列出了常用的字符串运算符,假定变量 a 为 “abc”,变量 b 为 “efg”:
运算符 | 说明 | 举例 |
---|---|---|
= 或 == | 检测两个字符串是否相等,相等返回 true | [ $a = $b ] 返回 false |
!= | 检测两个字符串是否不相等,不相等返回 true | [ $a != $b ] 返回 true |
-z | 检测字符串长度是否为0,为0返回 true | [ -z $a ] 返回 false |
-n | 检测字符串长度是否不为 0,不为 0 返回 true | [ -n “$a” ] 返回 true |
$ | 检测字符串是否不为空,不为空返回 true | [ $a ] 返回 true |
- 1 参数-n
if[-n str] 当str非空时,为true
#!/bin/bash
if [ -n $1 ];then
echo "with args : $1"
else
echo "without args"
fi