当前位置: 首页 > news >正文

Linux Shell 脚本零基础实操笔记

一、前言

本文整合Shell脚本入门全部核心知识点,全程基于Xshell连接Linux虚拟机实操,完整记录概念、命令、参数、运行结果与报错解决方案,搭建完整的Shell学习知识体系,所有代码均可直接复制复现。

二、整体知识框架总述

本次学习一共七大核心内容:Shell脚本文件概念、vim脚本编辑操作、chmod文件权限控制、脚本三种运行方式、Shell变量使用、wc文件统计命令、数学运算实现方案、命令退出状态码$?。下文每个模块会分别讲解概念、命令用途、核心参数、实操代码与运行效果。

三、分模块知识点与Xshell实操演示

模块1:Shell脚本基础与vim编辑器操作

  1. 概念理解
    后缀为.sh的文件称为Shell脚本,作用是批量存放多条Linux命令,Shell会从上到下按顺序自动执行文件内所有指令。脚本第一行必须固定填写#!/bin/bash,用来指定解析脚本的解释器。
  2. 核心命令与操作说明
    创建、打开、编辑脚本使用vim工具,基础创建命令:
vimtest.sh

执行这条命令时,如果当前目录不存在test.sh,会自动新建空白脚本文件;如果文件已存在,则直接打开原有文件。
vim分为两种工作模式,完整操作流程:
① 打开文件后按下键盘i,进入插入编辑模式,此时可以自由输入脚本代码;
② 代码编写完成后按下Esc键,退出编辑模式,切换为命令模式;
③ 输入英文半角冒号:,再追加对应指令实现保存、退出:
:wq:保存本次所有修改,退出vim返回终端;
:q:文件无修改时,直接退出编辑器;
:q!:强制退出,丢弃本次所有编辑内容,不保存修改。
3. 实操完整测试脚本
在vim编辑模式下输入以下代码,作为基础测试脚本:

#!/bin/bash# 读取系统环境变量echo"当前用户:$USER"# 自定义局部数字变量a=10b=5# 双圆括号整数数学运算echo"加法结果:$((a+b))"# $0代表当前脚本文件本身,统计脚本总行数wc-l$0

模块2:chmod 修改脚本执行权限

  1. 概念理解
    Linux系统中新创建的文件默认不具备执行权限,直接用./脚本名的方式运行会报错,需要通过chmod命令给文件添加执行权限。
  2. 命令用途与核心参数
    命令基础格式:chmod 参数 目标文件名
    核心参数说明:
    +x:给文件增加可执行权限,本次实操核心参数;
    -x:移除文件已有的执行权限。
    实操权限修改命令:
chmod+x test.sh

命令执行后无任何输出,代表权限修改成功;如果提示No such file or directory,代表当前目录不存在对应脚本文件,需要先用vim创建文件。

模块3:三种运行Shell脚本的方式

  1. 概念理解
    脚本添加执行权限后有推荐运行方式,同时存在两种无需执行权限即可运行的兼容方式。
  2. 实操命令与区别说明
    ./test.sh:推荐运行方式,必须提前执行chmod +x添加执行权限,代表执行当前目录下的test.sh文件;
    bash test.sh:不需要提前赋予执行权限,直接调用bash解释器读取并运行脚本;
    sh test.sh:兼容老旧shell解释器,同样不需要文件具备执行权限。
  3. 脚本运行输出示例
    执行./test.sh后,终端打印内容如下:
当前用户:sui 加法结果:15 7 ./test.sh

最后一行数字代表脚本文件的总行数。

模块4:Shell变量使用规则

  1. 概念理解
    统一使用符号$引用变量,变量分为两类:系统内置环境变量、脚本自定义局部变量。
  2. 实操使用说明
    ① 环境变量:系统提前预设,直接使用$变量名读取,例如$USER代表当前登录用户名,$HOME代表用户家目录;
    ② 自定义变量:赋值格式为变量名=值等号左右两侧绝对不能添加空格,读取时同样使用$变量名
    变量实操示例代码:
name="sui"num=10echo$nameecho$num

模块5:wc 文件统计命令

  1. 概念理解
    wc全称word count,专门用于统计文件内容信息,本次学习核心用途为统计文件行数。
  2. 核心参数用法
    -l:统计文件总行数,本章节重点参数;
    -w:统计文件内单词总数量;
    -c:统计文件全部字符总数。
    基础统计实操命令:
wc-ltest.sh

默认输出格式为「行数 文件名」,如果只想获取纯数字行数,搭配管道过滤输出:

wc-ltest.sh|awk'{print $1}'

模块6:Shell数学运算四种实现方案

  1. 概念区分
    expr$[]$(( ))三种写法仅支持整数运算,除法会直接舍弃小数部分;bc工具支持高精度小数运算,可通过scale关键字自定义保留小数位数。本次课堂练习题使用$(( ))完成整数嵌套计算,bc实现小数除法。
  2. 课堂练习题完整实操代码
    需要计算两组式子:100*(50-45)、100/52
