Linux操作系统-shell编程之基础命令
一、SHELL简介Linux Shell种类非常多常见的SHELL如下Bourne Shell/usr/bin/sh或/bin/shBourne Again Shell/bin/bashC Shell/usr/bin/cshK Shell/usr/bin/kshShell for Root/sbin/sh不同的Shell语言的语法有所不同最常用的shell是Bash也就是Bourne Again Shell。我们为什么需要shell呢用户需要操作硬件硬件是通过内核驱动的但用户是不能操作内核的这时shell就起到一个用户和内核之间沟通的桥梁作用。用户可以输入shell命令执行又可以利用 Shell脚本编程去运行。Bash架构二、命令类型在Linux系统中命令可以分为两类内建命令Built-in Commands和外部命令External Commands。内建命令是由shell本身提供的而外部命令则是独立的程序通常存储在文件系统的某个目录下比如/bin、/usr/bin等。内建命令的执行速度通常比外部命令快因为它们不需要加载独立的程序。type: 查询是否为内建命令示例:type [指令]三、变量定义在 Linux Shell 中变量的本质是字符串。定义变量时等号两边不能有空格引用变量时需要在变量名前加上$符号。varname变量的规则变量与变量内容之间用连接且两边不能有空格数字不能作为变量名的开头变量内容若有空格可使用双引号或单引号将变量的内容连接起来。双引号内的特殊字符保留原有特性单引号内的特殊字符仅为普通字符可用跳脱字符\将特殊字符变成一般字符执行指令中借由其他指令提供信息时可用扩增变量内容时可用$变量名称累加内容或${变量名称}累加内容需要在其他子程序中执行export 变量名称将变量变成环境变量通常大写为系统变量小写为自定义变量取消变量unset 变量名称四、变量读取可以通过如下命令获取变量值。echo $变量名或echo ${变量名}五、变量类型Shell 变量根据其作用域和来源主要可分为四大类自定义变量、环境变量、位置变量和特殊变量。自定义变量由用户自行定义仅在当前 Shell 会话中有效子进程无法继承。定义时直接使用varvalue格式赋值。环境变量全局有效当前进程及其子进程均可访问。通过export varvalue设置常见的有PATH、HOME、USER等。位置变量在脚本传参时自动接收以$1、$2…$n形式表示其中$0为脚本名$#为参数个数。特殊变量由 Shell 内置不可手动赋值例如$$当前进程 PID、$?上一条命令的退出状态、$*和$所有参数。1、环境变量常用的环境变量有PATH、HOME、USER、PS1等PS1: 提示字符的设定\d 日期\H 完整主机名\h 主机名第一段\t 24小时时分秒\T 12小时时分秒\A 24小时时分\ 12小时am/pm\u 用户\V bash版本\w 完整工作目录\W 工作目录\# 第几条指令\$ 提示字符HOME: 用户的家目录PATH: 命令的查找路径从前往后查找如果没有找到输出“command not found”USER: 当前用户2、特殊变量$: 本shell的PID?: 上一个命令执行的回传值export: 环境变量示例:export 变量名称如上图echo $? #上一条命令的执行结果成功显示0非0则表示失败echo $$ #表示本shell的进程号varname #定义了一个变量export var #转换成一个环境变量bash #创建了一个子shell然后在子shell中可以获取到父shell的变量var的值因为在父shell中var被转换成了环境变量是用env可以查看环境变量。3、位置变量在执行脚本时通常使用./shell.sh name age score的形式命令执行脚本。$0: 表示脚本名称shell.sh$1:表示脚本执行的第一个参数$2:表示脚本执行的第二个参数。。。。。。$#表示为参数个数$: 表示所有参数每个参数是独立的$*: 表示所有参数所有参数作为一个整体。六、变量的输入、数组和声明read [-pt] variable示例:read -p please enter yes/no: -t 30 test-p: 给出提示信息-t: 设置超时时间declare:declare [-aixr] variable示例:declare -i sum1005050echo ${sum}数组:Var[index]content示例:var[0]aavar[1]bbvar[2]ccecho ${var[0]},${var[1]},${var[2]}七、语系设定‌Linux locale 就是系统用来决定显示什么语言、怎么排日期数字的一套规则‌。如果没有设置合适的编码可能会导致显示乱码问题。locale -alocaleLANGen_US.UTF-8LC_ALLen_US.UTF-8八、命令别名与历史命令alias, unalias:alias 别名命令 选项 #设置命令别名unalias 别名 #取消别名设定历史命令history [n]history [-c]history [-raw] histfiles!number#执行第多少条命令!command#执行包含command的命令!!#执行上一条命令九、Bash欢迎信息/etc/issue:\d: 本地端的日期\l: 第几个终端\m: 显示硬件的等级\n: 显示主机名称\O: 显示domain name\r: 作业系统的版本\t: 本地端时间\S: 作业系统名称\v: 作业系统版本/etc/motd:登陆后的提示信息十、Bash快捷键CtrlD #在空行时退出 ShellCtrlM #回车键EnterCtrlA #移动到命令行首CtrlE #移动到命令末尾CtrlU #冲当前光标位置删到行首CtrlK #从当前光标位置删到行尾十一、通配符*: 0到无穷个任意字符?: 匹配1个字符[]: 匹配括号内的一个字符[-]: 匹配范围内的一个字符[^ ]: 匹配非括号内的一个字符#: 注释\: 转义字符|: 管道符;: 连续下达多条命令~: 家目录$: 变量读取: 进程变成后台运行!: 逻辑运算非/: 目录符号, : 输出表示覆盖表示追加, : 输入: 单引号内为纯文字: 双引号内可有变量功能: 先执行命令(): 子shell起始与结束的组合{}: 中间为命令区块的组合十二、重定向, # 输出重定向表示覆盖表示追加。, # 输入重定向 将‌现有文件的内容‌作为命令的标准输入stdin替代键盘输入; 在命令行中直接定义‌多行文本块‌作为命令的输入直到遇到指定的结束标记如EOF。2, 2 #2‌覆盖模式将命令执行产生的‌错误信息‌重定向到指定文件。如果文件已存在会‌清空原内容并覆盖‌如果文件不存在则创建新文件;2‌追加模式将命令执行产生的‌错误信息‌重定向到指定文件的‌末尾‌。如果文件已存在内容会‌累加‌而不覆盖如果文件不存在则创建新文件。实例十三、连续执行多条命令;: 连续下达多条指令: 前一条指令执行成功才能执行后一条指令||: 前一条指令没有执行成功才能执行后一条指令十四、管道命令|: 前一个命令的输出作为后面命令的输入十五、截取命令cut -d 分隔字符 -f fields filename-d指定分割符号-f指定需要选取的字段十六、排序命令sort命令用于对文本文件内容进行排序-r逆序排序降序。-n按数值进行排序。-k 字段按指定的字段进行排序。该参数可指定多个字段使用逗号分隔。默认字段分隔符为制表符或空格。-t 分隔符指定字段的分隔符。-u去除重复行仅保留第一次出现的行。-f忽略大小写进行排序。-b忽略行首的空白字符进行排序。-c检查文件是否已经排好序如果未排序则输出第一个不符合排序顺序的行。-f忽略大小写进行排序。例如sort -f file.txt 将忽略行首字母的大小写进行排序。-b忽略行首的空白字符进行排序。-c检查文件是否已经排好序如果未排序则输出第一个不符合排序顺序的行。uniq是Linux中专门用来处理重复行的命令-c在每行前面添加该行在文件中出现的次数-d仅显示有重复的行-u仅显示没有重复的行-i在比较行时忽略字符大小写。wc命令用于统计文件中的字节数、字数、行数等-l:选项表示只统计行数-w:统计单词数-c:统计字节数举例统计地址列表中重复次数最多的前10个地址十七、其他命令双向重定向:tee -a file输出到文件和屏幕字符转换命令: tr/col/join/paste/expand分割命令: split本节介绍了一些shell命令的用法是shell编程的基础下一节将介绍shell文本处理“四剑客”grep、sed、awk、find。欢迎关注留言交流。

