当前位置: 首页 > news >正文

Shell特殊字符

shell语言,一些字符是有特殊意义的。


根据作用分为几种特殊符号
一、空白
shell调用函数,不像c语言那样用把参数放到括号里,用逗号分隔。而是用空格作为参数之间,参数与函数名之间的分隔符。
换行符也是特殊字符。换行符用作一条命令与另一条命令的分隔符。


二、{}
{string1,string2,...} 逗号格式
会替换成多个字符串
$ echo d{a,e,i,u,o}g
dag deg dig dug dog
$ echo {cat,dog}
cat dog
大括号可以嵌套。
$ echo {j{p,pe}g,png}
jpg jpeg png


{start..end} 范围格式
{start..end}会替换成连续多个字符。
$ echo d{a..d}g
dag dbg dcg ddg
$ echo {11..15}
11 12 13 14 15
如果遇到无法解释的扩展,会原样输出。
$ echo {a1..3c}
{a1..3c}
这种格式可与逗号联用。
$ echo .{mp{3..4},m4{a,b,p,v}}
.mp3 .mp4 .m4a .m4b .m4p .m4v

因为空格是特殊字符,所以{}内不可使用空格,如果非要使用,那么要引用。

三、~
替换成用户主目录

四、变量替换$
因为字符串可以不带引号,所以变量名与字符串字面值区分不开,于是就有了$的特殊用途。
$把后面的单词统统当作变量,然后替换成变量的值。
shell内置变量

变量名函数
$FUNCNAME函数名称
$RANDOM随机数
$0脚本名称
$n脚本位置参数,n是整数,10及以上表示为${10},shift进行偏移获取参数值
$@所有位置参数
$*所有位置参数
$#位置参数的个数
$_上一条命令最后一个参数
$?上条命令的返回值
$$脚本的PID
$PPID父进程ID
$LINENO脚本执行的行号
$PWD当前目录
$SECONDS脚本已经运行的时间(s)
$TMOUT超时退出时间(s)
$UID当前用户ID


自定义变量
var=value
$var

为了避免变量名与字符串连接在一起,变成一个错误变量名。可以使用${var}格式。

五、命令替换
`command`
把``中的字符串当成一条命令,执行命令,替换成命令的标准输出。
`ls`就是替换成ls的标准输出。

$()与``作用一样

六、运算替换
$(())替换成数字运算结果


七、通配符

英文叫wildcard,也叫globbing patterns。因为Unix早期有一个/etc/glob文件保存通配符模板,后来Bash内置了这个功能,但是这个名字被保留了下来。
通配符是由shell处理的,不是由命令处理的,也就是说,先由shell处理完,再把处理结果传给命令。

遇到通配符时,shell会将其当作路径或文件名去在磁盘上搜寻可能的匹配:若匹配存在,则替换成找到的路径;否则就将该通配符作为一个普通字符。

通配符:

字符含义实例
*匹配0或多个字符
但是不匹配斜杠/和开头的点
中间的点可以匹配
a*b
a与b之间可以有任意长度的任意字符, 也可以一个也没有, 如aabcb, axyzb, a012b, ab
?匹配任意一个字符
但是不匹配斜杠/和开头的点
中间的点可以匹配
a?b 
a与b之间必须也只能有一个字符, 可以是任意字符, 如aab, abb, acb, a0b
[list] 匹配list中的任意单一字符a[xyz]b  
a与b之间必须也只能有一个字符, 但只能是x或y或z, 如: axb, ayb, azb

[!list] 

[^list]

匹配 除list中的任意单一字符a[!0-9]b 
a与b之间必须也只能有一个字符, 但不能是阿拉伯数字, 如axb, aab, a-b
[c1-c2]匹配c1-c2中的任意单一字符a[0-9]b 
0与9之间必须也只能有一个字符 如a0b, a1b... a9b。
[[:class:]]匹配字符类中任意单一字符

[:alnum:]:所有字母和数字

[:alpha:]:所有字母

[:digit:]:所有数字

[:lower:]:所有小写字母

[:upper:]:所有大写字母

[:blank:]:空白字符和TAB制表符

[:space:]:包括空白字符、TAB制表符(t)、换页(f)

[:cntrl:]:所有控制字符

[:graph:]:可打印并可看到的字符。空格是可打印的,但是不是可看到的

[:print:]:所有可打印字符

[:punct:]:所有标点符号,非字母、数字、控制字符和space字符

[:xdigit:]:十六进制数的字符

注意:引用时,需要在加一层括号,如[[:alnum:]]

通配符看起来像正则表达式,但它与正则表达式不同,不能相互混淆。

shell本身是不支持正则表达式的,支持正则表达式的一般是具体的命令,比如grep。
 

例子:
ls
a.txt  b.txt  c.old
ls *.txt
a.txt  b.txt
ls d*.txt
ls: 无法访问d*.txt: 没有那个文件或目录

ls [[:alpha:]]*.txt

a.txt b.txt


