第五次作业

扩展练习果汁售卖:

(1)显示饮品菜单以及对应价格

(2)用户选择自己喜欢的饮品,根据用户选择可以计算出对应价格。

第一步:创建shell(xx.sh)文件

在里面输入

:wq保存退出

结果: 

 第二题:显示/proc/meminfo文 件中以不区分大小的s开头的行:


 可以使用 grep 命令来显示 /proc/meminfo 文件中以不区分大小写的 s 开头的行。可以使用 -i 参数来忽略大小写

使用awk命令的这个命令在开始之前设置了IGNORECASE=1,表示忽略大小写。然后使用正则表达式/^s/来匹配以s开头的行,并使用print命令打印出来。

 

使用sed命令

这个命令使用-n参数来禁止默认输出,然后使用正则表达式/^s/I来匹配以s开头的行(I表示忽略大小写),最后使用p命令将匹配的行输出。

 

无论使用哪种方式,都可以筛选出/proc/meminfo文件中以不区分大小写的s开头的行。选择适合你需求的方式即可。

 

第三题:取出默认shell为/sbin/nologin的用户列表

要从Linux系统中提取默认 shell 为 /sbin/nologin 的用户列表,你可以使用 awk 命令组合 /etc/passwd 文件进行处理。以下是一个示例命令:

awk -F: '$7 == "/sbin/nologin" { print $1 }' /etc/passwd

 

这个命令使用 awk 工具,指定字段分隔符为 :(由 -F: 参数指定)。然后,它检查每一行的第七个字段(默认 shell)是否为 /sbin/nologin,如果是的话,就打印出该用户的用户名(第一个字段)。

运行以上命令后,将会显示出默认 shell 为 /sbin/nologin 的用户列表。请注意,这个列表包括了除 root 用户之外的所有用户。

如果你想查看该用户的其他信息,可以自行调整 print 语句或者修改其他的字段提取方式。

第四题:取出默认shell为bash,且其用户ID号最小的用户的用户名

要取出默认shell为bash且其用户ID号最小的用户的用户名,你可以使用`awk`命令组合`/etc/passwd`文件进行处理,并结合一些条件判断和变量赋值。以下是一个示例命令:

awk -F: '$7 == "/bin/bash" && ($3 < min || min == 0) { min = $3; user = $1 } END { print user }' /etc/passwd

这个命令首先指定了`awk`的字段分隔符为`:`(通过`-F:`参数指定)。然后它会检查每一行的第七个字段(默认shell)是否为`/bin/bash`,并且检查该用户的用户ID号(第三个字段)是否小于已知的最小值`min`,或者`min`的初始值为0的情况。如果满足这两个条件,就更新`min`的值为当前的用户ID号,并同时将该用户的用户名保存在`user`变量中。

当处理完所有行之后,在`END`部分,打印出记录的用户名`user`,即默认shell为bash且用户ID号最小的用户的用户名。

第五题:显示/etc/inittab中 以#开头,且后面跟-一个或多个空白字符,而后又跟了任意非空白字符的行

要显示`/etc/inittab`文件中以`#`开头,后面跟一个或多个空白字符,然后又跟了任意非空白字符的行,你可以使用`grep`命令和正则表达式。以下是示例命令:

grep "^#\s+-\S" /etc/inittab


 

这个命令使用`grep`工具,结合正则表达式`^#\s+-\S`来匹配满足条件的行。具体的正则表达式解释如下:

- `^#`:匹配以`#`开头的行。
- `\s+`:匹配一个或多个空白字符。
- `-`:匹配一个连接符(减号)。
- `\S`:匹配任意非空白字符。

这个命令将在`/etc/inittab`文件中搜索满足上述条件的行,并将它们打印出来。

请注意,`/etc/inittab`文件在一些Linux系统中已经被废弃,因此在某些发行版中可能不存在这个文件。你可以根据实际情况替换为其他适当的文件路径。

第六题:

