Shell 脚本学习小纲 ~

【论文+代码】ZS-N2N实现小样本零网络图像去噪 本文涵盖论文原文讲解与代码复现。 阅读详情

前言

        想说能点进来的朋友肯定是想学习和练习shell脚本。但学习一个东西,最好是系统性从基础去学,否则会导致地基打不稳,后边遇到问题也会花费大量时间找补。

        接下来我根据个人经验以及统合网上的现成的资源在这里为大家梳理一下shell脚本学习的路径与新手容易犯的错误。不管是想做自动化任务,或者准备面试,希望都能对你们有用。

一、Shell 脚本学习路径

1. 基础知识
  • Shell 解释器:了解 #!/bin/bash(Shebang)的作用,不同 Shell 的区别(Bash/Zsh)

  • 脚本结构:如何创建可执行脚本(chmod +x script.sh)

  • 变量:定义变量、环境变量、特殊变量($0, $1, $?, $$)

  • 输入输出:echo, read, 重定向(>, >>, 2>)

  • 条件判断:if-elif-else, test 或 [ ],case 语句

  • 循环:for, while, until

  • 函数:定义和调用函数,参数传递

  • 调试:set -x, set -e 的使用

2. 进阶内容
  • 字符串处理:${var#pattern}, grep, sed, awk

  • 数组操作:定义数组、遍历、切片

  • 文件操作:find, xargs, 文件权限管理

  • 信号处理:trap 命令捕获信号

  • 正则表达式:基础正则和扩展正则

  • 脚本优化:避免过度使用管道,使用 $( ) 替代反引号

3. 高级技巧
  • 并行处理:& 后台运行,wait 等待任务

  • 日志记录:logger 命令和系统日志

  • 交互式脚本:select 菜单,dialog 工具

  • 安全实践:避免使用 eval,处理用户输入

二、练习方法

切忌眼高手底~

1、从简单的开始练习编写

# 练1:  输出当前日期和用户
echo "Today is $(date), user is $USER"

#  练2:计算 1~100 的和
sum=0
for i in {1..100}; do
    sum=$((sum + i))
done
echo "Sum: $sum"

2、刷题平台

3、实际项目(备份脚本、日志分析...)

文件备份脚本:自动压缩指定目录并备份到 /backup 下

日志分析工具:统计 Apache/Nginx 日志中的高频 IP

系统监控脚本:检测磁盘使用率超过 80% 时发送邮件告警

自动化部署:通过脚本批量安装软件包或更新配置

三、推荐学习资源

1. 书籍
  • 《Shell 脚本学习指南》(经典)

  • 《快乐的 Linux 命令行》(免费在线阅读)

2. 在线教程
3. 社区与问答
4. 挑战平台

四、常见错误与调试

  1. 权限问题:脚本没有执行权限 → chmod +x script.sh

  2. 路径错误:使用相对路径导致找不到文件 → 用绝对路径或 cd 切换目录

  3. 变量赋值错误:等号两侧不能有空格 → name="value"(非 name = "value")

  4. 条件判断空格:if [ $a -eq 1 ] 方括号内必须保留空格

  5. 未处理特殊字符:文件名含空格时要用引号包裹 → "$file"

五、课后作业 (大佬请跳过)

如果能看懂,请在评论区留言,这两个脚本是干什么用的~ 

(1)
for file in *.txt; do
    mv "$file" "${file%.txt}.md"
done

------------------------------------------------------------------------------------

(2)
if ! systemctl is-active --quiet nginx; then
    systemctl restart nginx
    echo "Nginx restarted at $(date)" >> /var/log/nginx_monitor.log
fi

-------------------------------------------------------------------------------------

通过持续练习才是掌握一门技术的关键。

雄关漫道真如铁,
而今迈步从头越。

  --忆秦娥·娄山关

                                                                                祝大家越来越好~

从SolidWorks到URDF:插件使用、关节配置与PyBullet仿真避坑指南 本文提供了一份从SolidWorks导出URDF模型并导入PyBullet进行仿真的完整实战指南。详细讲解了SolidWorks插件的正确安装与配置、关节类型的选择与坐标系对齐的核心技巧,并针对PyBullet仿真中常见的模型散架、路径错误、物理属性异常等问题提供了深度避坑解决方案,帮助机器人开发者高效完成从设计到仿真的全流程。 阅读详情

相关推荐

大白话讲解Numpy中什么是一维、二维、三维数组,以及5种创建方式

NumPy中提供了多种创建数组的方式,其中最基本的方式就是通过array()函数创建数组在使用该函数时直接传入列表或元组即可。 通过array()函数分别创建一维数组、二维组和三维数组,那么什么是维度呢?一维、二维、三维有什么区别? 1、什么是维度? 维度可以理解为描述数据的一种 “方向” 或者 “层次”。在数组中,维度的数量决定了我们需要用多少个索引来访问一个元素 2、一维、二维、三维的区别? (1)一维:一维数组就像是一条直线上排列的一组数据,例如: a = np.array([1, 2

1365

脚本语言学习——Shell(一)

在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。数组名=(值1 值2 . . . 值n)或者value1value2value3)可以不使用连续的下标,而且下标的范围没有限制。

future_dreams的博客 979

ai数字人系统部署

这段代码实现了基本的语音交互闭环,用户通过语音输入问题,数字人识别语音后进行自然语言理解并生成回复,再将回复转换为语音输出。但实际应用中的 AI 数字人系统更为复杂,如形象渲染需专业图形引擎(如 Unity、Unreal Engine),自然语言处理也会涉及更复杂的模型微调及多轮对话管理等。一个完整的 AI 数字人系统涵盖形象生成、自然语言处理、动作控制等多个复杂功能,下面为你提供一个 Python 示例,整合多个库来实现数字人基础功能,包括语音交互、简单的自然语言理解以及通过虚拟形象展示对话。

weixin_ggwwsscc的博客 370

Linux日志logger

一 通过logger命令记录日志 logger 是一个shell 命令接口,可以通过该接口使用Syslog的系统日志模块,还可以从命令行直接向系统日志文件写入一行信息。 日志的级别 facility:  auth       -用户授权  authpriv   -授权和安全  cron       -计划任务:at ,cron  daemon     -系统守护进程

Balder~专栏 4352

Codesys软运动控制进阶:用SMC_FreeEncoder为ECAT轴搭建一个“虚拟手轮”调试工具

本文详细介绍了如何利用Codesys的SMC_FreeEncoder功能为ECAT轴搭建虚拟手轮调试工具,解决自动化设备开发中的硬件依赖问题。通过软件模拟手轮脉冲信号,实现无硬件依赖的运动控制逻辑验证,显著提升调试效率。适用于汇川AM400等PLC平台,特别适合机械安装滞后或伺服驱动器故障时的调试场景。

weixin_33737774的博客 480

Win11家庭版如何让Win+R运行CMD默认管理员权限?3种方法实测有效

本文针对Win11家庭版用户,实测了三种让Win+R运行CMD默认获取管理员权限的有效方法。通过分析UAC机制与家庭版功能限制,详细介绍了注册表编辑、快捷方式创建与任务计划程序三种方案的原理、步骤与风险对比,帮助用户根据安全与效率需求选择最佳方案,实现一键高效管理。

sat99的博客 1274

超详细shell脚本编程快速入门

文章目录 1.shell简介 1.1 什么是shell 1.2 shell脚本 1.3 运行shell脚本 1.4 shell注释 1.5 shell编写的基本步骤 2.shell变量 2.1 命名变量 2.2 使用变量 2.3 变量类型 2.4 变量操作 3.shell字符串 3.1 字符串类型 3.2 字符串操作 4.shell数组 4.1 定义数组 4.2 数组操作 5.shell传递参数 6.shell运算符

qinjie的博客 9万+

Vue - 在纯 HTML 普通项目中实现组件化,让原生 html 项目支持引入 *.vue 组件 / 组件与组件间的互相引用等,完美解决了引入组件出现的跨域问题(保姆级详细教程,完整示例源码及插件)

html中使用vue组件,在HTML页面中引入vue组件,HTML界面利用http-vue-loader.js以组件方式引入vue文件,使用http-vue-loader引入组件出现报错,在html页面使用http-vue-loader插件引入组件报跨域错误,如何解决http-vue-loader引用组件时出现跨域问题,纯html原生web项目引入vue后如何实现组件引入,使用http-vue-loader插件控制台报错跨域,http-vue-loader跨域怎么办官方文档,html页面如何引入.vu

🏆 前端领域优质创作者 3907

油猴教程,学习使用脚本,让学习更高效

3.建议:用ocs网课助手先把所有视频任务点刷完,然后再用超星进行答题,不过有时自动答题不完整,需要手动把答案填上。1.第一步:打开Edge浏览器,点击右上角的三个点,选择扩展选项。1.可以刷课的脚本:OCS网课助手可以开二倍速,自动播放视频。2.超星可以自动答题,也可以自动播放视频。9.第九步:点击需要的脚本安装。5.微软浏览器自带的好用脚本。4. 划词搜题也挺不错的。

Dong雨的博客 5429

【异常】Nacos 2.x 核心报错:Server check fail (gRPC 端口连不通) 深度排查

如果 Nacos 运行在 K8s 中,需确保对应的Servicemetadata:spec:ports:port: 8848port: 9848 # 必须暴露此端口selector:app: nacos在 Nacos 2.x 时代,“端口成套出现”是基础设施配置的基本要求。遇到连接失败时,首要检查的不是业务配置,而是网络链路上主端口 + 1000的 TCP 通讯是否被放行。更多关于 AI + 教育领域的干货,可以关注我的微信公众号一时间获取哦~

奶爸的编程之路,也就一周冷个三天 325

大模型风电功率预测:短期,超短期,中长期的完整实现与代码详解

本文全面介绍了基于深度学习大模型的风电功率预测方法,涵盖超短期(15分钟-1小时)、短期(1-6小时)和中长期(1天-1周)三种时间尺度。文章详细阐述了数据准备与特征工程,包括数据收集、预处理和可视化分析。针对不同时间尺度,分别介绍了Temporal Fusion Transformer (TFT)、Informer和N-BEATS模型的构建、训练与评估方法,并提供了完整的开源代码实现。此外,文章还探讨了模型部署与生产环境集成,包括模型保存与加载、实时预测API以及模型监控与再训练。最后,文章总结了关键创新

专注AI大模型,软件混淆,授权 1891

Linux脚本:将.sh文件输出映射到日志文件并添加时间戳

- 在linux系统中,当调用.sh脚本时,脚本中的标准输出原本是打印到控制台的,我们可以将其打印到某个文件,并添加上时间戳,方便问题溯源。 - 有时我们运行的脚本是.py脚本,也需要将输出映射到日志文件。

天城电子嵌入式的博客 2337

MuJoCo 入门教程(一)

在 MuJoCo 仿真中输入自定义数字有三种方法。首先,可在 XML 中定义全局数字字段。它们有一个名称和一个实数值数组。其次,可以通过特定元素的自定义数组来扩展某些模型元素的定义。具体方法是在 XML 元素大小中设置 nuser_XXX 属性。第三,数组 mjData.userdata 不用于任何 MuJoCo 计算。用户可以在这里存储自定义计算的结果;请记住,所有随时间变化的内容都应存储在 mjData 中,而不是 mjModel 中。自定义文本字段可以保存在模型中。

机器人控制与仿真应用 1万+

Shell脚本学习

(1)定义变量:变量=值(2)撤销变量: unset 变量(3)声明静态变量:readonly变量,注意不能 unset2、变量定义规则(1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写(2)等号两侧不能有空格!(3)在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。(4)变量的值如果有空格,需要使用双引号或单引号括起来。

小石潭记丶 1272

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

超牛逼!100 个开箱即用的 Shell 脚本,拿好了~

点击下方公众号「关注」和「星标」回复“1024”获取独家整理的学习资料!shell脚本是帮助程序员和系统管理员完成费时费力的枯燥工作的利器,是与计算机交互并管理文件和系统操作的有效方式。区...

民工哥的博客 4180

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Shell 脚本学习

不难看出我们创建的helloworld.sh文件他的权限信息为:-rw-r–r–,对于我们现在登录的root账号也就是对应的第二个到第四个"rw-"也就是仅仅只有读写的权限没有执行的权限,我们如何解决这个问题,以上例子中,: 是一个空命令,用于执行后面的 Here 文档,<<‘EOF’ 表示开启 Here 文档,COMMENT 是 Here 文档的标识符,在这两个标识符之间的内容都会被视为注释,不会被执行。Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。

qq_56440330的博客 1273

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

shell脚本学习基础

本篇博客将会介绍(Contents): 1、什么是shell,shell解释器和命令(或称工具)之间有什么区别 2、“变量”和“命令”的区别 3、出口状态和标准输出的区别:标准输入和参数的区别; 4、linux中的空格 5、如何执行shell脚本 6、接下来几篇博客内容 7、使用和参考书籍 Refer...

huayangshiboqi的博客 9446

学习shell脚本

什么是shell脚本 为什么要学习shell脚本 第一个脚本编写与执行 简单的shell脚本练习 简单案例 脚本的执行方式差异(source、sh script、./script) 如何使用shell脚本的判断式 利用test命令的测试功能 利用判断符号[ ] shell脚本的默认变量($0、$1...) shell脚本的条件判断式 利用 if...then 利用case...esac判断 利用function功能 $()和\$(())讲解 shell脚本的循环 while do done、until do

不知道 1231

shell脚本学习——编程之变量定义

文章目录SHELL编程模块课程目标一、SHELL介绍1. 编程语言分类2. shell简介3. shell脚本㈠ 什么是shell脚本?㈡ 什么时候用到脚本?㈢ shell脚本能干啥?㈣ 如何学习shell脚本?㈤ 学习shell脚本的秘诀㈥ shell脚本的基本写法㈦ shell脚本的执行方法==二、变量的定义==1. 变量是什么?2. 什么时候需要定义变量?3.变量如何定义?4. 变量的定义规则㈠ 变量名区分大小写㈡ 变量名不能有特殊符号㈢ 变量名不能以数字开头㈣ 等号两边不能有任何空格㈤ 变量名尽量做

fangfeng1021的博客 3581

【Linux系统命令及shell脚本学习③】~第一个shell脚本

脚本语言是相对于编译型语言而言的,它是为了缩短编译型语言编写—编译—链接—运行(Edit-Compile-Link-Run)过程而创建的计算机编程语言。由于脚本语言常常运行于底层,所处理的是字节、整数、浮点数或其他机器层的对象,因而,脚本语言是低级程序设计语言。如C\C++、Ada、Java、C#等都属于编译型语言,也可称为高级程序设计语言,这类语言所编写的程序需要经过编译,将源代码转化为目标代码才能运行。......

weixin_50597697的博客 701

Shell脚本学习笔记

Shell学习笔记Shell学习笔记 简介 Shell教程入门 1shell脚本 2shell脚本实践 Shell变量 1使用变量 2只读变量 3删除变量 4变量类型 5shell字符串 6Shell数组 7Shell注释 Shell传递参数 1实例 Shell数组 Shell运算符 1算术运算符 2关系运算符 3布尔运算符 4逻辑运算符 5字符串运算符 6文件测试运算符 Shell echo命令

冰路梦 4593

shell脚本学习

变量名不能加美元符号;命名只能使用英文字母,数据和下划线,首个字符不能一数字开头;中间不能有空格,可以使用下划线_;不能使用标点符号;不能使用bash里的关键字(可用help命令查看保留关键字)

m0_55471400的博客 1071

Shell简介——Shell配置脚本的加载与修改(/etc/profile、~/.bashrc等)

以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除

主要记录嵌入式学习与开发过程。 2949

shell脚本[3~9]

学习视频来自B站UP主泷羽sec,如涉及侵权马上删除文章。笔记只是方便学习,以下内容只涉及学习内容,切莫逾越法律红线。安全见闻,包含了各种网络安全,网络技术,旨在明白自己的渺小,知识的广博,要时时刻刻保持平等的心,很多分类组合有互相包含也属于正常情况,遇到问题就能够举一反三。

qq_35690972的博客 782

简单的Shell脚本

Shell 是一个C 语言编写的脚本语言,它是用户与Linux的桥梁,用户输入命令交给 Shell 处理。Shell 将相应的操作传递给内核(Kernel),内核把处理的结果输出给用户。shell编程通常指的是学习shell命令语法后,利用这套语法开发脚本程序,操作、访问内核服务。而不是使用C语言去编写一个shell程序。

m0_70882914的博客 1298

【学习Shell脚本编程】

学习Shell脚本编程是掌握Linux系统管理和自动化任务的关键。以下是一个详细的学习路径和资源推荐,帮助你从零基础开始学习Shell脚本编程。什么是Shell:基本命令: 2. 基本的Shell脚本编写 编写第一个Shell脚本: 变量和参数: 3. 控制结构 条件语句: 循环: 4. 函数和脚本调试 定义和调用函数: 脚本调试: 5. 高级主题 文件操作和重定向: 管道和子进程: 6. 实践和项目 小项目:持续学

m0_59789328的博客 1099
上一篇: 云在天边水在瓶
下一篇: 通俗易懂的认识 —— ’云‘ 技术
烟雨ly
博客等级 码龄9年 19粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值