Shell知识点(一)
1.echo 命令
echo命令的作用是在屏幕输入一行文本,可以降该命令的参数原样输出。
$ echo hello world
hello world
如果想要输出的是多行文本,包含换行符,这时就需要把多行文本放在引号里面
$ echo "<HTML><HEAD><TITLE>Page Title</TITLE></HEAD><BODY>Page body.</BODY>
</HTML>"
1.1 -n 参数
默认情况下,echo输出的文本抹灰会有一个回车符。 -n参数可以取消末尾的回车符,是的下一个提示符跟在输出内容的后面
1.2 -e 参数
-e 参数会解释引号(双引号和单引号)里面的特殊字符(比如换行符\n)如果不使用-e参数,即默认情况下,引号会让特殊字符变成普通字符,echo不解释他们,原样输出
$ echo "Hello\nWorld"
Hello\nWorld# 双引号的情况
$ echo -e "Hello\nWorld"
Hello
World# 单引号的情况
$ echo -e 'Hello\nWorld'
Hello
World
2.命令格式
$ command [ arg1 ... [ argN ]]
上面代码中command是具体的命令或者一个可执行文件,arg1 是传递给命令的参数,他们是可选的
例如 ls -l ls是命令 -l是参数
有些参数是命令的配置项,这些配置项一般都是一个连词线开头,比如上面的-l 同一个配置项往往有长和短两种形式,比如 -l 是短形式 --list是长形式, 它们的作用完全相同。短形式便于手动输入,长形式一般用在脚本之中,可读性更好,利于解释自身的含义。
Bash单个命令一般都是一行,用户回车就会执行,有些命令比较长,携程多行会有利于阅读和编写,这是可以在每一行的结尾加上反斜杠,Bash就会将他们一起编译。
3.空格
以空格区分不通的参数
4.分号
分号是命令的结束符,是的一行可以防止多个命令,上一个命令执行结束后,再执行第二个
5.命令的组合符号 && ||
可以更好的控制多个命令之间的继发关系
commond1 || commond2 如果commond1执行失败那么执行commond2
commond2 && commond2 如果commond1执行成功那么执行common2
6.type命令
判断一个命令是内部命令还是外部命令
type 命令也是内置命令
7.快捷键
ctrl+L:清除屏幕并将当前行移到页面顶部
ctrl+C:终止当前正在执行的命令
Shift+PageUp 向上滚动
Shift+PageDown:向下滚动
Ctrl+U 从光标位置删除到行首
Ctrl+K 从光标位置删除到行尾
Ctrl+w:删除光标位置前一个单词
Ctrl+d 关闭Shell会话
↑ ↓ 浏览已经执行命令的历史记录
Bash的模式扩展
Shell接收到用户输入的命令以后,会根据空格将用户的输入,拆分成一个个词元,然后,Shell会扩展词元里面的特殊字符,扩展完成后才会调用相应的命令。
一共八个扩展
- 波浪线扩展
?字符扩展*字符扩展- 方括号扩展
- 大括号扩展
- 变量扩展
- 子命令扩展
- 算术扩展
Bash是先进行扩展,再执行命令。因此扩展的结果是由Bash负责的,与所要执行的命令无关,命令本事并不存在参数扩展,收到什么参数就鸳鸯执行,这一点无比需要记住。
模块扩展额英文单词是iglobbing,保存扩展的模板,后来Bash内置了这个功能,但是这个二名字就保留了下来。
Bash 允许用户关闭扩展。
$ set -o noglob
# 或者
$ set -f
下面的命令可以重新打开扩展
$ set +o noglob
# 或者
$ set +f
2.波浪线扩展
会自动扩展成当前用户的主目录
$ echo ~
/home/me
~/dir 标识扩展成主目录的某个子目录, dir是主目录里面的一个子目录名
# 进入 /home/me/foo 目录
$ cd ~/foo
~+会扩展成当前所在的目录,等同于pwd命令。
$ cd ~/foo
$ echo ~+
/home/me/foo
3 ?字符扩展
?字符代表文件路径里面的任意单个字符 不包括空字符,比如Data ???匹配所有Data后面跟着三个字符的文件名
# 存在文件 a.txt 和 b.txt
$ ls ?.txt
a.txt b.txt
上面命令中,?表示单个字符,所以会同时匹配a.txt和b.txt。
如果匹配多个字符,就需要多个?连用。
# 存在文件 a.txt、b.txt 和 ab.txt
$ ls ??.txt
ab.txt
4.*字符扩展
*字符代表文件路径里面的任意数量的任意字符,包括零个字符。
# 存在文件 a.txt、b.txt 和 ab.txt
$ ls *.txt
a.txt b.txt ab.txt
注意,*不会匹配隐藏文件(以.开头的文件),即ls *不会输出隐藏文件。
如果要匹配隐藏文件,需要写成.*。
如果要匹配隐藏文件,同时要排除.和..这两个特殊的隐藏文件,可以与方括号扩展结合使用,写成.[!.]*。
5.方括号扩展
方括号扩展的形式是[...],只有文件确实存在的前提下才会扩展。如果文件不存在,就会原样输出。括号之中的任意一个字符。比如,[aeiou]可以匹配五个元音字母中的任意一个。
方括号扩展还有两种变体:[^...]和[!...]。它们表示匹配不在方括号里面的字符,这两种写法是等价的。比如,[^abc]或[!abc]表示匹配除了a、b、c以外的字符。
6[start-end]扩展
方括号扩展一个简写形式[start-end],表示匹配一个连续的范围,比如。[a-c]等同于[abc],[0-9]匹配[0123456789]
[a-z]:所有小写字母。[a-zA-Z]:所有小写字母与大写字母。[a-zA-Z0-9]:所有小写字母、大写字母与数字。[abc]*:所有以a、b、c字符之一开头的文件名。program.[co]:文件program.c与文件program.o。BACKUP.[0-9][0-9][0-9]:所有以BACKUP.开头,后面是三个数字的文件名。
这种简写形式有一个否定形式[!start-end],表示匹配不属于这个范围的字符。比如,[!a-zA-Z]表示匹配非英文字母的字符。
7.大括号扩展
大括号扩展{...}表示分别扩展成大括号里面的所有值,各个值之间使用逗号分隔。比如,{1,2,3}扩展成1 2 3。
$ echo {1,2,3}
1 2 3$ echo d{a,e,i,u,o}g
dag deg dig dug dog$ echo Front-{A,B,C}-Back
Front-A-Back Front-B-Back Front-C-Back
注意 大括号内部的都好前后不能有空格,否则大括号扩展会失效。
大括号可以嵌套
8. {start..end}扩展
大括号扩展有一个简写形式{start..end},表示扩展成一个连续序列。比如,{a..z}可以扩展成26个小写英文字母。
9.变量扩展
Bash将美元符号$开头的词元视为变量,将其扩展为变量值
$ echo $SHELL
/bin/bash
变量名除了放在美元符号后面,也可以放在${}里面。
$ echo ${SHELL}
/bin/bash
${!string*}或${!string@}返回所有匹配给定字符串string的变量名。
$ echo ${!S*}
SECONDS SHELL SHELLOPTS SHLVL SSH_AGENT_PID SSH_AUTH_SOCK
${!S*}扩展成所有以S开头的变量名。
10.子命令扩展
$(...)可以扩展成另一个命令的运行结果,该命令的所有输出都会作为返回值。
$ echo $(date)
Tue Jan 28 00:01:13 CST 2020
11.算数扩展
$((...))可以扩展成整数运算的结果
$ echo $((2 + 2))
4
12 字符类
[[:class:]]表示一个字符类,扩展成某一类特定字符之中的一个。常用的字符类如下。
[[:alnum:]]:匹配任意英文字母与数字[[:alpha:]]:匹配任意英文字母[[:blank:]]:空格和 Tab 键。[[:cntrl:]]:ASCII 码 0-31 的不可打印字符。[[:digit:]]:匹配任意数字 0-9。[[:graph:]]:A-Z、a-z、0-9 和标点符号。[[:lower:]]:匹配任意小写字母 a-z。[[:print:]]:ASCII 码 32-127 的可打印字符。[[:punct:]]:标点符号(除了 A-Z、a-z、0-9 的可打印字符)。[[:space:]]:空格、Tab、LF(10)、VT(11)、FF(12)、CR(13)。[[:upper:]]:匹配任意大写字母 A-Z。[[:xdigit:]]:16进制字符(A-F、a-f、0-9)
$ echo [[:upper:]]*
上面命令输出所有大写字母开头的文件名。
字符类的第一个方括号后面,可以加上感叹号!,表示否定。比如,[![:digit:]]匹配所有非数字。
$ echo [![:digit:]]*
上面命令输出所有不以数字开头的文件名。
字符类也属于文件名扩展,如果没有匹配的文件名,字符类就会原样输出。
# 不存在以大写字母开头的文件
$ echo [[:upper:]]*
[[:upper:]]*
使用注意
(1)通配符是先解释,再执行。
(2)文件名扩展在不匹配时,会原样输出。
(3)只适用于单层路径。
(4)文件名可以使用通配符。
相关文章:
Shell知识点(一)
1.echo 命令 echo命令的作用是在屏幕输入一行文本,可以降该命令的参数原样输出。 $ echo hello world hello world 如果想要输出的是多行文本,包含换行符,这时就需要把多行文本放在引号里面 $ echo "<HTML><HEAD><TITLE…...
mysql 索引失效、联合索引失效场景和举例
索引失效 假设有一张user 表,表中包含索引 (id); (name); (birthday); (name,age); 对索引字段进行函数操作 select name from user where year(birthday) 2000;使用模糊查询,查询中使用通配符 select name from user where name like %益达%;使用i…...
快速将PDF转换为图片:使用在线转换器的步骤
PDF文件是一种常见的文档格式,但在某些情况下需要将其转换为图片格式,例如将PDF文件插入PPT演示文稿中。此时,使用在线PDF转换器是一种快速且简便的方法。 本文将介绍如何使用在线转换器将PDF文件转换为图片格式。 步骤1:选择合…...
什么是gpt一4-如何用上gpt-4
怎么使用gpt-4 目前GPT-4还未正式发布或公开,因此也没有详细的对接说明。但是我们可以根据GPT-4的前身GPT-3的应用经验,以及GPT-4的预期功能推测一些可能的使用步骤: 选择适合的GPT-4实现技术:GPT-4可能有不同的实现技术ÿ…...
Docker 相关概念
1、Docker是什么? 如何确保应用能够在这些环境中运行和通过质量检测?并且在部署过程中不出现令人头疼的版本、配置问题,也无需重新编写代码和进行故障修复? 答案就是使用容器。Docker之所以发展如此迅速,也是因为它对…...
STM32平衡小车 TB6612电机驱动学习
TB6612FNG简介 单片机引脚的电流一般只有几十个毫安,无法驱动电机,因此一般是通过单片机控制电机驱动芯片进而控制电机。TB6612是比较常用的电机驱动芯片之一。 TB6612FNG可以同时控制两个电机,工作电流1.2A,最大电流3.2A。 VM电…...
动态加载 JS 文件
动态加载JS文件是指在网页运行过程中通过JavaScript代码向页面中动态添加外部JS文件,这种方式能够提高页面加载速度和用户体验,并且可以帮助网站实现更多的功能和特效。 本文将详细介绍动态加载JS文件的基本原理、优势、注意事项以及具体实现方法&#…...
14、lldb调试指令
LLDB LLDB(Low Lever Debug): 默认内置于Xcode中的动态调试工具.标准的lldb提供了一组广泛的命令,旨在与老版本的GDB命令兼容.除了使用标准配置外,还可以很容易地自定义lldb以满足实际需要. 1.1 lldb语法: <command> [<subcommand> [<subcommand>...]] &l…...
浏览器缓存策略:强缓存和协商缓存
浏览器缓存:其实就是在本地使用的计算机中开辟一个内存区,同时也开辟一个硬盘区,作为数据传输的缓冲区,然后利用这个缓冲区来暂时保护用户以前访问的信息通常浏览器的缓存策略分为两种:强缓存和协商缓存,强…...
2023年Chat GPT 应用前景分析
从2022年12月初刚上线至今,不到半年时间ChatGPT月活就超过了1亿用户!可谓火的一塌糊涂,比尔盖茨都称:ChatGPT的历史意义重大,不亚于PC或互联网诞生。以至于ChatGPT官网长期都处于满负荷运转的状态! 由于Ch…...
并发计算公式
常用并发数计算公式:N[(n0.8SP)/(T0.2)]*R 其中: n为系统用户数; S为每个用户发生的业务笔数(QPS); P为每笔业务所需要访问服务器的时间,单位为秒; T为使用业务的时间,单…...
“华为杯”研究生数学建模竞赛2020年-【华为杯】E题:能见度估计与预测(附获奖论文及python代码实现)
目录 摘 要: 一、问题背景与问题重述 1.1 问题背景 1.2 问题重述...
Arduino学习笔记3
一.RGB三色小灯实验 1.源代码 int rgb_R11;//接到板子上面的PWM口11 R int rgb_G9;//接到板子上面的PWM口9 G int rgb_B10;//接到板子上面的PWM口10 B void setup() {pinMode(rgb_R,OUTPUT);//设置rgb_R的控制口为输出模式pinMode(rgb_G,OUTPUT);//设置rgb_G的控制口为输出模…...
BPMN2.0 任务-用户任务
“用户任务(user task)”用于对需要人工执行的任务进行建模。当流程执行到达用户任务时,会为指派至该任务的用户或组的任务列表创建一个新任务。 用户任务用左上角有一个小用户图标的标准任务(圆角矩形)表示。 用户任务在XML中如下定义。其中id是必须属性,name是可选属性…...
David Silver Reinforcement Learning -- Markov process
1 Introduction 这个章节介绍关键的理论概念。 马尔科夫过程的作用: 1)马尔科夫过程描述强化学习环境的方法,环境是完全能观测的; 2)几乎所有的RL问题可以转换成MDP的形式; 2 Markov Processes 2.1 Mark…...
项目结束倒数2
今天,解决了,多个点的最短路问题 用的dfs,配上了floyed计算出的广源距离 难点是要记录路线,dfs记录路线就很烦 但是好在结束了,经过无数的测试,确保没啥问题(应该把) 来看看我的代码 void dfs(int b[], int x, int* sum, int last, int sums, int a[], BFS& s, Floyd_A…...
VBA智慧办公9——图例控件教程
如图,利用VBA进行可视化交互界面的设计,在界面中我们用到了label,button,text,title等多个工具,在进行框图效果的逐一实现后可进行相应的操作和效果实现。 VBA(Visual Basic for Applications&a…...
Presto VS Spark
环境配置 5个节点,每个节点10G内存。 测试SQL,每个执行3次,求平均,对比计算性能。 版本信息 Spark:2.3.1Presto: 0.208 10亿量级查询性能对别 Spark: spark-sql> select sex,count(1) from conta…...
为什么我们能判断声音的远近
想象一下,当我们走在路上时,听到了头顶的鸟儿在树梢间的叫声,即使无法透过浓密的树叶看见它,也可以大致知道鸟儿的距离。此时身后传来由远到近自行车铃铛声,我们并不需要回过头去看,便为它让开了道路。这些…...
那些关于DIP器件不得不说的坑
了解什么是DIP DIP就是插件,采用这种封装方式的芯片有两排引脚,可以直接焊在有DIP结构的芯片插座上或焊在有相同焊孔数的焊位中。其特点是可以很方便地实现PCB板的穿孔焊接,和主板有很好的兼容性,但是由于其封装面积和厚度都比较…...
3步解决视频转PPT难题:智能幻灯片提取工具全攻略
3步解决视频转PPT难题:智能幻灯片提取工具全攻略 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 在数字化学习与办公场景中,从视频中提取PPT内容一直是效率瓶…...
OpenClaw+Qwen3.5-9B低成本方案:自建接口替代OpenAI API
OpenClawQwen3.5-9B低成本方案:自建接口替代OpenAI API 1. 为什么选择Qwen3.5-9B作为OpenClaw的本地大脑 去年冬天,当我第一次尝试用OpenClaw自动化处理周报时,被OpenAI API的账单吓了一跳——简单的文件整理和摘要生成,一周竟消…...
3分钟掌握Umi-OCR:让文字识别变得如此简单的免费离线工具
3分钟掌握Umi-OCR:让文字识别变得如此简单的免费离线工具 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。内置多国…...
MiniCPM-V-2_6政务场景应用:身份证/营业执照图像识别+结构化提取
MiniCPM-V-2_6政务场景应用:身份证/营业执照图像识别结构化提取 1. 引言:让政务文档处理更智能高效 在日常政务工作中,工作人员经常需要处理大量的身份证和营业执照图像。传统的人工录入方式不仅效率低下,还容易出错。一张身份证…...
未来金融的三大走向
1. 智能化加速AI已从辅助决策走向自主交易,量化策略、智能投顾将覆盖更多普通投资者。不懂代码,也能用自然语言下达投资指令。 2. 资产代币化现实世界资产(RWA)上链成为新趋势。房产、债券、甚至艺术品,都可以分割成数…...
收藏!新手程序员必看:大模型入门指南,告别“没基础”焦虑
准备入门大模型?请立刻丢掉“我没基础”“这技术太难”的顾虑!作为常年深耕技术领域的博主,我始终坚信:只要你有主动学习的意愿,再加上持续的付出,不仅能轻松攻克大模型入门难关,更能熟练运用它…...
Ostrakon-VL像素终端实战:用实时摄像头完成便利店突击巡检
Ostrakon-VL像素终端实战:用实时摄像头完成便利店突击巡检 1. 像素特工终端介绍 想象一下,你是一名便利店巡检员,每天需要检查几十家门店的商品陈列、价签准确性和店面整洁度。传统方法需要手动拍照记录、填写表格,既耗时又容易…...
视觉增强实战:OpenClaw调用Qwen3.5-9B实现截图内容分析与报告生成
视觉增强实战:OpenClaw调用Qwen3.5-9B实现截图内容分析与报告生成 1. 为什么需要视觉增强的自动化助手? 作为一名经常需要处理大量学术资料的研究者,我长期被两个问题困扰:一是阅读文献时遇到复杂的图表需要反复对照文字说明&am…...
OnmyojiAutoScript:阴阳师智能自动化脚本完全指南
OnmyojiAutoScript:阴阳师智能自动化脚本完全指南 【免费下载链接】OnmyojiAutoScript Onmyoji Auto Script | 阴阳师脚本 项目地址: https://gitcode.com/gh_mirrors/on/OnmyojiAutoScript 还在为阴阳师每日重复任务感到疲惫吗?每天花费数小时在…...
别盲目冲网安!普通本科转行 5 年月薪 2 万 +,掏心窝子真话
别盲目冲网安!普通本科转行5年,月薪2万的真心话 网安行业确实火,但真话难听:这行超卷,缺的是能干活的实战派,不是凑数的小白。 我普通本科出身,转行网安5年,如今月薪2万࿰…...
