Shell基础案例
1.初识Shell脚本:Hello World!
#!/bin/bash
echo "Hello World!"
2.打印当前用户信息:
#!/bin/bash
echo "当前用户:$USER"
echo "主目录:$HOME"
echo "当前工作目录:$PWD"
3.计算两个数的和:
#!/bin/bash
echo "请输入第一个数:"
read num1
echo "请输入第二个数:"
read num2
sum=$((num1 + num2))
echo "两个数的和为:$sum"
4.列出当前目录下的所有文件:
#!/bin/bash
for file in $(ls); do
echo "$file"
done
5.列出当前目录下的所有文件夹:
#!/bin/bash
for dir in $(ls -d */); do
echo "$dir"
done
6.获取当前日期和时间:
#!/bin/bash
now=$(date +"%Y-%m-%d %H:%M:%S")
echo "当前时间为:$now"
7.循环输出数字1到10:
#!/bin/bash
for (( i=1; i<=10; i++ )); do
echo "$i"
done
8.提示用户输入姓名并打印出来:
#!/bin/bash
echo -n "请输入您的姓名:"
read name
echo "您的姓名是:$name"
9.模拟一个简单的计算器:
#!/bin/bash
echo "请输入第一个数:"
read num1
echo "请输入第二个数:"
read num2
echo "请输入要执行的运算符(+、-、*、/):"
read operator
result=$(echo "$num1 $operator $num2" | bc)
echo "结果为:$result"
10.拷贝当前目录下所有文件到另一个目录:
#!/bin/bash
echo "请输入要拷贝的目录:"
read source_dir
echo "请输入目标目录:"
read target_dir
cp -r "$source_dir"/* "$target_dir"
echo "拷贝完成!"
11.判断一个文件是否存在:
#!/bin/bash
echo -n "请输入要查询的文件名:"
read filename
if [ -e "$filename" ]; then
echo "$filename 存在"
else
echo "$filename 不存在"
fi
12.判断当前用户是否是root:
#!/bin/bash
if [ $(id -u) = 0 ]; then
echo "当前用户是root"
else
echo "当前用户不是root"
fi
13.计算一个目录下所有文件的总大小:
#!/bin/bash
echo "请输入目录路径:"
read dirpath
size=$(du -sh "$dirpath" | cut -f1)
echo "$dirpath 目录大小为:$size"
14.随机生成一个6位数字的验证码:
#!/bin/bash
code=$(shuf -i 100000-999999 -n 1)
echo "随机验证码为:$code"
15.查找一个目录下所有拥有写权限的文件:
#!/bin/bash
echo "请输入目录路径:"
read dirpath
find "$dirpath" -type f -writable
16.使用alias命令设置一个自定义命令:
#!/bin/bash
alias ll='ls -alh'
17.统计一个文本文件中指定字符串的出现次数:
#!/bin/bash
echo "请输入文件路径:"
read filepath
echo "请输入要统计的字符串:"
read searchstr
count=$(grep -o "$searchstr" "$filepath" | wc -l)
echo "$filepath 中 $searchstr 出现的次数为:$count"
18.计算一个数组元素的和:
#!/bin/bash
array=(1 2 3 4 5)
sum=0
for i in ${array[@]}
do
sum=$(($sum + $i))
done
echo "数组元素的和为:$sum"
19.批量重命名当前目录下的所有文件:
#!/bin/bash
echo "请输入文件名的前缀:"
read prefix
echo "请输入文件名的后缀:"
read suffix
for file in *
do
mv "$file" "$prefix$file$suffix"
done
echo "文件重命名完成!"
20.查找一个目录下最后修改时间超过7天的文件:
#!/bin/bash
echo "请输入目录路径:"
read dirpath
find "$dirpath" -type f -mtime +7
21.获取当前日期和时间:
#!/bin/bash
current_date=$(date +"%Y-%m-%d")
current_time=$(date +"%H:%M:%S")
echo "当前日期:$current_date"
echo "当前时间:$current_time"
22.判断一个数是否为素数:
#!/bin/bash
echo "请输入一个正整数:"
read num
is_prime=1
for ((i=2; i<$num; i++))
do
if (( $num % $i == 0 ))
then
is_prime=0
break
fi
done
if (( $is_prime == 1 ))
then
echo "$num 是素数"
else
echo "$num 不是素数"
fi
23.获取当前机器的CPU信息:
#!/bin/bash
cpu_info=$(cat /proc/cpuinfo)
echo "$cpu_info"
24.获取当前机器的内存信息:
#!/bin/bash
mem_info=$(free -h)
echo "$mem_info"
25.统计一个目录下所有.c文件的代码行数:
#!/bin/bash
echo "请输入目录路径:"
read dirpath
find "$dirpath" -name "*.c" | xargs wc -l
26.下载一个网页并将其转换为PDF文件:
#!/bin/bash
echo "请输入网页链接:"
read webpage
filename=$(echo "$webpage" | awk -F/ '{print $NF}')
wget "$webpage" -O "$filename".html
wkhtmltopdf "$filename".html "$filename".pdf
27.查找一个目录下文件名包含指定字符串的文件:
#!/bin/bash
echo "请输入目录路径:"
read dirpath
echo "请输入要查找的字符串:"
read searchstr
find "$dirpath" -name "*$searchstr*"
28.备份指定目录并打包成tar.gz格式:
#!/bin/bash
echo "请输入要备份的目录:"
read sourcedir
echo "请输入备份存放位置:"
read targetdir
backupfile=$(date +%Y%m%d_%H%M%S)_backup.tar.gz
tar -czvf "$targetdir/$backupfile" "$sourcedir"
echo "备份完成!"
29.批量添加用户并设置初始密码
#!/bin/bash
for i in {1..5}; do
username="user$i"
useradd -m -s /bin/bash "$username"
echo "设置 $username 的密码为:password$i"
echo "password$i" | passwd --stdin "$username"
done
30.统计一个文本文件中的单词数:
#!/bin/bash
echo "请输入文件路径:"
read filepath
wordcount=$(grep -o '\w\+' "$filepath" | wc -l)
echo "该文件中的单词数量为:$wordcount"