Shell基础
前言:Shell 是连接用户与 Linux 内核的命令解释器Shell 脚本可整合命令实现运维工作自动化。本文系统梳理 Shell 编程基础辨析易混知识点搭建基础知识框架。目录前言:一、Shell1.1 Shell 定义1.2 Shell 常见类型1.3 shell应用场景1.4 查看 Shell 相关命令二、Shell 脚本2.1 基础概念2.2 创建脚本流程2.3 脚本四种执行方式对比2.4 脚本编写与执行案例三、 变量基础3.1 变量的引用与输出3.2 echo 命令高级用法3.3echo命令案例四、特殊变量赋值4.1 引号区别4.2 反撇号与命令替换4.3 read 交互式输入命令4.4各参数案例五、变量运算5.1 expr5.2 $[]与$(())5.3 let5.4 bc六、 变量类型与作用范围6.1 变量分类6.2 位置变量脚本传参6.3 预定义特殊变量6.4 export 变量导出控制子 Shell 可见性七、重定向与管道7.1 标准输入、标准输出与标准错误输出7.2 输出重定向7.3 输入重定向7.4 管道操作7.5 综合应用示例八、总结一、Shell1.1 Shell 定义命令解释器介于用户和内核之间具备命令翻译、输入输出管理、编程能力。命令翻译接收用户输入的指令将人类可读的命令转换为操作系统内核能够识别执行的指令充当用户与系统内核之间的翻译桥梁。输入输出管理统一管理程序标准输入、标准输出与错误输出支持重定向、管道等功能灵活控制数据流向实现信息过滤、日志保存等操作。编程具备完整程序编写能力支持变量、分支判断、循环、函数等语法可将多条命令组合成自动化脚本实现复杂运维任务批量处理。1.2 Shell 常见类型Shell 类型说明使用场景/bin/bash默认 ShellCentOS/RHEL 主流使用★Linux 系统日常、脚本开发/bin/shbash 的 “祖先”现代系统软链接指向 bash兼容老式 UNIX 脚本/bin/tcshC Shell 增强版极少使用1.3 shell应用场景自动化软件安装摒弃手动一步步下载、编译、配置、启动服务的操作编写脚本实现软件一键部署可统一配置 yum/apt 源、自动处理依赖、修改配置文件、设置开机自启实现多台服务器标准化批量安装。批量用户管理面对大量服务器账号维护工作通过脚本批量创建、删除系统用户统一设置初始密码、分配用户权限、限定登录权限与家目录快速完成账号生命周期管理大幅减少逐条操作的重复工作量。数据备份自动定时打包日志、业务重要数据支持本地备份或远程同步至备份服务器脚本内可添加备份过期清理、备份文件完整性校验、异常失败告警机制保障数据定期、可靠留存。服务器运维监控持续采集服务器 CPU、内存、磁盘、负载、端口、进程运行状态当资源占用超出阈值、服务意外停止时自动触发告警通知运维人员实现 7×24 小时无人值守基础监控。1.4 查看 Shell 相关命令cat /etc/shells # 查看系统支持的所有Shell1-1echo $SHELL # 查看当前正在使用的Shell1-2二、Shell 脚本2.1 基础概念shell 脚本 命令清单逐行执行脚本组成脚本声明解释器 注释说明 命令语句2.2 创建脚本流程创建文件 → 添加执行权限 → 检查语法 → 执行脚本2.3 脚本四种执行方式对比表格执行方式命令示例是否需要权限运行环境是否保留变量路径执行./script.sh✅ 需要子 Shell❌bash 执行bash script.sh❌ 不需要子 Shell❌source 执行source script.sh❌ 不需要当前 Shell✅重定向执行sh script.sh❌ 不需要子 Shell❌2.4 脚本编写与执行案例编写vim file.sh2-1执行1路径执行2-22bash执行2-33source 执行2-44重定向执行2-5三、 变量基础变量可以理解为数据的储物柜3.1 变量的引用与输出基本引用变量前加$符号figure classimageimg alt height75 srchttps://i-blog.csdnimg.cn/direct/63534e7c296d4492b16b19252879f1ca.png width835/3-1边界区分变量名称边界模糊时必须使用${变量名}界定3-23.2 echo 命令高级用法语法echo [选项] 内容表格参数作用示例效果-n不换行输出echo -n 第一行\n第二行-e识别转义字符echo -e 第一行\n第二行3-3常用转义符\n换行、\t制表符 (Tab)、\c不换行、\b退格、\\输出斜杠本身、\$输出 $ 符号3.3echo命令案例制作表格3-4四、特殊变量赋值特殊变量是 shell 自带只读变量存脚本 / 命令运行信息不能直接变量值修改4.1 引号区别双引号识别变量 name输出Z单引号不识别变量原样输出$name4-14.2 反撇号与命令替换反撇号把命令输出存入变量等价写法$(命令)4-24.3 read 交互式输入命令4.3.1基本用法4-34-4read 参数功能示例-p输出提示文字read -p 输入姓名 name-n限制输入字符数量read -n 3 age-s静默输入密码不回显read -s -p 密码 passwd-t设置输入超时秒数read -t 5 input4.4各参数案例read -p 输入姓名 name4-5read -n 3 age4-6read -s -p 密码 passwd4-7read -t 5 input4-8五、变量运算Shell 原生只支持整数运算浮点运算依赖bc工具,下表是一些常用的变量运算方式.运算方式特点示例expr运算符两侧必须空格* 需要转义expr $X \* $Y$[]仅计算不输出只支持整数echo $[2 * 3]$()仅计算不输出只支持整数echo $((2/3))let直接修改变量整数运算支持自增自减let num ; let numnum*2bc计算器支持浮点、乘方、开方、逻辑运算echo scale2;10/3bc5.1 exprexpr 是一款表达式计算工具它能完成表达式的求值操作。5-15.2 $[]与$(())比expr更简洁乘法不用转义5-25.3 letlet命令可以直接修改变量5-35.4 bcbc计算器——浮点运算5-4bc也可以进行逻辑运算,真返回1,假返回05-5六、 变量类型与作用范围6.1 变量分类自定义变量用户自行定义默认私有 例:name小赵figure classimageimg alt height80 isbindedloadtrue srchttps://i-blog.csdnimg.cn/direct/ea82c44a9efe4aa7b6218f2fd1159146.png width620/6-1环境变量系统预定义公共变量例变量名含义示例输出$USER当前登录用户名root$HOME当前用户家目录/root$PWD当前所在工作目录/etc / /usr/local$SHELL用户默认登录 Shell/bin/bash /$LANG系统语言编码zh_CN.UTF-8$RANDOM随机整数范围 0~3276715623$UID当前用户数字 ID0 (root) / 1000 (普通用户)只读变量readonly修饰无法修改6-26.2 位置变量脚本传参变量含义$0脚本本身名称$1-$9第 1~9 个参数$#参数总个数$*所有参数整体视为 1 段$所有参数参数相互独立6-3运行:6-4案例:创建用户脚本#!/bin/bash # 创建用户脚本 # 用法bash user.sh 用户名 密码 useradd $1 echo $2 | passwd --stdin $1执行验证:6-56.3 预定义特殊变量变量含义$?上一条命令返回状态0 成功非 0 失败$$当前进程 PID$!最后 1 个后台进程 PID测试脚本:#!/bin/bash # 测试上一条命令返回值 ls /etc /dev/null echo ls /etc 的返回值$? ls /abc /dev/null 21 echo ls /abc 的返回值$? echo echo 当前Shell进程PID$$ sleep 100 echo 后台进程PID$!执行:6-66.4 export 变量导出控制子 Shell 可见性默认变量只在当前Shell有效验证:6-7三种用法方式1先定义变量再导出name小赵export name6-8方式2定义同时直接导出export city邯郸6-9方式3取消导出子Shell无法读取该变量export -n city6-10七、重定向与管道7.1 标准输入、标准输出与标准错误输出Linux 三大基础数据流三条数据流水线文件描述符标准名称默认绑定设备核心作用说明0STDIN标准输入键盘程序读取输入数据的通道1STDOUT标准输出显示器程序正常运行结果的输出通道2STDERR标准错误输出显示器程序报错、异常信息的输出通道7.2输出重定向 覆盖把输出保存到文件覆盖原有内容 追加把输出追加到文件末尾7-17.3 输入重定向从文件读取cat file.txt 等价于cat file.txt# 输出到文件cat EOF file.txt这里自己写内容EOF7-27.4 管道操作管道把多个命令串联起常见的几个管道命令命令功能示例grep过滤cat file.txt | grep 4sort排序cat file.txt | sortuniq去重 / 统计cat file.txt | uniq -cwc统计行 / 字 / 字符cat file.txt | wc -lcut提取列cat file.txt | cut -d: -f1示例:7-37.5综合应用示例1自动化备份脚本7-42服务器健康检查脚本7-53批量用户管理7-6八、总结本文系统梳理 Shell 编程基础完整覆盖 Shell 基础定义、脚本运行、变量、运算、重定向与管道核心内容。Shell 是用户与 Linux 内核的命令解释器主流为 /bin/bash可通过 cat /etc/shells、echo $SHELL 查看系统支持及当前使用的 Shell。Shell 脚本有四种执行方式核心差异在于是否需要执行权限、运行环境及变量是否保留。变量是 Shell 核心引用用 $ 变量名边界模糊用 ${变量名}echo -n 不换行-e 识别转义字符。双引号识别变量单引号原样输出命令替换用反撇号或 $(命令)可存储命令执行结果。Shell 变量运算expr 需注意空格和转义\([]、\)(())、let 仅支持整数浮点运算依赖 bc。变量分自定义、环境、只读三类位置变量用于传参export 可控制变量在子 Shell 的可见性。Linux 有 0、1、2 三条标准数据流重定向用 覆盖、追加/dev/null 可丢弃输出。管道符 | 串联命令常用管道命令有 grep、sort 等可实现复杂文本处理。