在第2个命令中,*.txt实际shell搜索文件,找到了符合条件的文件,命令会变成:ls a.txt b.txt,实际在执行ls时候传给它的是a.txt b.txt
而命令3,d*.txt由于当前目录下面没有这样的文件或目录,直接将”d*.txt”作为ls参数,传给了ls。这个时候”*” 只是一个普通的ls参数而已,已经失去了它特殊意义。由于找不到文件,所以会出现无法访问提示!


大括号也可以与通配符联用。
$ echo {cat,d*}
cat dawg dg dig dog doug dug
上面代码中,会先进行大括号扩展,然后进行*扩展。
 
{}与[]有一个很重要的区别。如果匹配不到,[]就不替换,变成一个单纯的字符串,而{}依然替换。
# 不存在a.txt和b.txt
$ ls [ab].txt
ls: [ab].txt: No such file or directory
$ ls {a,b}.txt
ls: a.txt: No such file or directory
ls: b.txt: No such file or directory
上面代码中,如果不存在a.txt和b.txt,那么[ab].txt就会变成一个普通的文件名,而{a,b}.txt可以照样展开。

八、shell元字符

=设定变量
>输出重定向
<输入重定向
|管道
&文件描述符复制

 

九、转义符
也叫引用
转义:就是转变原来的意思

有时候,我们想让通配符或者元字符变成普通字符,不需要使用它。那么这里我们就需要用到转义符了。
shell提供转义符有三种。

