Shell基础-9

Tutorial: Shell基础 Category: Shell Published: 2026-04-07 13:58:25 Views: 21 Likes: 0 Comments: 0

Shell 基础-9

  1. 回旋镖数字版
#!/bin/bash

# echo 使用-e 选项后,在打印参数中可以指定 H,设置需要打印内容的 x,y 轴的定位坐标
# 设置需要打印内容在第几行,第几列

for i in {1..100}; do
    echo -e "\033[6;8H["
    echo -e "\033[6;9H$i%"
    echo -e "\033[6;13H]"
    sleep 0.1
done

  1. 斐波那契数列
#!/bin/bash

# 斐波那契数列后一个数字永远是前 2 个数字之和
# 如:0 1 1 2 3 5 8 13 ... ...

list=(0 1)
for i in $(seq 2 11); do
    list[$i]=$(expr ${list[-1]} + ${list[-2]})
done
echo ${list[@]} # 打印所有

  1. 判断用户输入的字符
#!/bin/bash

read -p "Are you sure?[y/n]:" sure

case $sure in
y | Y | Yes | YES)
    echo "you enter Yes"
    ;;
n | N | NO | no)
    echo "you enter No"
    ;;
*)
    echo "error"
    ;;
esac

  1. 打印本机开放的端口
#!/bin/bash
# 从端口列表中观测有没有没用的端口,有的话可以将该端口对应的服务关闭,防止意外的攻击可能性

ss -nutlp | awk '{print $1,$5}' | awk -F"[: ]" '{print "协议:"$1,"端口号:"$NF}' | grep "[0-9]" | uniq

# awk '{print $1,$5} 输出进程类型名, 端口号
# awk -F"[: ]" '{print "协议:"$1,"端口号:"$NF}' 以[: ]为分隔符, 打印第1列、最后1列
# grep "[0-9]" 加红
# uniq 去重

<<EOF
协议:udp 端口号:53
协议:udp 端口号:67
协议:udp 端口号:68
协议:udp 端口号:111
协议:udp 端口号:323
协议:udp 端口号:898
协议:udp 端口号:5353
协议:udp 端口号:38342
协议:udp 端口号:111
协议:udp 端口号:323
协议:udp 端口号:898
协议:tcp 端口号:6010
协议:tcp 端口号:111
协议:tcp 端口号:53
协议:tcp 端口号:22
协议:tcp 端口号:631
协议:tcp 端口号:25
协议:tcp 端口号:3389
协议:tcp 端口号:111
协议:tcp 端口号:3350
协议:tcp 端口号:631
协议:tcp 端口号:25
EOF

  1. 删除普通用户
#!/bin/bash

# 先用 awk 提取所有 uid 大于等于 1000 的普通用户名称
# 再使用 for 循环逐个将每个用户删除即可

user=$(awk -F: '$3>=1000{print $1}' /etc/passwd)
for i in $user; do
    userdel -r $i
done