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。欢迎关注留言交流。

相关新闻

115网盘技术架构解析:150元2年VIP的分布式存储性价比

115网盘技术架构解析:150元2年VIP的分布式存储性价比

618大促即将结束,115网盘推出的150元锁定2年VIP会员活动引发广泛关注。作为技术从业者,我们更关心的是:在云存储服务层出不穷的今天,115网盘的技术架构是否值得信赖?长期订阅是否真的划算?今天我们就从技术…

2026/10/12 17:30:35 阅读更多 →
SmartRF04DK开发套件全解析:从射频测试到嵌入式编程实战

SmartRF04DK开发套件全解析:从射频测试到嵌入式编程实战

1. 从零上手:SmartRF04DK开发套件全解析如果你正在涉足低功耗无线通信领域,尤其是基于德州仪器(TI)CC1110或CC2510这类高度集成的射频片上系统(RF SoC),那么一块功能齐全、上手即用的开发套件无…

2026/10/10 16:44:33 阅读更多 →
别再踩坑!Pydantic v2 description 中文全角括号引发的诡异编译报错(完整根因)

别再踩坑!Pydantic v2 description 中文全角括号引发的诡异编译报错(完整根因)

【导航台账】制造数据与AI践行者老蒋的技术博客全系列文章汇总(持续更新) 文章摘要 在PyCharm中编写Pydantic模型时,Field(description"查询产线排班(白班/夜班)")中的中文全角括号(&#xff09…

2026/9/26 12:16:21 阅读更多 →

最新新闻

老鼠试毒问题:二进制编码与信息论在工程排查中的应用

老鼠试毒问题:二进制编码与信息论在工程排查中的应用

1. 从一道经典题说起:老鼠试毒到底在考什么第一次听到“老鼠试毒”这个说法,很多人脑子里浮现的画面可能是几只小白鼠围着一堆颜色可疑的液体转圈。但如果我告诉你,这个看似简单的场景背后,藏着一套从二进制编码到信息论、从算法面…

2026/10/12 17:56:24 阅读更多 →
基于Matlab的PUF建模攻击评估:逻辑回归与CRP特征工程实战

基于Matlab的PUF建模攻击评估:逻辑回归与CRP特征工程实战

简介:DA PUF库(Defense/Attack PUF Library)是一套面向硬件安全与物理不可克隆函数研究者的开源代码集合,由Durga Prasad Sahoo等学者发布,针对仲裁器PUF、异或仲裁器PUF及Interpose PUF的模拟与攻击场景。资源共765个…

2026/10/12 17:56:24 阅读更多 →
医院HIS源码二次开发实战:核心表结构、业务闭环与避坑指南

医院HIS源码二次开发实战:核心表结构、业务闭环与避坑指南

简介:这是一套基于SpringBoot、Jpa与Thymeleaf构建的Java医院信息管理系统(HIS)源码,面向中小型医疗机构信息化建设者及希望深入理解主流Java Web技术栈的开发者。系统整合患者管理、医生排班、科室协作、药品库存、财务收支、预约…

2026/10/12 17:56:24 阅读更多 →
AI赋能网络安全实战:用异常检测和告警降噪捞出真实威胁

AI赋能网络安全实战:用异常检测和告警降噪捞出真实威胁

简介:这是一部聚焦人工智能与网络安全交叉领域的实战型PDF电子书,面向网络安全工程师、AI开发者及安全运维人员,系统讲解如何利用机器学习构建智能防御体系。全书围绕恶意软件检测、网络异常识别、用户认证安全等核心场景展开,系统…

2026/10/12 17:56:24 阅读更多 →
DeepSeek R1本地部署实战:Ollama+Cherry Studio搭建私有知识库

DeepSeek R1本地部署实战:Ollama+Cherry Studio搭建私有知识库

简介:适合有一定技术背景、希望在本地环境运行大模型或落地私有知识库的开发者和运维人员。教程围绕DeepSeek本地部署与知识库整合展开,覆盖从Ollama安装、DeepSeek R1各版本模型(1.5b至70b)选型与命令执行,到通过Chat…

2026/10/12 17:56:24 阅读更多 →
JSTL 标签库实战:从脚本片段到标签封装的核心技巧

JSTL 标签库实战:从脚本片段到标签封装的核心技巧

1. 从脚本片段到标签封装&#xff1a;JSTL 到底解决了什么问题很多人第一次接触 JSTL&#xff0c;是在维护一个老项目的时候。打开 JSP 文件&#xff0c;满屏的<% for(...) { %>、<% if(...) { %>和<% request.getAttribute("xxx") %>&#xff0c;…

2026/10/12 17:55:23 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天&#xff0c;画面可以做到绝对的锐利、平滑与无瑕。然而&#xff0c;当一张秋日手账插画或拍立得照片过于“平整无瑕”时&#xff0c;往往会散发出一种冰冷生硬的“数码塑料感&#xff08;Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中&#xff0c;横排&#xff08;Horizontal Layout&#xff09;早已经成为了绝对的主流。然而&#xff0c;当我们翻开泛黄的线装古籍、宋版木刻诗集&#xff0c;或是欣赏一张茶道雅集的手写便签时&#xff0c;那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点&#xff0c;很多人心里都会悄悄亮起一盏警示灯。 在心理学上&#xff0c;这种现象有一个专门的称谓——“周日夜晚焦虑症&#xff08;Sunday Scaries&#xff09;”。明天又是周一&#xff0c;闹钟又要重新在七点响彻卧房&#xff1b;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 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/11 10:45:37 阅读更多 →
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/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练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/11 14:36:54 阅读更多 →