显示/etc/inittab中包含 了:一个数值 (即两个冒号中间一个数字的行

/etc/passwd   多个冒号之间的数值匹配显示

若要显示 /etc/inittab 文件中包含了一个数值的行(即两个冒号之间有一个数字),可以使用 grep 命令和正则表达式来实现。以下是一个示例命令:

grep ':[0-9]:' /etc/inittab

这个命令使用 grep 工具,并使用正则表达式 :[0-9]: 来匹配满足条件的行。该正则表达式的含义如下:

  • ::匹配冒号。
  • [0-9]:匹配一个数字。
  • ::匹配冒号。

这样,命令将匹配包含了一个数字的行,并将它们打印出来。

请注意,/etc/inittab 文件在某些Linux发行版中已被废弃或被替代,因此在某些系统中可能不存在。你可以根据实际情况替换为其他适当的文件路径。

同样地,要显示 /etc/passwd 文件中多个冒号之间的数值匹配,可以使用类似的命令。以下是一个示例命令:

awk -F: '$3 ~ /^[0-9]+$/' /etc/passwd

这个命令使用 awk 工具,设置字段分隔符为冒号(通过 -F: 参数)。然后,它检查每一行的第三个字段(用户ID)是否只包含数字(由正则表达式 /^[0-9]+$/ 匹配)。如果匹配成功,则打印出该行。

运行以上命令后,将会显示 /etc/passwd 文件中多个冒号之间的数值匹配的行。

如图所示

 第七题:显示/boot/grub2/grub.cfg文件中以一个或多个空白字符开头的行:

要显示 /boot/grub2/grub.cfg 文件中以一个或多个空白字符开头的行,可以使用 grep 命令和正则表达式来完成。以下是一个示例命令:

grep '^[[:space:]]' /boot/grub2/grub.cfg

这个命令使用 grep 工具,并使用正则表达式 ^[[:space:]] 来匹配满足条件的行。该正则表达式的含义如下:

  • ^:匹配行的起始位置。
  • [[:space:]]:匹配一个或多个空白字符。

这样,命令将匹配以一个或多个空白字符开头的行,并将它们打印出来。

请注意,这个命令假设 /boot/grub2/grub.cfg 文件存在,并且你有足够的权限来访问该文件。

 

 

 

 

 第八题:显示/etc/inittab文件中以一个数字开头并以一个与开头数字相同的数字结尾的行;

要显示 /etc/inittab 文件中以一个数字开头,并以与开头数字相同的数字结尾的行,可以使用 grep 命令和正则表达式来实现。以下是一个示例命令:

grep '^[0-9].*\b\([0-9]\)[^0-9]*$' /etc/inittab

这个命令使用 grep 工具,并使用正则表达式 ^[0-9].*\b\([0-9]\)[^0-9]*$ 来匹配满足条件的行。该正则表达式的含义如下:

  • ^:匹配行的起始位置。
  • [0-9]:匹配一个数字。
  • .*:匹配任意数量的字符。
  • \b:匹配单词边界,确保数字结束位置与行尾相邻。
  • \([0-9]\):匹配一个数字,并使用括号捕获。
  • [^0-9]*$:匹配零个或多个非数字字符,然后匹配行尾。

这样,命令将会匹配以一个数字开头,并以相同数字结尾的行,并将它们打印出来。

 请注意,这个命令假设 /boot/grub2/grub.cfg 文件存在,并且你有足够的权限来访问该文件。

第九题:找出/proc/cpuinfo中的,1位数,或2位数;

要找出 /proc/cpuinfo 中包含 1 位数或 2 位数的行,可以使用 grep 命令并结合正则表达式来完成。以下是一个示例命令:

grep -E '^[0-9]{1,2}:' /proc/cpuinfo

这个命令使用 grep 工具,并使用正则表达式 ^[0-9]{1,2}: 来匹配满足条件的行。该正则表达式的含义如下:

  • ^:匹配行的起始位置。
  • [0-9]{1,2}:匹配一个或两个数字。
  • ::匹配冒号。

这样,命令将匹配包含 1 位数或 2 位数的行,并将它们打印出来。

请注意,/proc/cpuinfo 文件包含有关系统中每个 CPU 的信息。每个 CPU 的信息以一个数字后跟冒号开始。

10、查找当前系统上名字为student(必须出现在行首)的用户的账号的相关信息,文件为/etc/passwd

除了使用 grep 命令之外,还可以使用 awk 命令来查找 /etc/passwd 文件中以 “student” 开头的行。

以下是一个使用 awk 命令的示例:

awk -F: '/^student:/ { print }' /etc/passwd

这个命令使用 awk 工具,并使用正则表达式 /^student:/ 来匹配以 “student” 开头的行。-F: 设置字段分隔符为冒号,这样才能获取到每个字段的内容。

在匹配到符合条件的行后,print 命令将打印整行。

这样,命令将在 /etc/passwd 文件中搜索满足条件的行,并将它们打印出来,显示与 “student” 相关的用户账号的其他信息。

请注意,/etc/passwd 文件包含了系统上的用户账号信息,每一行对应一个账号,在冒号(:) 分隔的不同字段中包含了各种相关信息,如用户名、用户 ID、用户组 ID、用户家目录、所使用的 Shell 等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值