Shell

本文详细介绍了如何使用shell命令查看系统信息(如uname,cat/proc系列),tar命令的打包与解压,以及lspci命令展示硬件设备。此外,还涵盖了shell脚本中的参数获取、比较判断方法,特别是getopts函数的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

一、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"。
在使用之前你需要知道一下几个内置参数的意义:

  1. optstring option :字符串,当中为参数选项,会逐个匹配。
  2. varname :每次匹配成功的选项
  3. arg :参数值
  4. $OPTIND :option index,会逐个递增,初始值为1
  5. $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. 1 参数-n
    if[-n str] 当str非空时,为true
#!/bin/bash

if [ -n $1 ];then
   echo "with args : $1"
else
   echo "without args"
fi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值