# $(( )) 整数嵌套运算res1=$((100*(50-45)))echo"100*(50-45) =$res1"# bc小数运算,设置保留4位小数res2=$(echo"scale=4; 100/52"|bc)echo"100/52 =$res2"
  1. 运算输出结果
100*(50-45) = 500 100/52 = 1.9230

模块7:命令退出状态码 $?

  1. 概念理解
    终端中每一条命令执行完毕后,系统都会生成对应的退出状态码,通过$?可以读取上一条命令的执行结果:数字0代表命令执行成功,非0数字代表执行出错,不同数字对应不同错误类型。
  2. 实操演示代码
# 执行正确命令lsecho$?# 输出0,代表命令执行成功# 执行不存在的错误命令abcdecho$?# 输出非0数字,代表命令执行失败

四、实操高频报错解决方案

  1. chmod: cannot access ‘test.sh’: No such file or directory
    报错原因:当前目录未创建test.sh脚本文件;解决方法:执行vim test.sh创建文件后,再修改权限。
  2. -bash: ./test.sh: 没有那个文件或目录
    报错原因:缺少目标脚本文件,或文件名大小写输入错误(Linux系统区分文件名大小写);解决方法:执行ls查看当前目录存在的文件,核对文件名。
  3. vim编辑器内无法输入:wq退出
    报错原因:仍处于插入编辑模式,未切换到命令模式;解决方法:按下一次Esc退出编辑模式,再输入英文冒号加保存退出指令;如果编辑器卡死,使用快捷键Ctrl+Z挂起vim,输入kill %强制关闭vim进程。

五、学习总结

  1. Shell脚本后缀统一为.sh,使用vim编写,脚本首行必须声明#!/bin/bash指定解释器;
  2. 所有变量统一使用$符号读取,自定义变量赋值时等号两侧禁止添加空格;
  3. wc -l是统计文件行数专用命令,$(( ))适合快速书写整数运算,bc工具用于处理带小数的计算;
  4. chmod +x可以给脚本添加执行权限,脚本一共有三种运行方式;
  5. $?可以查看上一条命令执行状态,返回0代表成功,非0代表执行失败;
  6. 全部操作均在Xshell中完成,操作命令前建议用ls确认文件是否存在,规避文件不存在类报错。
http://www.jsqmd.com/news/1162404/

相关文章:

  • sVim链接提示功能详解:如何快速打开网页链接
  • 零基础转行 IT,前后端测试运维四大方向入门路线建议
  • STM32F429与AD7490高精度数据采集系统设计
  • 2026,手机证件照背景颜色选择指南,白底红底蓝底区别与各类证件适用标准
  • 如何调试 @hapi/lab 测试:使用 inspect 和调试工具的完整指南
  • A3910与PIC18F86J55在BLDC电机控制中的硬件与算法实现
  • 公共安全教育主题展厅设备【食品安全知识学习系统】
  • 深圳坪山出手钻石必看,证书齐全对钻石回收价格影响多大 - ys韩
  • RK3506 外设收官:音频点亮
  • 2026年7月最新大连四家全屋定制厂家汇总,飞美高定全屋定制德系4.0智能工厂+权威认证环保实力领先 - 米諾
  • beatoraja配置文件详解:个性化你的游戏设置
  • dedao-dl Web UI使用指南:图形化界面的完整操作手册
  • Support App扩展脚本开发教程:创建自定义诊断工具
  • VIA键盘定义库终极指南:高级用户必读的复杂布局和特殊键位处理技巧
  • VRCX终极指南:如何通过开源工具重新定义你的VRChat社交体验
  • A3910与PIC18F25K50电机控制方案实战解析
  • Doki Theme贴纸系统深度解析:可移动贴纸、自定义图片和尺寸限制
  • 佛山不锈钢加工厂金利恒旺:装饰金属选材痛点与厂商选型指南 - 百航
  • Edyn高级功能探索:异步执行、状态同步与自定义约束实现
  • 2026 哈尔滨道里闲置爱马仕、香奈儿、劳力士如何高效变现?5 家正规回收平台全解析 - 逸程奢侈品回收中心
  • CloudExplorer Lite技术架构深度解析:Spring Boot + Vue3微服务实践
  • 如何用Seq2Seq-PyTorch实现文本摘要?summarization.py模块实战指南
  • A3910与PIC32MX460F512L在电机控制中的高效应用
  • committia.vim性能优化:让你的Vim提交更快更稳定
  • 【Springboot毕设全套源码+文档】基于SpringBoot的高校餐饮档口管理系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • QuACK快速上手:10分钟掌握CuTe-DSL高性能内核开发 [特殊字符]
  • STM32F303RC与A3910电机控制开发实战指南
  • 2026针灸治疗亚健康选型指南:长沙地区代表性机构解析
  • Mermaid在线编辑器终极指南:5分钟创建专业级技术图表
  • Fast-Ansible主机变量:实现多环境配置管理的核心技巧