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语言,一些字符是有特殊意义的。 根据作用分为几种特殊符号 一、空白 shell调用函数,不像c语言那样用把参数放到括号里,用逗号分隔。而是用空格作为参数之间,参数与函数名之间的分隔符。 换行符也是特殊字符。换行符用作一条命…...
【计算机二级python】综合题目
计算机二级python真题 文章目录计算机二级python真题一、德国工业战略规划二、德国工业战略规划 第一问三、德国工业战略规划 第二问一、德国工业战略规划 描述:在右侧答题模板中修改代码,删除代码中的横线,填写代码,完成考试答案。…...
字节直播leader面
设计评论系统(缓存怎么做) mysql是否有主从延迟,如何解决 mysql有主从延迟 主从延迟主要因为mysql主从同步的机制,mysql有三种同步机制 同步复制:事务线程等待所有从库复制成功响应异步复制:事务不等待…...
PIC 单片机的时钟
注意:本文的内容无法保证绝对精确,后续可能会做改动,只是自己的笔记。这里的资料均源自数据手册本身。PIC18系列单片机的参考时钟可以选择三个基础时钟源:Primary Clock, OSC1 or OSC2,Secondary Clock,Inner clock.时钟源分为两个…...
【数据结构】关于二叉树你所应该知道的数学秘密
目录 1.什么是二叉树(可以跳过 目录跳转) 2.特殊的二叉树(满二叉树/完全二叉树) 2.1 基础知识 2.2 满二叉树 2.3 完全二叉树 3.二叉树的数学奥秘(主体) 3.1 高度与节点个数 3.2* 度 4.运用二叉树的…...
哈希表题目:猜数字游戏
文章目录题目标题和出处难度题目描述要求示例数据范围解法一思路和算法代码复杂度分析解法二思路和算法代码复杂度分析题目 标题和出处 标题:猜数字游戏 出处:299. 猜数字游戏 难度 4 级 题目描述 要求 你在和朋友一起玩猜数字(Bulls…...
项目请求地址自动加上了本地ip的解决方式
一般情况下来说都是一些粗心大意的问题导致的 场景一:少加了/ 场景二:前后多加了空格 场景三:拼接地址错误![...
Vue3 企业级项目实战:项目须知与课程约定
本节内容很重要,希望大家能够耐心看完。 Vue3 企业级项目实战 - 程序员十三 - 掘金小册Vue3 Element Plus Spring Boot 企业级项目开发,升职加薪,快人一步。。「Vue3 企业级项目实战」由程序员十三撰写,2744人购买https://s.ju…...
传导EMI抑制-Π型滤波器设计
1 传导电磁干扰简介 在开关电源中,开关管周期性的通断会产生周期性的电流突变(di/dt)和电压突变(dv/dt),周期性的电流变化和电压变化则会导致电磁干扰的产生。 图1所示为Buck电路的电流变化,在Buck电路中上管电流和下…...
如何在excel中创建斐波那契数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:…...
遮挡检测--基于角度的遮挡检测方法
文章目录1基于角度的遮挡检测方法2遮挡检测遍历方法2.1方法1--自适应径向扫描方法2.2方法2--螺旋扫描法参考1基于角度的遮挡检测方法 在基于角度的方法中,通过依次分析DSM中沿径向方向的投影光线的角度来识别遮挡。定义α\alphaα角:DSM三维点与相机中心…...
【luogu CF1098D】Eels(结论)
Eels 题目链接:luogu CF1098D 题目大意 有一个可重集,每次操作会放进去一个数或者取出一个数。 然后每次操作完之后,问你对这个集合进行操作,每次选出两个数 a,b 加起来合并回去,直到集合中只剩一个数,要…...
【java】遍历文件夹输出所有文件的文件名与绝对路径,在windows环境
【java】遍历文件夹输出所有文件的文件名与绝对路径,在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是一个基于观察者模式的分布式服务管理框架,即服务注册中心。同时ZooKeeper还具有存储数据的能力。Kafka的每台服务器作为一个broker注册到ZooKeeper,多个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列表里的每个元素生成一行; explode(map)将map里的每一对元素作为一行,其中key为一列,value为一列; 一般情况下,explode函数可以直接使用即可,也可以根据需要结…...
Java集合知识点总结
ArrayListLinkedListLinkedHashSetHashSetTreeSetHashTableHashMapTreeMap是否有序有序有序有序无序自然排序(Comparator)进行排序,默认升序使用的是重写comparTo方法无序无序自动排序元素是否为空可为null可为null不允许可为null不允许键允许…...
培训班出身的同学简历怎么做?面试要注意哪些?来自资深大厂HR的忠告
目录 1 不少培训班候选人的简历中,缺乏足够的商业项目年限 2 直接描述培训班学习经历会带来的负面影响 3 大龄转行Vs年轻的初级程序员,公司一般会如何选择? 4 经过培训班突击后,可以先面试小公司 5 面试官怎么面试有培训班经历…...
Hive3.1.3安装部署_最小化部署_元数据MySQL部署_Hiveserver2部署_metastore部署---大数据之Hive工作笔记0012
hbase 实时分析 hive 离线分析 这里是新版本的hive3.1.3的安装 关于hive的原理之前的博客已经详细说了 可以看到上面是hive运行的原理图 词法分析 语法分析...
javascript:void(0) 含义
我们经常会使用到 javascript:void(0) 这样的代码,那么在 JavaScript 中 javascript:void(0) 代表的是什么意思呢?javascript:void(0) 中最关键的是 void 关键字, void 是 JavaScript 中非常重要的关键字,该操作符指定要计算一个表…...
不用机器学习不用大数据,给你讲通ChatGPT的深层原理
ChatGPT现在看来已经异常火爆了,很多人已经熟知,并且开始练习使用或者开始利用他开始实践了。但仍然有很多人在观望,在疑惑,今天狗哥不用那些高端大气的机器学习亦或是大数据还给你讲通ChatGPT深层到底是个啥逻辑。 目录 1. 聊家…...
JavaScript中的循环类型
JavaScript 中有三种主要的循环类型: for、while 和 do...while。 for: 循环指定次数。 例如: for (let i 0; i < 5; i) {console.log(i); } while: 当条件为真时循环。 例如: let i 0; while (i < 5) {console.log(i);i; } do...while: 先执…...
Spring Boot+Vue前后端分离项目练习02之网盘项目利用token进行登陆验证
1.添加依赖 首先需要添加jwt对应的依赖。 <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version></dependency>2.添加配置 JWT由三部分构成,分别是 header, pa…...
springcloud常见面试题(2023最新)
目录前言一.微服务1.微服务是什么?2.你知道哪些RPC框架3.springCloud和Dubbo有什么区别4. SpringCloud由什么组成二.Spring Cloud Eureka1.Eureka包含几个组件2.Eureka的工作原理3.说一下什么是Eureka的自我保护机制4.什么是CAP原则5.都是服务注册中心,E…...
用户态驱动的两种方式-ixy学习
介绍在Linux下有两种启用用户态驱动的子系统:一个是UIO,另一个是VFIO,ixy这两种都支持。 UIO通过虚拟文件系统sysfs下的内存映射文件来暴露所有必要的接口以完成用户态的驱动。这些基于文件的系统调用接口给了我们充足的权限来获取设备资源而…...
机器学习 | 线性回归(单变量)
前文回顾:机器学习概述📚线性回归概念我们要使用一个数据集,数据集包含俄勒冈州波特兰市的住房价格。在这里,我要根据不同房屋尺寸所售出的价格,画出我的数据集。比方说,如果你朋友的房子是 1250 平方尺大小…...
C++基础知识【3】控制语句
目录 前言 一、条件语句 1.1、if 语句 1.2、if-else 语句 1.3、switch 语句 二、循环语句 2.1、while 循环 2.2、do-while 循环 2.3、for 循环 三、跳转语句 3.1、break语句 3.2、continue语句 3.3、goto语句 四、一些新特性 4.1、if 语句和 switch 语句…...
ImportError: Can not find the shared library: libhdfs3.so解决方案
大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理…...
外汇交易网站建设/长沙网络推广公司
plt.title() 是 matplotlib 库中用于设置图形标题的函数。 一、基本语法如下 plt.title(label, fontdictNone, locNone, padNone, **kwargs)其中: label 是要设置的标题文本,可以是字符串类型或者是数学表达式。fontdict 是一个可选的参数,…...
网站备案到公司名称/手游推广赚佣金的平台
重点内容:创建组件的方法,组件的props属性、state属性的用法和特点,父子组件传值,兄弟组件传值; 开头 其实组件感觉很绕,但是也就几个点,理清思路,学起来就比较容易,所…...
店铺出租转让信息网站建设多少钱/百度sem竞价推广pdf
前言 介于上一篇 「今日头条」前端面试题和思路解析 中提到的 async/await,让我想起了之前写过的一篇文章,在此做个分享。它细说了什么是async函数,以及其相较于 Promise 的优势。 温故而知新,正文开始。 async 函数是什么&#x…...
淮北网站建设/线上渠道推广有哪些方式
jQuery.post(url, [data], [callback], [type]) 通过远程 HTTP POST 请求载入信息。这是一个简单的 POST 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数,请使用 $.ajax。参数 :urlString发送请求地址。data (可选)Map待发送 Key…...
北京做网站建设的公司/旺道网站排名优化
get命令 一、语法 get [-E] [-a] [-c] [-O base] rfile [-o lfile] 选项 说明 -o 指定输出文件的名字,不指定则使用原来的名字 -c 如果失败,持续获取 -E 获取之后,删除源文件 -a 使用ascii模式 -O 指定输出文件存放的目录 二…...
wordpress 安装语言设置中文乱码/扬中网站制作
大家都知道电源适配器有着不同的类型和不同的接口,那么常见的电源适配器接口类型有哪些呢?下面就跟随小编一起来了解下吧!1、串行接口串行接口,简称串口,也就是COM接口,是采用串行通信协议的扩展接口。串口的出现是在…...