只要能够操作应用程序的接口都能称为shell。狭义的shell指的是命令行方面的软件,包括bash。广义的shell则包括图形界面软件,因为图形界面其实也可以操作各种应用程序来调用内核工作,不过,在这里我们主要指的是bash。
# type [-tpa] command –> 查看命令是否为bash的内置命令或者是外部命令
* 利用$var或者是${var}可获取变量var的值
* bash中的双引号:特殊字符如$等,可以保有原本的特性
* bash中的单引号:所有的字符均为普通的字符,没有其他含义
* 可以用\将特殊字符变成一般字符
* 可用$(其他命令)来在命令中嵌套其他命令的返回值,也就是说:${var}取得变量var的值,$(command)取得命令返回值
* 若变量需要在其他子进程中执行,需要export var 来使变量成为环境变量
* unset var 可取消变量var的定义
====环境变量====
# env –> 查看当前系统的环境变量
$本身也是一个变量,表示本shell的PID号,比如 # echo $$ 输出本shell的PID
?本事也是一个变量,表示上一个执行的命令的返回值,一般如果是0表示执行成功,如果非0表示有问题。
公共的语系编码设置:/etc/sysconfig/i18n
# read [-pt] variable –> 键盘读取变量输入值
-p:后面可以跟提示符
-t:后面可以接等待的秒数,不会一直等待用户输入
====变量的声明====
# declare [-aixrp] var
-a:将后面的var定义为数组类型
-i:将后面的var定义为integer整数类型
-x:用法与export一样,就是将后面的var变成环境变量
-r:将变量var设置成readonly状态,该变量不能被更改,也不能重设
-p:单独列出变量的类型
如果把-改成+表示取消操作
====限制用户的计算机资源使用====
# ulimit [-SHacdfltu] [配额]
-H:hardlimit,严格的限制,必定不能超过这个数值
-S:softlimit,可以超过这个值,但有警告信息
-a:后面不接任何参数,列出所有的限制额度
-c:某些进程发生错误的时候,系统会将该进程在内存中的信息写成文件,称为内核文件。限制每个内核文件的最大容量
-f:此shell可创建的最大单一文件容量,单位为KB
-d:进程可以使用的最大内存量
-l:可用于lock的内存量
-t:最大的CPU时间(单位为秒)
-u:单一用户可使用的最大进程(process)数量
====变量内容的删除与替换====
# echo ${path#/*:} –> 删除path变量中最前面的那个以/开头,以:结尾的
# echo ${path##/*:} –> 删除最长的那个,也就是说只保留了最后的一个路径
# –> 符合替换文字的最短的那个
## –> 符合替换文字的最长的那个
如果想从后面开始删,用%替换#即可
接下来讲替换功能:
# echo ${path/sbin/SBIN} –> 将第一个sbin替换成SBIN
# echo ${path//sbin/SBIN} –> 将所有的sbin替换成SBIN
我们将这部分总结说明下一下:
变量设定方式 | 说明 |
${变量#关键字} ${变量##关键字} |
若变量內容从头开始的数据符合『关键字』,则将符合的最短数据删除 若变量內容从头开始的数据符合『关键词』,则将符合的最长数据删除 |
${变量%关键字} ${变量%%关键字} |
若变量內容从尾向前的数据符合『关键字』,则将符合的最短资料删除 若变量內容從尾向前的数据符合『关键字』,则将符合的最長资料删除 |
${变量/旧字串/新字串} ${变量//旧字串/新字串} |
若变量內容符合『旧字串』則『第一個旧字串会被新字串取代』 若变量內容符合『旧字串』則『全部的旧字串会被新字串取代』 |
# username=${username:-root} –> 如果username非空就取原值,如果没有设置或者为空字符串就设置成root
====bash登录界面与登录成功后的欢迎界面====
tips:最好是单一bash登陆,然后利用job control来切换不同的工作,这样的话shell的history才能完全保存下来
命令的执行搜索路径顺序:先alias,再builtin,再$PATH
bash的登陆界面配置文件:/etc/issue,远处登陆界面配置文件:/etc/issue.net
命令# man mingetty查看issue中各个代码的意义
登陆成功后显示的信息配置文件:/etc/motd
====bash环境变量====
login shell的配置文件:
/etc/profile:系统全局配置文件,最好不要修改这个文件
~/.bash_profile或者~/.bash_login或者~/.profile:用户自定义bash配置文件
~/.bashrc,这个配置文件login shell和non-login shell都会读取
====bash中的通配符和特殊字符====
符号 | 意义 |
* | 代表『 0 个到无穷多个』任意字符 |
? | 代表『一定有一个』任意字元 |
[ ] | 同样代表『一定有一个在括号內』的字元(非任意字元)。例如 [abcd] 代表『一定有一个字元, 可能是 a, b, c, d 这四个任何一个』 |
[ - ] | 若有减号在中括号内时,代表『在编码顺序內的所有字元』。例如 [0-9] 代表 0 到 9 之间的所有数字,因为数字的语系编码是连续的! |
[^ ] | 若中括号內的第一个字元为指数符号 (^) ,那表示『反向选择』,例如 [^abc] 代表 一定有一个字元,只要是非 a, b, c 的其他字元就接受的意思。 |
除了通配符之外,bash 環境中的特殊符號有哪些呢?底下我們先汇整一下:
符号 | 內容 |
# | 注释符号:这个最常被使用在 script 当中,视为说明#在后的语句均不执行 |
\ | 跳脱符号:將『特殊字符或万用字符』还原成一般字元 |
| | 管道 (pipe):分隔两个管道命令的界定(后两节介紹); |
; | 连续指令下达分隔符:连续性命令的界定 (注意!与管道命令不相同) |
~ | 使用者的家目录 |
$ | 取用变量前置字元:亦即是变量之前需要加的变量取代值 |
& | 工作控制 (job control):将指令变成背景下工作 |
! | 逻辑运算意义上的『非』 not 的意思! |
/ | 目录符号,路径分割符号 |
>, >> | 数据流重导向:输出导向,分別是『取代』与『累加』 |
<, << | 数据流重导向:输入导向 (这两个以后说明) |
‘ ‘ | 单引号,里面全是普通字符,不具备变量置换功能 |
” “ | 具有变量置换的功能! |
` ` | 两个『 ` 』中间为可以先执行的指令,亦可使用 $( ) |
( ) | 在中间为子 shell 的起始与结束 |
{ } | 在中间为命令区块的組合! |
====数据流重导向====
1,标准输入(stdin):代码为0,使用<或者<<
2,标准输出(stdout):代号为1,使用>或者>>
3,标准错误输出(stderr):代号为2,使用2>或者2>>
>表示清空后添加,>>表示累加添加,append的意思。了解?o(╯□╰)o
<表示原本由键盘输入的改由文件输入,而<<则表示遇到后面的字符串的时候结束输入。
/dev/null:超级黑洞,它会吃掉任何导向到它的数据流,很强大的,不是麽。
正确和错误输出到同一个文件的语法格式:
find /home -name .bashrc > list 2>&1
====管道命令====
管道命令需要注意的是:
1,管道命令仅能处理standard output,对于stderr会忽略掉
2,管道命令必须要能够接受来自前一个命令的数据成为standard input继续处理才行
====选取命令cut和grep====
# cut -d ‘分割字符’ -f fields <== 用于分割字符
# cut -c 字符范围 <== 用于排列整齐的信息
-d:后面接分割字符,与-f一起使用
-f:依据-d的分割字符将一段信息切割成为数段,用-f取出第几段的意思(-f 3,5)
-c:以字符的单位取出固定字符区间 (-c 12-34)
grep以行为单位分析信息,如果该行符合条件,则把该行提出出来
# grep [-acinv] [--color=auto] ’查找的字符串’ filename
-a:将binary文件以text文件方式查找
-c:计算找到’查找的字符串’的次数
-i:忽略大小写
-n:顺便输出行号
-v:反向选择,即显示出没有 ‘字符串’内容的那些行
–color=auto : 关键字加上颜色
====排序命令sort,wc,uniq====
# sort [-fbMnrtuk] [file or stdin]
-f:忽略大小写
-b:忽略最前面的空格
-M:以月份的名字排序
-n:使用数字排序(默认是文字来排序)
-r:反向排序
-u:就是uniq,相同的数据中,仅出现一行代表
-t:分隔符,默认以TAB分割
-k:以那个区间进行排序
# cat /etc/passwd | sort -t “:” -k 3 <== 以第三列进行排序
# last | cut -d ‘ ‘ -f 1 | sort
# uniq [-ic] <==排序完成后将重复的数据仅列出一个显示
-i:忽略大小写
-c:进行计数
# last | cut -d ‘ ‘ -f1 | sort | uniq -ic
# wc [-lwm] <== 行数,字数,字符数统计命令
-l:仅列出行
-w:仅列出多少字(英文单词word)
-m:多少字符(char)
# cat /etc/man.config | wc
====双向重定向tee====
# tee [-a] file
-a:以累加(append)方式,将数据加入到file中
# ls -l /home | tee -a ~/homefile | more
====字符转换命令:tr,col,join,paste,expand====
# tr [-ds] SET1 …
-d:删除信息中的SET1这个字符串;
-s:替换掉重复的字符
# last | tr -s ‘[a-z]‘ ‘[A-Z]‘
# cat /etc/passwd | tr -d “:”
# col [-xb]
-x:将tab键转换成对等的空格键
-b:如果在文字内有反斜杠(\),仅保留反斜杠最后接的字符
# join [-ti12] file1 file2
-t:join默认以空格符分割数据,并且对比第一个字段的数据,如果相同,合并到一行,且第一个字段放在第一个
-i:忽略大小写
-1:代表第一个文件要用那个字段来分析
-2:代表第二个文件要用哪个字段来分析
# join -t “:” -1 4 /etc/passwd -2 3 /etc/group
# paste [-d] file1 file2 …
-d:后面可以接分割字符,默认以tab来分割
-:如果-file写成-,则表示来自stdin的数据
# expand [-t] file
-t :后面接数字,表示一个tab键可以转换成几个空格键
# grep ‘^MANPATH’ /etc/man.config | head -n 3 | expand -t 6 – | cat -A
====切割命令split====
# split [-bl] -file PREFIX
-b:后面接欲切割成的文件的大小,可以加单位,如b,k,m,g等
-l:以行数进行切割
PREFIX:前导符,可作为切割文件的前导文字
# split -b 300k /etc/termcap tercap
====参数代换xargs====
# xargs [-0epn] command
-0:如果输入的stdin含有特殊字符,比如`,\,空格键等,这个参数可以将其还原成一般字符
-e:EOF,后面可以接一个字符串,当xargs遇到这个字符串的时候,就停止继续工作
-p:每次执行命令的参数时,询问用户
-n:后面接次数,每次command执行时,要使用几个参数的意思
# cut -d ‘:’ -f1 /etc/passwd | xargs -p -n 5 finger
使用xargs的原因是:很多命令其实不支持管道命令,因此我们可以通过xargs来提供该命令引用stdin之用。
# find /sbin -perm +7000 | xargs ls -l <== 找出/sbin下具有特殊权限的文件名
===============END====================
本人博客已搬家,新地址为:http://yidao620c.github.io/
相关推荐
"基于Comsol的采空区阴燃现象研究:速度、氧气浓度、瓦斯浓度与温度分布的二维模型分析",comsol采空区阴燃。 速度,氧气浓度,瓦斯浓度及温度分布。 二维模型。 ,comsol; 采空区; 阴燃; 速度; 氧气浓度; 瓦斯浓度; 温度分布; 二维模型;,"COMSOL模拟采空区阴燃:速度、浓度与温度分布的二维模型研究"
安全驱动的边云数据协同策略研究.pdf
MATLAB代码实现电-气-热综合能源系统耦合优化调度模型:精细电网、气网与热网协同优化,保姆级注释参考文档详可查阅。,MATLAB代码:电-气-热综合能源系统耦合优化调度 关键词:综合能源系统 优化调度 电气热耦合 参考文档:自编文档,非常细致详细,可联系我查阅 仿真平台:MATLAB YALMIP+cplex gurobi 主要内容:代码主要做的是一个考虑电网、热网以及气网耦合调度的综合能源系统优化调度模型,考虑了电网与气网,电网与热网的耦合,算例系统中,电网部分为10机39节点的综合能源系统,气网部分为比利时20节点的配气网络,潮流部分电网是用了直流潮流,气网部分也进行了线性化的操作处理,代码质量非常高,保姆级的注释以及人性化的模块子程序,所有数据均有可靠来源 ,关键词:MATLAB代码; 电-气-热综合能源系统; 耦合优化调度; 电网; 热网; 气网; 潮流; 直流潮流; 线性化处理; 保姆级注释; 人性化模块子程序; 可靠数据来源。,MATLAB代码:电-气-热综合能源系统耦合优化调度模型(保姆级注释,数据来源可靠)
内容概要:本文详细探讨了人工智能(AI)对就业市场的深远影响及其发展趋势。首先介绍了到2027年,44%的工人核心技能将受技术变革尤其是AI影响的事实,并提及自动化可能取代部分工作的现象。其次指出虽然某些职位面临风险,但也带来了全新的职业机遇与现有角色改进的可能性,关键在于人类要学会借助AI释放自身潜力并培养软实力,以适应快速发展的科技需求。再者,强调终身学习理念下企业和教育培训须革新教学手段与评估机制,以便紧跟AI进化速率,为个体和社会持续注入新动力。最后提到了教育机构应当加快调整步伐以匹配技术变革的速度,并利用AI实现个性化的教育,进而提升学习者的适应能力和解决问题的能力。 适用人群:政策制定者、企业管理层、在职人员及教育工作者,还有广大学生群体均能从中获得启示。 使用场景及目标:面向关注未来职场动向及教育发展方向的专业人士,提供前瞻性思考角度,助力各界积极规划职业生涯路径或调整教育资源分配策略。 其他说明:本文综合多位行业领袖的观点展开讨论,旨在唤起社会各界共同思考AI带来的变革及对策,而非单方面渲染危机感。
2025最新空调与制冷作业考试题及答案.doc
2025最新初级电工证考试题及答案.docx
飞剪PLC控制系统——采用西门子S7-200SMART和触摸屏实现智能化操控及图纸详述,飞锯追剪程序,PLC和触摸屏采用西门子200smart,包含图纸,触摸屏程序和PLC程序。 ,核心关键词:飞锯追剪程序; 西门子200smart; PLC程序; 触摸屏程序; 图纸; 控制系统。,"西门子200smart飞锯追剪系统程序包:含图纸、PLC与触摸屏程序"
使用PyQt6制作的Python应用程序。
三相桥式整流电路双闭环控制策略:电压外环与电流内环协同优化研究,三相桥式整流电路双闭环控制 电流内环 电压外环(也有开环控制) 采用电压电流双闭环控制,在电压、电流控制电路中,电压单环控制易于设计和分析,但是响应速度慢,无限流功能。 而电流环能增强电路稳定性、响应速度快。 三相桥式全控整流电路由整流变压器、阴极相连接的晶闸管(VT1, VT3, VT5)、阳极相连接的晶闸管(VT4, VT6, VT2)、负载、触发器和同步环节组成(如图1),6个晶闸管依次相隔60°触发,将电源交流电整流为直流电。 matlab仿真模型(开闭环都有)控制效果良好,可写报告。 ,三相桥式整流电路;双闭环控制;电流内环;电压外环;开环控制;MATLAB仿真模型。,基于双闭环控制的电压电流三相整流技术分析与Matlab仿真实现
MATLAB四旋翼仿真PID控制:从入门到精通的手把手教学,含QAV方法、模型代码、Simulink布局思路及详细图文说明,MATLAB四旋翼仿真 PID控制,有完全对应的说明文档,专门为初级学习者提供。 不用问在不在,直接拿即可。 亮点: 拥有和模型完全对应的讲解文档,相当于手把手教学。 内容包括: 1.QAV详细方法 2.模型及代码 3.模型2(提供simulink排版布局思路) 4.相关图片 5.使用备注 ,核心关键词:MATLAB四旋翼仿真; PID控制; 完全对应说明文档; 初级学习者; QAV详细方法; 模型及代码; simulink排版布局思路; 相关图片; 使用备注。,"MATLAB四旋翼仿真教程:PID控制详解与手把手教学"
定子磁链控制下的直接转矩控制系统MATLAB仿真研究及结果分析报告,基于定子磁链控制的直接转矩控制系统 MATLAB SIMULINK仿真模型(2018b)及说明报告,仿真结果良好。 报告第一部分讨论异步电动机的理论基础和数学模型,第二部分介绍直接转矩控制的具体原理,第三部分对调速系统中所用到的脉宽调制技术CFPWM、SVPWM进行了介绍,第四部分介绍了MATLAB仿真模型的搭建过程,第五部分对仿真结果进行了展示及讨论。 ,关键词:定子磁链控制;直接转矩控制系统;MATLAB SIMULINK仿真模型;异步电动机理论基础;数学模型;直接转矩控制原理;脉宽调制技术CFPWM;SVPWM;仿真结果。,基于MATLAB的异步电机直接转矩控制仿真研究报告
2025中小学教师编制考试教育理论基础知识必刷题库及答案.pptx
Python游戏编程源码-糖果消消消.zip
三相PWM整流器双闭环控制:电压外环电流内环的SVPWM调制策略及其代码编写详解——动态稳态特性优越的技术参考。,三相PWM整流器双闭环控制,电压外环,电流内环,PLL。 采用SVPWM调制,代码编写。 动态和稳态特性较好,可提供参考资料 ,三相PWM整流器;双闭环控制;电压外环;电流内环;PLL调制;SVPWM调制;动态特性;稳态特性;参考资料,三相PWM整流器双闭环SVPWM调制策略:稳态与动态特性优化参考指南
永磁同步电机滑膜观测器参数识别与仿真研究:转动惯量、阻尼系数及负载转矩的Matlab Simulink仿真分析文章及文档说明,永磁同步电机 滑膜观测器参数识别Matlab simulink仿真 包括转动惯量 阻尼系数 负载转矩 波形很好 跟踪很稳 包含仿真文件说明文档以及文章 ,关键词:永磁同步电机;滑膜观测器;参数识别;Matlab simulink仿真;转动惯量;阻尼系数;负载转矩;波形质量;跟踪稳定性;仿真文件;说明文档;文章。,基于Matlab Simulink仿真的永磁同步电机滑膜观测器参数识别及性能分析
基于永磁涡流的电梯缓冲结构设计.pdf
Python自动化办公源码-28 Python爬虫爬取网站的指定文章
MATLAB下的安全强化学习:利用Constraint Enforcement块训练代理实现目标接近任务,MATLAB代码:安全 强化学习 关键词:safe RL 仿真平台:MATLAB 主要内容:此代码展示了如何使用 Constraint Enforcement 块来训练强化学习 (RL) 代理。 此块计算最接近受约束和动作边界的代理输出的动作的修改控制动作。 训练强化学习代理需要 Reinforcement Learning Toolbox 。 在此示例中,代理的目标是使绿球尽可能靠近红球不断变化的目标位置。 具体步骤为创建用于收集数据的环境和代理,学习约束函数,使用约束强制训练代理,在没有约束执行的情况下训练代理。 ,核心关键词:safe RL; MATLAB代码; Constraint Enforcement 块; 强化学习代理; 绿球; 红球目标位置; 数据收集环境; 约束函数; 约束强制训练; 无约束执行训练。,MATLAB中安全强化学习训练的约束强化代理实现
基于EtherCAT总线网络的锂电池激光制片机控制系统,融合欧姆龙NX系列与威伦通触摸屏的智能制造方案。,锂电池激光模切机 欧姆龙NX1P2-1140DT,威伦通触摸屏,搭载从机扩展机架控制,I输入输出IO模块模拟量模块读取控制卷径计算 汇川IS620N总线伺服驱动器7轴控制,总线纠偏器控制 全自动锂电池激光制片机,整机采用EtherCAT总线网络节点控制, 伺服凸轮同步运动,主轴虚轴控制应用,卷径计算,速度计算,放卷张力控制。 触摸屏设计伺服驱动器报警代码,MC总线报警代码,欧姆龙伺服报警代码 张力摆臂控制,PID控制,等等 触摸屏产量统计,触摸屏故障统计,触摸屏与PLC对接信息交互,触摸屏多账户使用,多产品配方程序,优秀的触摸屏模板。 NX在收放卷控制的设计 欧姆龙NX系列实际项目程序+威纶触摸屏程序+新能源锂电设备 涵盖威纶通人机,故障记录功能,st+梯形图+FB块,注释齐全。 ,"新能源锂电池激光模切机:欧姆龙NX与威纶通触摸屏的智能控制与信息交互系统"
2025装载机理论考试试题库(含答案).pptx