字符说明
''(单引号)又叫硬转义,其内部所有的元字符、通配符都会被关掉。
""(双引号)又叫软转义,其内部只允许出现特定的元字符:
美元符$、反斜线\、反引号`依然保留其特殊用途
\(反斜杠)又叫转义,去除其后紧跟的元字符或通配符的特殊意义


ls \*.txt
ls: 无法访问 *.txt: 没有那个文件或目录
ls '*.txt'
ls: 无法访问 *.txt: 没有那个文件或目录

ls "*.txt"
ls: 无法访问 '*.txt': 没有那个文件或目录
 

相关文章:

Shell特殊字符

shell语言&#xff0c;一些字符是有特殊意义的。 根据作用分为几种特殊符号 一、空白 shell调用函数&#xff0c;不像c语言那样用把参数放到括号里&#xff0c;用逗号分隔。而是用空格作为参数之间&#xff0c;参数与函数名之间的分隔符。 换行符也是特殊字符。换行符用作一条命…...

【计算机二级python】综合题目

计算机二级python真题 文章目录计算机二级python真题一、德国工业战略规划二、德国工业战略规划 第一问三、德国工业战略规划 第二问一、德国工业战略规划 描述:在右侧答题模板中修改代码&#xff0c;删除代码中的横线&#xff0c;填写代码&#xff0c;完成考试答案。‪‬‪‬…...

字节直播leader面

设计评论系统&#xff08;缓存怎么做&#xff09; mysql是否有主从延迟&#xff0c;如何解决 mysql有主从延迟 主从延迟主要因为mysql主从同步的机制&#xff0c;mysql有三种同步机制 同步复制&#xff1a;事务线程等待所有从库复制成功响应异步复制&#xff1a;事务不等待…...

PIC 单片机的时钟

注意&#xff1a;本文的内容无法保证绝对精确&#xff0c;后续可能会做改动&#xff0c;只是自己的笔记。这里的资料均源自数据手册本身。PIC18系列单片机的参考时钟可以选择三个基础时钟源&#xff1a;Primary Clock, OSC1 or OSC2,Secondary Clock,Inner clock.时钟源分为两个…...

【数据结构】关于二叉树你所应该知道的数学秘密

目录 1.什么是二叉树&#xff08;可以跳过 目录跳转&#xff09; 2.特殊的二叉树&#xff08;满二叉树/完全二叉树&#xff09; 2.1 基础知识 2.2 满二叉树 2.3 完全二叉树 3.二叉树的数学奥秘&#xff08;主体&#xff09; 3.1 高度与节点个数 3.2* 度 4.运用二叉树的…...

哈希表题目:猜数字游戏

文章目录题目标题和出处难度题目描述要求示例数据范围解法一思路和算法代码复杂度分析解法二思路和算法代码复杂度分析题目 标题和出处 标题&#xff1a;猜数字游戏 出处&#xff1a;299. 猜数字游戏 难度 4 级 题目描述 要求 你在和朋友一起玩猜数字&#xff08;Bulls…...

项目请求地址自动加上了本地ip的解决方式

一般情况下来说都是一些粗心大意的问题导致的 场景一&#xff1a;少加了/ 场景二&#xff1a;前后多加了空格 场景三&#xff1a;拼接地址错误![...

Vue3 企业级项目实战:项目须知与课程约定

本节内容很重要&#xff0c;希望大家能够耐心看完。 Vue3 企业级项目实战 - 程序员十三 - 掘金小册Vue3 Element Plus Spring Boot 企业级项目开发&#xff0c;升职加薪&#xff0c;快人一步。。「Vue3 企业级项目实战」由程序员十三撰写&#xff0c;2744人购买https://s.ju…...

传导EMI抑制-Π型滤波器设计

1 传导电磁干扰简介 在开关电源中&#xff0c;开关管周期性的通断会产生周期性的电流突变&#xff08;di/dt&#xff09;和电压突变(dv/dt)&#xff0c;周期性的电流变化和电压变化则会导致电磁干扰的产生。 图1所示为Buck电路的电流变化&#xff0c;在Buck电路中上管电流和下…...

如何在excel中创建斐波那契数列

斐波那契数列&#xff08;Fibonacci sequence&#xff09;&#xff0c;又称黄金分割数列&#xff0c;因数学家莱昂纳多斐波那契&#xff08;Leonardo Fibonacci&#xff09;以兔子繁殖为例子而引入&#xff0c;故又称为“兔子数列”&#xff0c;指的是这样一个数列&#xff1a;…...

遮挡检测--基于角度的遮挡检测方法

文章目录1基于角度的遮挡检测方法2遮挡检测遍历方法2.1方法1--自适应径向扫描方法2.2方法2--螺旋扫描法参考1基于角度的遮挡检测方法 在基于角度的方法中&#xff0c;通过依次分析DSM中沿径向方向的投影光线的角度来识别遮挡。定义α\alphaα角&#xff1a;DSM三维点与相机中心…...

【luogu CF1098D】Eels(结论)

Eels 题目链接&#xff1a;luogu CF1098D 题目大意 有一个可重集&#xff0c;每次操作会放进去一个数或者取出一个数。 然后每次操作完之后&#xff0c;问你对这个集合进行操作&#xff0c;每次选出两个数 a,b 加起来合并回去&#xff0c;直到集合中只剩一个数&#xff0c;要…...

【java】遍历文件夹输出所有文件的文件名与绝对路径,在windows环境

【java】遍历文件夹输出所有文件的文件名与绝对路径&#xff0c;在windows环境 String filepath "D:\\CloudMusic\\";//D盘下的file文件夹的目录File file new File(filepath);//File类型可以是文件也可以是文件夹File[] fileList file.listFiles();//将该目录下的…...

Window问题详解(下)

建议先看一下 Window问题详解(上) 思路② 既然会超时,那该怎么办呢? 显然需要一个更快速的方法来解决这个问题! 我们先来观察一下图片: 我们发现,每一次选中的数都会增加下一个。 !!!!! 因此,我们可以根据此特性优化时间!! 第一次先求出前 k − 1 k-1 k−...

Kafka部署与SpringBoot集成

Kafka与ZooKeeper Apache ZooKeeper是一个基于观察者模式的分布式服务管理框架&#xff0c;即服务注册中心。同时ZooKeeper还具有存储数据的能力。Kafka的每台服务器作为一个broker注册到ZooKeeper&#xff0c;多个broker借助ZooKeeper形成了Kafka集群。同时ZooKeeper会保存一…...

c++11 标准模板(STL)(std::unordered_set)(十三)

定义于头文件 <unordered_set> template< class Key, class Hash std::hash<Key>, class KeyEqual std::equal_to<Key>, class Allocator std::allocator<Key> > class unordered_set;(1)(C11 起)namespace pmr { templ…...

【2023】DevOps、SRE、运维开发面试宝典之ELKStack相关面试题

文章目录 1、elasticsearch的应用场景2、elasticsearch的特点3、Elasticsearch集群三种状态分别是什么?代表什么?4、Elasticsearch集群的优化方面5、Elasticsearch集群防止脑裂的配置参数?6、ELK日志采集平台架构组件介绍?7、Logstash组件的作用?8、收集Kubernetes集群程序…...

Hive中的高阶函数(二)

1、UDTF之explode函数 explode(array)将array列表里的每个元素生成一行&#xff1b; explode(map)将map里的每一对元素作为一行&#xff0c;其中key为一列&#xff0c;value为一列&#xff1b; 一般情况下&#xff0c;explode函数可以直接使用即可&#xff0c;也可以根据需要结…...

Java集合知识点总结

ArrayListLinkedListLinkedHashSetHashSetTreeSetHashTableHashMapTreeMap是否有序有序有序有序无序自然排序&#xff08;Comparator&#xff09;进行排序&#xff0c;默认升序使用的是重写comparTo方法无序无序自动排序元素是否为空可为null可为null不允许可为null不允许键允许…...

培训班出身的同学简历怎么做?面试要注意哪些?来自资深大厂HR的忠告

目录 1 不少培训班候选人的简历中&#xff0c;缺乏足够的商业项目年限 2 直接描述培训班学习经历会带来的负面影响 3 大龄转行Vs年轻的初级程序员&#xff0c;公司一般会如何选择&#xff1f; 4 经过培训班突击后&#xff0c;可以先面试小公司 5 面试官怎么面试有培训班经历…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...