Shell常用语法基础(非常详细)零基础入门到精通,收藏这一篇就够了

382 篇文章 3 订阅
251 篇文章 0 订阅

用Shell需要掌握的基本语法:入参、变量、循环、判断、简单的文本操作写了一些demo,用于练手。

1、用Shell写一个简单的任务管理系统

2、用户管理脚本

3、备份文件脚本

用Shell写一个简单的任务管理系统

#!/bin/bash``   ``# 任务文件``TASK_FILE="tasks.txt"``   ``# 检查任务文件是否存在,不存在则创建``if [ ! -f $TASK_FILE ]; then`    `touch $TASK_FILE``fi``   ``# 显示菜单``display_menu() {`    `echo "=========================="`    `echo "    任务管理系统         "`    `echo "=========================="`    `echo "1. 添加任务"`    `echo "2. 查看任务"`    `echo "3. 标记任务为完成"`    `echo "4. 删除任务"`    `echo "5. 退出"`    `echo "=========================="`    `echo "请选择一个选项: "``}``   ``# 添加任务``add_task() {`    `echo "输入任务描述: "`    `read task_description`    `echo "未完成: $task_description" >> $TASK_FILE`    `echo "任务已添加!"``}``   ``# 查看任务``view_tasks() {`    `echo "任务列表:"`    `if [ ! -s $TASK_FILE ]; then`        `echo "暂无任务."`    `else`        `while IFS= read -r line`        `do`            `echo $line`        `done < $TASK_FILE`    `fi``}``   ``# 标记任务为完成``mark_task_complete() {`    `echo "输入要标记为完成的任务编号: "`    `read task_number`    `if [ ! -s $TASK_FILE ]; then`        `echo "暂无任务可标记."`    `else`        `sed -i "${task_number}s/^未完成/完成/" $TASK_FILE`        `echo "任务已标记为完成!"`    `fi``}``   ``# 删除任务``delete_task() {`    `echo "输入要删除的任务编号: "`    `read task_number`    `if [ ! -s $TASK_FILE ]; then`        `echo "暂无任务可删除."`    `else`        `sed -i "${task_number}d" $TASK_FILE`        `echo "任务已删除!"`    `fi``}``   ``# 主循环``while true; do`    `display_menu`    `read choice`    `case $choice in`        `1)`            `add_task`            `;;`        `2)`            `view_tasks`            `;;`        `3)`            `mark_task_complete`            `;;`        `4)`            `delete_task`            `;;`        `5)`            `echo "退出系统"`            `exit 0`            `;;`        `*)`            `echo "无效选项,请重新选择"`            `;;`    `esac``done``   

代码解释:

  1. 任务文件的创建和检查:
  • 如果tasks.txt文件不存在,脚本将创建一个新的文件。
  1. 显示菜单:
  • display_menu函数显示任务管理系统的菜单,用户可以选择不同的操作。
  1. 添加任务:
  • add_task函数让用户输入任务描述,并将任务添加到tasks.txt文件中,任务初始状态为“未完成”。
  1. 查看任务:
  • view_tasks函数读取并显示tasks.txt中的所有任务。如果文件为空,则显示“暂无任务”。
  1. 标记任务为完成:
  • mark_task_complete函数让用户输入要标记为完成的任务编号,并将该任务的状态从“未完成”改为“完成”。
  1. 删除任务:
  • delete_task函数让用户输入要删除的任务编号,并删除该任务。
  1. 主循环:
  • while true循环用于不断显示菜单并处理用户输入的选项。

这个脚本综合了入参、循环、判断等多个Shell编程的基本概念,并且提供了一个简单的任务管理系统。


用户管理脚本

#!/bin/bash``   ``# 显示菜单``display_menu() {`    `echo "=========================="`    `echo "    用户管理系统         "`    `echo "=========================="`    `echo "1. 添加用户"`    `echo "2. 删除用户"`    `echo "3. 列出用户"`    `echo "4. 退出"`    `echo "=========================="`    `echo "请选择一个选项: "``}``   ``# 添加用户``add_user() {`    `echo "输入要添加的用户名: "`    `read username`    `sudo useradd "$username"`    `echo "用户 $username 已添加!"``}``   ``# 删除用户``delete_user() {`    `echo "输入要删除的用户名: "`    `read username`    `sudo userdel "$username"`    `echo "用户 $username 已删除!"``}``   ``# 列出用户``list_users() {`    `echo "系统用户列表:"`    `cut -d: -f1 /etc/passwd``}``   ``# 主循环``while true; do`    `display_menu`    `read choice`    `case $choice in`        `1)`            `add_user`            `;;`        `2)`            `delete_user`            `;;`        `3)`            `list_users`            `;;`        `4)`            `echo "退出系统"`            `exit 0`            `;;`        `*)`            `echo "无效选项,请重新选择"`            `;;`    `esac``done``   

add_user 函数用于添加新用户

  • 使用 read 命令读取输入的用户名

delete_user 函数用于删除用户

list_users 函数用于列出系统中的所有用户

  • 使用 cut -d: -f1 /etc/passwd 命令从 /etc/passwd 文件中提取用户名并显示出来。/etc/passwd 文件保存了所有系统用户的信息,cut 命令用来分割文件内容,-d: 表示以冒号为分隔符,-f1 表示提取第一个字段(即用户名)。

备份文件脚本

#!/bin/bash``   ``# 检查参数``if [ "$#" -ne 2 ]; then`    `echo "Usage: $0 source_file target_directory"`    `exit 1``fi``   ``SOURCE_FILE=$1``TARGET_DIR=$2``   ``# 检查源文件是否存在``if [ ! -f "$SOURCE_FILE" ]; then`    `echo "Source file does not exist."`    `exit 1``fi``   ``# 检查目标目录是否存在,不存在则创建``if [ ! -d "$TARGET_DIR" ]; then`    `mkdir -p "$TARGET_DIR"``fi``   ``# 备份文件``cp "$SOURCE_FILE" "$TARGET_DIR"``echo "File $SOURCE_FILE backed up to $TARGET_DIR"

将一个源文件备份到目标目录。它会先进行参数检查,然后确认源文件和目标目录的存在性,必要时创建目标目录,最后执行文件的备份操作。

首先是入参的判断:

判断是否接收了两个参数,即源文件和目标目录。

“$#” 是一个特殊变量,表示传递给脚本的参数个数。

如果参数个数不等于2,脚本会输出用法提示 Usage: $0 source_file target_directory 并退出,$0 代表脚本的名字。

判断源文件是否存在:[ ! -f “$SOURCE_FILE” ] ,如不存在则报出错误且退出脚本。

判断备份目录是否存在:[ ! -d “$TARGET_DIR” ] 表示如果目标目录不存在创建


Shell脚本已上传到gitee

https://gitee.com/yeweijie-raul/weijie_linux_shell/tree/master/shell_exercises

黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

1.学习路线图

攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。

(都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

3.技术文档和电子书

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

4.工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。

还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值