相关新闻

基于CC1110/CC1111的无线麦克风系统:从硬件设计到软件实现的完整指南

基于CC1110/CC1111的无线麦克风系统:从硬件设计到软件实现的完整指南

1. 项目概述与核心价值如果你正在寻找一种方案,将传统的有线麦克风升级为无线设备,或者想为你的嵌入式项目添加一个稳定、低延迟的无线音频输入接口,那么基于CC1110/CC1111 SoC的方案绝对值得你深入研究。这个项目不是一个简单的概念验证&…

2026/7/26 23:38:21阅读更多 →
AI辅助编程实践:如何高效集成生成代码并保证质量

AI辅助编程实践:如何高效集成生成代码并保证质量

1. 为什么“AI 生成的内容不算我做的”会成为程序员的真实困扰这个问题最近在技术社区里被反复提起,不是因为它新鲜,而是因为它戳中了很多人的实际工作状态。表面看是版权或伦理争论,但背后其实是每个用 AI 辅助编码的人每天都要面对的选择&a…

2026/7/26 23:38:21阅读更多 →
智能体架构设计:从模型到系统的工程实践

智能体架构设计:从模型到系统的工程实践

1. 为什么模型强不等于智能体好?刚入行AI应用开发时,我和很多人一样迷信"模型越大效果越好",直到用GPT-4做了一个客服机器人——响应慢、成本高、还经常答非所问。后来才发现,就像给跑车装卡车发动机,模型再…

