Shell基础-7

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

Shell 基础-7

  1. shell 版本 fork 炸弹
#!/bin/bash

# 快速消耗计算机资源,致使计算机死机
# 定义函数名为.(点), 函数中递归调用自己并放入后台执行

.() {
    . | . &
}
.

  1. 下载文件
#!/bin/bash

# 本脚本准备有序的网络资料进行批量下载操作(如 01.jpg,02.jpg,03.jpg)
# 设置资源来源的域名连接

url="http://www.test.com/"
echo "开始下载..."
sleep 2
type=jpg

for i in $(seq 100); do
    echo "正在下载$i.$type"
    curl $url/$i.$type -o /tmp/${i}$type
    sleep 1
done

# curl 使用-o 选项指定下载文件另存到哪里

  1. 显示计算机用户名称
#!/bin/bash
# 下面使用3种不同的方式列出计算机中所有账户的用户名

# 指定以:为分隔符,打印/etc/passwd 文件的第 1 列
awk -F: '{print $1}' /etc/passwd

# 指定以:为分隔符,打印/etc/passwd 文件的第 1 列
cut -d: -f1 /etc/passwd

# 使用 sed 的替换功能,将/etc/passwd 文件中:后面的所有内容替换为空(仅显示用户名)
sed 's/:.*//' /etc/passwd

  1. 打包
#!/bin/bash

[ ! -d /data ] && mkdir /data # 确保有此目录
[ -z $1 ] && exit             # 为空不需要打包

if [ -d $1 ]; then            # 是目录
    tar -czf /data/$1.-$(date +%Y%m%d).tar.gz $1
else
    echo "该目录不存在"
fi

  1. 进度条 回旋镖版
#!/bin/bash

while :; do
    clear
    for i in {1..20}; do
        echo -e "\033[3;${i}H*"
        sleep 0.1
    done
    clear

    for i in {20..1}; do
        echo -e "\033[3;${i}H*"
        sleep 0.1
    done
    clear
done

  1. 打印 MAC 地址
#!/bin/bash
ip a s | awk 'BEGIN{print "本机 MAC 地址信息如下:"}/^[0-9]/{print $2;getline;if($0~/link\/ether/){print $2}}' | grep -v lo:

# awk 读取 ip 命令的输出,输出结果中如果有以数字开始的行,先显示该行的地 2 列(网卡名称),
# 接着使用 getline 再读取它的下一行数据,判断是否包含 link/ether
# 如果保护该关键词,就显示该行的第 2 列(MAC 地址)
# lo 回环设备没有 MAC,因此将其屏蔽,不显示

<<EOF
本机 MAC 地址信息如下:
eth0:
00:16:3e:00:54:20
virbr0:
52:54:00:2d:b8:b4
virbr0-nic:
52:54:00:2d:b8:b4
EOF