相关新闻

Injector高级技巧:批量注入/卸载DLL、静默模式与错误处理最佳实践

Injector高级技巧:批量注入/卸载DLL、静默模式与错误处理最佳实践

Injector高级技巧:批量注入/卸载DLL、静默模式与错误处理最佳实践 【免费下载链接】Injector Command line utility to inject and eject DLLs 项目地址: https://gitcode.com/gh_mirrors/injec/Injector Injector是一款强大的命令行工具,专为Win…

2026/10/11 4:44:45 阅读更多 →
Cursor脚手架安全审计报告(CVE-2024-XXXXX预警):3类高危依赖链漏洞+自动化扫描方案(仅限内部技术圈流通版)

Cursor脚手架安全审计报告(CVE-2024-XXXXX预警):3类高危依赖链漏洞+自动化扫描方案(仅限内部技术圈流通版)

更多请点击: https://kaifayun.com 第一章:Cursor脚手架安全审计报告(CVE-2024-XXXXX预警)概述 Cursor 作为基于 VS Code 的 AI 增强开发环境,其内置脚手架工具(如 cursor create 和模板注入机制&#xf…

2026/10/1 4:27:42 阅读更多 →
跨服务器间的sqlserver数据库- 表数据同步

跨服务器间的sqlserver数据库- 表数据同步

