当前位置:   article > 正文

30个实例带你从零开始玩转Linux Shell脚本编程,成为Shell大神!

linux shell编程从初学到精通

50ef4e4df71e63e2f8a76265c52655bd.png

引言

大家好,我是一位永远怀着学习的心态的Linux和Python技术持续学习者,在今天的文章中,我将向大家分享一些有趣而实用的Linux Shell脚本编程例子,通过这些例子,你可以系统地学习和掌握Shell脚本编程,从入门到精通。让我们开始这个令人兴奋的编程之旅吧!

要求环境

在跟随本教程的过程中,你需要准备以下环境:

  • 一台运行Linux操作系统的计算机

  • 任何一种基本的文本编辑器,如Vim、Nano等

实战案例

  1. 初识Shell脚本:Hello World!

  1. #!/bin/bash
  2. echo "Hello World!"
  1. 打印当前用户信息:

  1. #!/bin/bash
  2. echo "当前用户:$USER"
  3. echo "主目录:$HOME"
  4. echo "当前工作目录:$PWD"
  1. 计算两个数的和:

  1. #!/bin/bash
  2. echo "请输入第一个数:"
  3. read num1
  4. echo "请输入第二个数:"
  5. read num2
  6. sum=$((num1 + num2))
  7. echo "两个数的和为:$sum"
  1. 列出当前目录下的所有文件:

  1. #!/bin/bash
  2. for file in $(ls); do
  3.    echo "$file"
  4. done
  1. 列出当前目录下的所有文件夹:

  1. #!/bin/bash
  2. for dir in $(ls -d */); do
  3.    echo "$dir"
  4. done
  1. 获取当前日期和时间:

  1. #!/bin/bash
  2. now=$(date +"%Y-%m-%d %H:%M:%S")
  3. echo "当前时间为:$now"
  1. 循环输出数字1到10:

  1. #!/bin/bash
  2. for (( i=1; i<=10; i++ )); do
  3.    echo "$i"
  4. done
  1. 提示用户输入姓名并打印出来:

  1. #!/bin/bash
  2. echo -n "请输入您的姓名:"
  3. read name
  4. echo "您的姓名是:$name"
  1. 模拟一个简单的计算器:

  1. #!/bin/bash
  2. echo "请输入第一个数:"
  3. read num1
  4. echo "请输入第二个数:"
  5. read num2
  6. echo "请输入要执行的运算符(+、-、*、/):"
  7. read operator
  8. result=$(echo "$num1 $operator $num2" | bc)
  9. echo "结果为:$result"
  1. 拷贝当前目录下所有文件到另一个目录:

  1. #!/bin/bash
  2. echo "请输入要拷贝的目录:"
  3. read source_dir
  4. echo "请输入目标目录:"
  5. read target_dir
  6. cp -r "$source_dir"/* "$target_dir"
  7. echo "拷贝完成!"
  1. 判断一个文件是否存在:

  1. #!/bin/bash
  2. echo -n "请输入要查询的文件名:"
  3. read filename
  4. if [ -e "$filename" ]; then
  5.     echo "$filename 存在"
  6. else
  7.     echo "$filename 不存在"
  8. fi
  1. 判断当前用户是否是root:

  1. #!/bin/bash
  2. if [ $(id -u) = 0 ]; then
  3.     echo "当前用户是root"
  4. else
  5.     echo "当前用户不是root"
  6. fi
  1. 计算一个目录下所有文件的总大小:

  1. #!/bin/bash
  2. echo "请输入目录路径:"
  3. read dirpath
  4. size=$(du -sh "$dirpath" | cut -f1)
  5. echo "$dirpath 目录大小为:$size"
  1. 随机生成一个6位数字的验证码:

  1. #!/bin/bash
  2. code=$(shuf -i 100000-999999 -n 1)
  3. echo "随机验证码为:$code"
  1. 查找一个目录下所有拥有写权限的文件:

  1. #!/bin/bash
  2. echo "请输入目录路径:"
  3. read dirpath
  4. find "$dirpath" -type f -writable

16.使用alias命令设置一个自定义命令:

  1. #!/bin/bash
  2. alias ll='ls -alh'
  1. 统计一个文本文件中指定字符串的出现次数:

  1. #!/bin/bash
  2. echo "请输入文件路径:"
  3. read filepath
  4. echo "请输入要统计的字符串:"
  5. read searchstr
  6. count=$(grep -o "$searchstr" "$filepath" | wc -l)
  7. echo "$filepath 中 $searchstr 出现的次数为:$count"
  1. 计算一个数组元素的和:

  1. #!/bin/bash
  2. array=(1 2 3 4 5)
  3. sum=0
  4. for i in ${array[@]}
  5. do
  6.   sum=$(($sum + $i))
  7. done
  8. echo "数组元素的和为:$sum"
  1. 批量重命名当前目录下的所有文件:

  1. #!/bin/bash
  2. echo "请输入文件名的前缀:"
  3. read prefix
  4. echo "请输入文件名的后缀:"
  5. read suffix
  6. for file in *
  7. do
  8.   mv "$file" "$prefix$file$suffix"
  9. done
  10. echo "文件重命名完成!"
  1. 查找一个目录下最后修改时间超过7天的文件:

  1. #!/bin/bash
  2. echo "请输入目录路径:"
  3. read dirpath
  4. find "$dirpath" -type f -mtime +7
  1. 获取当前日期和时间:

  1. #!/bin/bash
  2. current_date=$(date +%Y-%m-%d)
  3. current_time=$(date +%H:%M:%S)
  4. echo "当前日期:$current_date"
  5. echo "当前时间:$current_time"
  1. 判断一个数是否为素数:

  1. #!/bin/bash
  2. echo "请输入一个正整数:"
  3. read num
  4. is_prime=1
  5. for ((i=2; i<$num; i++))
  6. do
  7.   if (( $num % $i == 0 ))
  8.   then
  9.     is_prime=0
  10.     break
  11.   fi
  12. done
  13. if (( $is_prime == 1 ))
  14. then
  15.   echo "$num 是素数"
  16. else
  17.   echo "$num 不是素数"
  18. fi
  1. 获取当前机器的CPU信息:

  1. #!/bin/bash
  2. cpu_info=$(cat /proc/cpuinfo)
  3. echo "$cpu_info"
  1. 获取当前机器的内存信息:

  1. #!/bin/bash
  2. mem_info=$(free -h)
  3. echo "$mem_info"
  1. 统计一个目录下所有.c文件的代码行数:

  1. #!/bin/bash
  2. echo "请输入目录路径:"
  3. read dirpath
  4. find "$dirpath" -name "*.c" | xargs wc -l

26.下载一个网页并将其转换为PDF文件:

  1. #!/bin/bash
  2. echo "请输入网页链接:"
  3. read webpage
  4. filename=$(echo "$webpage" | awk -F/ '{print $NF}')
  5. wget "$webpage" -O "$filename".html
  6. wkhtmltopdf "$filename".html "$filename".pdf

27.查找一个目录下文件名包含指定字符串的文件:

  1. #!/bin/bash
  2. echo "请输入目录路径:"
  3. read dirpath
  4. echo "请输入要查找的字符串:"
  5. read searchstr
  6. find "$dirpath" -name "*$searchstr*"

28.备份指定目录并打包成tar.gz格式:

  1. #!/bin/bash
  2. echo "请输入要备份的目录:"
  3. read sourcedir
  4. echo "请输入备份存放位置:"
  5. read targetdir
  6. backupfile=$(date +%Y%m%d_%H%M%S)_backup.tar.gz
  7. tar -czvf "$targetdir/$backupfile" "$sourcedir"
  8. echo "备份完成!"

29.批量添加用户并设置初始密码

  1. #!/bin/bash
  2. for i in {1..5}; do
  3.     username="user$i"
  4.     useradd -m -s /bin/bash "$username"
  5.     echo "设置 $username 的密码为:password$i"
  6.     echo "password$i" | passwd --stdin "$username"
  7. done

30.统计一个文本文件中的单词数:

  1. #!/bin/bash
  2. echo "请输入文件路径:"
  3. read filepath
  4. wordcount=$(grep -o '\w\+' "$filepath" | wc -l)
  5. echo "该文件中的单词数量为:$wordcount"

文章总结

通过这篇文章,我们带你从零开始玩转Linux Shell脚本编程,并且给出了30个丰富多样的实例,涵盖了Shell脚本编程的基础知识和常见应用场景。希望这些例子能够帮助你系统地学习和掌握Shell脚本编程,成为Shell大神!

如果你对Linux和Python技术感兴趣,欢迎关注并分享我们的微信公众号"运维家"(搜索"运维家"或扫描下方二维码),我们将持续为大家带来更多有趣、实用的技术文章。

d0755e3a77b6bbb8757842173a29bdc8.jpeg


欢迎分享、留言、提问,我将竭诚为你解答。让我们一起在技术的世界里探索前行!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/197401
推荐阅读
相关标签
  

闽ICP备14008679号