2026/7/26 23:38:21阅读更多 →
[论文学习]ToolEmu:用语言模型模拟沙盒识别语言模型智能体的风险

[论文学习]ToolEmu:用语言模型模拟沙盒识别语言模型智能体的风险

ToolEmu: Identifying the Risks of LM Agents with an LM-Emulated Sandbox (ICLR 2024 Spotlight)📄 论文重点 ToolEmu 提出了一种用大语言模型(LM)来模拟工具执行环境的全新框架,使得对 LM 智能体(Agent&#xff09…

2026/7/27 1:04:37阅读更多 →
万字长文读不完也找不到:大模型长文本阅读器的分段摘要与导航设计

万字长文读不完也找不到:大模型长文本阅读器的分段摘要与导航设计

万字长文读不完也找不到:大模型长文本阅读器的分段摘要与导航设计 一、万字长文与「读不完」:大模型输出阅读体验的真实痛点 去年给一个研报类产品做诊断,用户反馈集中在一条:「AI 写得是好,但我看不完」。后台埋点更直…

2026/7/27 1:04:37阅读更多 →
[论文学习]Agent Security Bench (ASB):形式化与基准测试LLM智能体的攻防体系

[论文学习]Agent Security Bench (ASB):形式化与基准测试LLM智能体的攻防体系

Agent Security Bench (ASB): Formalizing and Benchmarking Attacks and Defenses in LLM-based Agents 论文重点 LLM-based Agent(基于大语言模型的智能体)在调用外部工具和记忆机制解决复杂任务的同时,也引入了严重的安全隐患,…

2026/7/27 1:04:37阅读更多 →
Java:数据类型全景详解(完整版多表格对照)

Java:数据类型全景详解(完整版多表格对照)

数据类型是Java语言的核心基石,Java作为强类型语言,要求所有变量必须明确声明数据类型,系统会根据类型分配内存、校验数据合法性、控制运算规则。Java数据类型整体分为两大体系:基本数据类型(原生类型)和引…

2026/7/27 1:04:37阅读更多 →
手撕深度学习:矩阵求导链式法则与矩阵乘法反向传播公式,深度学习进阶必备!

手撕深度学习:矩阵求导链式法则与矩阵乘法反向传播公式,深度学习进阶必备!

手撕深度学习:矩阵求导链式法则与矩阵乘法反向传播公式,深度学习进阶必备! 深度学习看似神秘,但核心其实只是数学和代码的优雅结合。尤其是反向传播(Backpropagation),它是训练神经网络的引擎。…

2026/7/27 1:04:37阅读更多 →
BES-ELM优化算法在工业预测中的实践与性能提升

BES-ELM优化算法在工业预测中的实践与性能提升

1. 项目概述在工程预测和数据分析领域,多输入单输出(MISO)系统的建模一直是个经典难题。传统方法要么计算复杂度太高,要么容易陷入局部最优解。最近我在一个工业设备寿命预测项目中,尝试将秃鹰搜索算法(BES…

2026/7/27 1:02:37阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

1. 项目概述:从寄存器手册到实战指南 如果你手头有一份类似德州仪器(TI)TMS320x240xA系列DSP的SPI模块技术手册,看着里面密密麻麻的寄存器位定义、时序图和公式,是不是感觉头大?这份资料虽然权威&#xff0…

2026/7/27 0:00:24阅读更多 →
【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:24阅读更多 →
2007-2023年各市区县生态文明建设示范区DID

2007-2023年各市区县生态文明建设示范区DID

数据简介 自改革开放以来,我国依赖高投入、高资源消耗和高污染等传统发展模式实现了经济短期内的快速增长, 然而这也导致了严重的生态环境危机。因此,国家有力于推动企业高质量经济发展,协同生态保护的方针,从而从201…

2026/7/27 0:00:24阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/25 23:03:25阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/26 19:05:21阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/26 19:05:21阅读更多 →