一 、创建只读取账号1、数据库的服务器必须设置为 SQL Server 和 Windows 身份验证模式2、服务器└─ 安全性└─ 登录名 -----新建登录名 如图:例如登录名: sync_user身份验证: SQL Server 身份验证密码: ********取消&#x…

2026/10/9 4:23:49 阅读更多 →

最新新闻

如何一键把微信聊天记录完整导出来:WeChatMsg 5分钟上手

如何一键把微信聊天记录完整导出来:WeChatMsg 5分钟上手

如何一键把微信聊天记录完整导出来:WeChatMsg 5分钟上手 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeC…

2026/10/11 4:44:21 阅读更多 →
Ollama本地大模型部署全指南:原理、硬件需求与实操避坑

Ollama本地大模型部署全指南:原理、硬件需求与实操避坑

最近我在技术群里看到有人问:Ollama到底是什么?为什么大家都在讨论它?紧接着就有人追问“32G内存能跑70B模型吗”“下载到一半失败了怎么办”。说实话,这些问题是每一个刚开始碰本地大模型的人都会遇到的。Ollama本身是一个把大语…

2026/10/11 4:44:21 阅读更多 →
AI智能分镜全流程拆解:从脚本解析到角色一致性控制

AI智能分镜全流程拆解:从脚本解析到角色一致性控制

最近跟几个做短剧和商业片的朋友聊天,发现大家不约而同在折腾同一件事——AI智能分镜。以前写脚本是一回事,画分镜是另一回事,一个本子丢给分镜师,排期三五天起步,改一版再等两三天,整个项目的时间全耗在这…

2026/10/11 4:44:21 阅读更多 →
测试之测试用例篇

测试之测试用例篇

目录 一.测试用例 1.介绍 2.测试用例的一般设计思路 1>:设计测试的"万能公式" 2>:弱⽹测试 3>:下载安装测试 3.设计测试⽤例的方法 1>:基于需求的设计⽅法 2>:等价类 3>:边界值 4>:错误猜测法 5>:正交法(重) 6>:判定表法(重…

2026/10/11 4:44:21 阅读更多 →
中级开发者AI能力升级路线图:从API调用到RAG与工作流实战

中级开发者AI能力升级路线图:从API调用到RAG与工作流实战

1. 为什么中级开发者需要一份AI能力升级路线图做了三五年开发的朋友,大概都有这种感受:业务代码写得越来越顺手,CRUD、接口联调、性能调优这些事闭着眼都能干,但心里总有点不踏实。不踏实的地方在于,身边突然冒出来一堆…

2026/10/11 4:44:21 阅读更多 →
Makefile核心魔法:目标、依赖与时间戳,实现增量构建

Makefile核心魔法:目标、依赖与时间戳,实现增量构建

我先说个真事儿:之前我维护一份项目代码,光是编译命令就有一长串,每次改完代码都要在终端里翻历史记录找出那条gcc。后来有同事嫌麻烦,干脆写了个shell脚本,把所有目标文件删掉再重新编译,美其名曰“每次构…

2026/10/11 4:43:21 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →