扩展练习果汁售卖:
(1)显示饮品菜单以及对应价格
(2)用户选择自己喜欢的饮品,根据用户选择可以计算出对应价格。
1、显示/proc/meminfo文 件中以不区分大小的s开头的行:
2、显示/etc/passwd中 以nologin结尾的行;
3、取出默认shell为/sbin/nologin的用户列表
4、取出默认shell为bash,且其用户ID号最小的用户的用户名
5、显示/etc/inittab中 以#开头,且后面跟-一个或多个空白字符,而后又跟了任意非空白字符的行
6、显示/etc/inittab中包含 了:一个数值 (即两个冒号中间一个数字的行
/etc/passwd 多个冒号之间的数值匹配显示
7、显示/boot/grub2/grub.cfg文件中以一个或多个空白字符开头的行:
8、显示/etc/inittab文件中以一个数字开头并以一个与开头数字相同的数字结尾的行;
9、找出/proc/cpuinfo中的,1位数,或2位数;
10、查找当前系统上名字为student(必须出现在行首)的用户的账号的相关信息,文件为/etc/passwd
解答:
1、显示/proc/meminfo文 件中以不区分大小的s开头的行:
[root@LL file02]# grep -i ^[s] /proc/meminfo
SwapCached: 0 kB
SwapTotal: 2097148 kB
SwapFree: 2097148 kB
Shmem: 11780 kB
Slab: 140256 kB
SReclaimable: 56468 kB
SUnreclaim: 83788 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
2、显示/etc/passwd中 以nologin结尾的行;
[root@LL file02]# grep "nologin$" /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin
colord:x:997:993:User for colord:/var/lib/colord:/sbin/nologin
clevis:x:996:992:Clevis Decryption Framework unprivileged user:/var/cache/clevis:/usr/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
sssd:x:995:991:User for sssd:/:/sbin/nologin
geoclue:x:994:990:User for geoclue:/var/lib/geoclue:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
3、取出默认shell为/sbin/nologin的用户列表
4、取出默认shell为bash,且其用户ID号最小的用户的用户名
[root@LL file02]# grep "nologin$" /etc/passwd | cut -d: -f1
bin
daemon
adm
lp
mail
operator
games
ftp
nobody
systemd-coredump
dbus
polkitd
avahi
tss
colord
clevis
rtkit
sssd
geoclue
libstoragemgmt
setroubleshoot
pipewire
flatpak
gdm
cockpit-ws
cockpit-wsinstance
gnome-initial-setup
sshd
chrony
dnsmasq
tcpdump
systemd-oom
[root@LL file02]#
[root@LL file02]# grep 'bash$' /etc/passwd
root:x:0:0:root:/root:/bin/bash
lh:x:1000:1000:LH:/home/lh:/bin/bash
[root@LL file02]# grep 'bash$' /etc/passwd | sort -n -t: -k3 |head -1 | cut -d: -f1
root
5、显示/etc/inittab中 以#开头,且后面跟-一个或多个空白字符,而后又跟了任意非空白字符的行
6、显示/etc/inittab中包含 了:一个数值 (即两个冒号中间一个数字的行
/etc/passwd 多个冒号之间的数值匹配显示
[root@LL file02]# grep "^#[[:space:]]\{1,\}[^[:space:]]" /etc/inittab
# inittab is no longer used.
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
# To view current default target, run:
# systemctl get-default
# To set a default target, run:
# systemctl set-default TARGET.target
[root@LL file02]# grep ':[0-9]:' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
7、显示/boot/grub2/grub.cfg文件中以一个或多个空白字符开头的行:
8、显示/etc/inittab文件中以一个数字开头并以一个与开头数字相同的数字结尾的行;
[root@LL file02]# grep '^[[:space:]]\{1,\}' /boot/grub2/grub.cfg
load_env -f ${config_directory}/grubenv
load_env
set default="${next_entry}"
set next_entry=
save_env next_entry
set boot_once=true
set default="${saved_entry}"
menuentry_id_option="--id"
menuentry_id_option=""
set saved_entry="${prev_saved_entry}"
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
if [ -z "${boot_once}" ]; then
saved_entry="${chosen}"
save_env saved_entry
fi
if [ x$feature_all_video_module = xy ]; then
insmod all_video
else
insmod efi_gop
insmod efi_uga
insmod ieee1275_fb
insmod vbe
insmod vga
insmod video_bochs
insmod video_cirrus
fi
set timeout_style=menu
set timeout=5
set timeout=5
source ${prefix}/user.cfg
if [ -n "${GRUB2_PASSWORD}" ]; then
set superusers="root"
export superusers
password_pbkdf2 root ${GRUB2_PASSWORD}
fi
# if countdown has ended, choose to boot rollback deployment,
# i.e. default=1 on OSTree-based systems.
if [ "${boot_counter}" = "0" -o "${boot_counter}" = "-1" ]; then
set default=1
set boot_counter=-1
# otherwise decrement boot_counter
else
decrement boot_counter
fi
save_env boot_counter
search --no-floppy --fs-uuid --set=root --hint='hd0,msdos1' 2a05d166-588a-4f60-bfc1-68afb0e0f3b3
search --no-floppy --fs-uuid --set=root 2a05d166-588a-4f60-bfc1-68afb0e0f3b3
search --no-floppy --fs-uuid --set=boot --hint='hd0,msdos1' 2a05d166-588a-4f60-bfc1-68afb0e0f3b3
search --no-floppy --fs-uuid --set=boot 2a05d166-588a-4f60-bfc1-68afb0e0f3b3
set kernelopts="root=/dev/mapper/rhel-root ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet "
set menu_hide_ok=1
set menu_hide_ok=0
set boot_indeterminate=0
set boot_indeterminate=2
if [ "${menu_show_once}" ]; then
unset menu_show_once
save_env menu_show_once
set timeout_style=menu
set timeout=60
elif [ "${menu_auto_hide}" -a "${menu_hide_ok}" = "1" ]; then
set orig_timeout_style=${timeout_style}
set orig_timeout=${timeout}
if [ "${fastboot}" = "1" ]; then
# timeout_style=menu + timeout=0 avoids the countdown code keypress check
set timeout_style=menu
set timeout=0
else
set timeout_style=hidden
set timeout=1
fi
fi
if [ "${menu_show_once_timeout}" ]; then
set timeout_style=menu
set timeout="${menu_show_once_timeout}"
unset menu_show_once_timeout
save_env menu_show_once_timeout
fi
menuentry 'UEFI Firmware Settings' $menuentry_id_option 'uefi-firmware' {
fwsetup
}
source ${config_directory}/custom.cfg
source $prefix/custom.cfg
[root@LL file02]# grep '^[0-9][0-9].*\1$' /etc/inittab
grep: Invalid back reference
9、找出/proc/cpuinfo中的,1位数,或2位数;
10、查找当前系统上名字为student(必须出现在行首)的用户的账号的相关信息,文件为/etc/passwd
[root@LL file02]# grep '[0-9]\{1,2\}' /proc/cpuinfo
processor : 0
cpu family : 6
model : 141
model name : 11th Gen Intel(R) Core(TM) i5-11260H @ 2.60GHz
stepping : 1
microcode : 0x34
cpu MHz : 2611.214
cache size : 12288 KB
physical id : 0
siblings : 1
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
cpuid level : 27
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdp1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology tsc_reliable nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx51ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves arat avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid movdiri movdir64b fsrm avx512_vp2intersect md_clear flush_l1d arch_capabilities
bugs : spectre_v1 spectre_v2 spec_store_bypass swapgs itlb_multihit eibrs_pbrsb
bogomips : 5222.42
clflush size : 64
cache_alignment : 64
address sizes : 45 bits physical, 48 bits virtual
[root@LL file02]# grep '^student\' /etc/passwd
grep: Trailing backslash
扩展练习果汁售卖:
(1)显示饮品菜单以及对应价格
(2)用户选择自己喜欢的饮品,根据用户选择可以计算出对应价格
[root@LL ~]#vim juice.sh
#!/bin/bash
echo "=============================================="
echo "我不爱你,你不爱我,蜜雪冰橙苦啧啧"
echo " 请挑选喜欢的饮品 "
echo "菜单: 编号 饮品 价格 "
echo " 1 桑葚莓莓 9米"
echo " 2 桑葚摇摇奶昔 6米"
echo " 3 桃喜芒芒 7米"
echo " 4 菠萝甜心橙 8米"
echo " 5 莓果三姐妹 7米"
echo " 6 新鲜冰激凌 2米"
echo " 7 蜜桃四季春 6米"
echo " 8 棒打鲜橙 6米"
echo " 9 冰鲜柠檬水 4米"
echo " 10 草莓摇摇奶昔 6米"
echo " 11 黄桃果霸 6米"
echo "=============================================="
read -p "请选择你喜欢的饮品:" num1
read -p "需要饮品的数量:" num2
if [ $num1 -eq 1 ];then
let a=$num2*9
echo "请支付$a米"
elif [ $num1 -eq 2 ];then
let b=$num2*6
echo "请支付$b米"
elif [ $num1 -eq 3 ];then
let c=$num2*7
echo "请支付$c米"
elif [ $num1 -eq 4 ];then
let d=$num2*8
echo "请支付$d米"
elif [ $num1 -eq 5 ];then
let e=$num2*7
echo "请支付$e米"
elif [ $num1 -eq 6 ];then
let f=$num2*2
echo "请支付$f米"
elif [ $num1 -eq 7 ];then
let g=$num2*6
echo "请支付$g米"
elif [ $num1 -eq 8 ];then
let h=$num2*6
echo "请支付$h米"
elif [ $num1 -eq 9 ];then
let i=$num2*4
echo "请支付$i米"
elif [ $num1 -eq 10 ];then
let j=$num2*6
echo "请支付$j米"
elif [ $num1 -eq 11 ];then
let k=$num2*6
echo "请支付$k米"
else
echo"别闹,休息一下^_^"
fi
执行代码:
[root@LL ~]# bash juice.sh
==============================================
我不爱你,你不爱我,蜜雪冰橙苦啧啧
请挑选喜欢的饮品
菜单: 编号 饮品 价格
1 桑葚莓莓 9米
2 桑葚摇摇奶昔 6米
3 桃喜芒芒 7米
4 菠萝甜心橙 8米
5 莓果三姐妹 7米
6 新鲜冰激凌 2米
7 蜜桃四季春 6米
8 棒打鲜橙 6米
9 冰鲜柠檬水 4米
10 草莓摇摇奶昔 6米
11 黄桃果霸 6米
==============================================
请选择你喜欢的饮品:1
需要饮品的数量:2
请支付18米
[root@LL ~]# bash juice.sh
==============================================
我不爱你,你不爱我,蜜雪冰橙苦啧啧
请挑选喜欢的饮品
菜单: 编号 饮品 价格
1 桑葚莓莓 9米
2 桑葚摇摇奶昔 6米
3 桃喜芒芒 7米
4 菠萝甜心橙 8米
5 莓果三姐妹 7米
6 新鲜冰激凌 2米
7 蜜桃四季春 6米
8 棒打鲜橙 6米
9 冰鲜柠檬水 4米
10 草莓摇摇奶昔 6米
11 黄桃果霸 6米
==============================================
请选择你喜欢的饮品:11
需要饮品的数量:2
请支付12米