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 面试官怎么面试有培训班经历…...
OpenWrt固件下载与配置教程:R5S设备从入门到精通
OpenWrt固件下载与配置教程:R5S设备从入门到精通 【免费下载链接】openwrt openwrt编译更新库X86-R2C-R2S-R4S-R5S-N1-小米MI系列等多机型全部适配OTA自动升级 项目地址: https://gitcode.com/GitHub_Trending/openwrt5/openwrt GitHub_Trending/openwrt5/op…...
低成本部署实践:通义千问1.5-1.8B-Chat-GPTQ-Int4在Ubuntu 20.04上的完整教程
低成本部署实践:通义千问1.5-1.8B-Chat-GPTQ-Int4在Ubuntu 20.04上的完整教程 最近有不少朋友在问,有没有那种对硬件要求不高,但又能跑起来体验一下大模型对话的轻量级方案?毕竟不是人人都有高端显卡。正好,我最近在星…...
美图靠AI一年收入38亿,不靠免费大模型API,靠的是什么?
财报数据显示,美图2025年全年实现营业收入38.6亿元,同比大幅增长28.8%,整体营收规模再创新高,展现出核心业务的强劲增长韧性。不过公司常规账面净利润为7亿元,同比下降12.7%,看似利润下滑的背后,…...
别再只盯着运放了:用跨阻放大器搞定光电传感器信号调理的完整指南
光电传感器信号调理实战:跨阻放大器设计与避坑指南 当你在昏暗的灯光下测试光电传感器时,是否曾被微弱的电流信号折磨得焦头烂额?作为嵌入式工程师,我曾在凌晨三点的实验室里,面对闪烁不定的示波器波形,才…...
避坑指南:RK3588 SD卡刷机时FAT32转EXT4的完整流程(含工具包)
RK3588大容量镜像烧写实战:突破FAT32限制的EXT4全流程解决方案 当你在RK3588开发板上尝试烧写超过4GB的Ubuntu或Debian镜像时,是否遇到过SD卡工具报错?这不是你的操作问题,而是FAT32文件系统的天然限制。本文将带你深入理解这一技…...
VSCode远程开发终极指南:5分钟搞定跳板机+服务器免密配置(附SSH密钥生成教程)
VSCode远程开发终极指南:5分钟搞定跳板机服务器免密配置 每次连接远程服务器都要输入密码、反复跳转终端,是不是已经让你精疲力尽?作为开发者,我们值得拥有更优雅的远程开发体验。今天要分享的这套方案,不仅能让你在VS…...
【C++ 面试突击 · 07】大厂高频面试题:从菱形继承到const与constexpr的博弈深度解析
目录 1. 什么是菱形继承?怎么解决菱形继承? 2. 如何定义一个只能在堆上(栈上)生成对象的类? 3. C 强制类型转换运算符有哪些? 4. C 中的类型推导(auto)是如何工作的?…...
如何通过BaiduNetdiskPlugin实现下载性能提升:面向macOS用户的实用指南
如何通过BaiduNetdiskPlugin实现下载性能提升:面向macOS用户的实用指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 百度网盘作为常用的…...
Jetson Orin上YOLOv8推理慢?手把手教你安装GPU版PyTorch并导出TensorRT引擎
Jetson Orin加速YOLOv8推理:从环境配置到TensorRT引擎优化实战 当你第一次在Jetson Orin上运行YOLOv8时,是否也被那令人窒息的推理速度震惊了?一张图片300多毫秒的处理时间,别说实时视频分析,就连批量处理图片都显得力…...
Cowabunga Lite完全指南:从入门到精通的iOS个性化解决方案
Cowabunga Lite完全指南:从入门到精通的iOS个性化解决方案 【免费下载链接】CowabungaLite iOS 15 Customization Toolbox 项目地址: https://gitcode.com/gh_mirrors/co/CowabungaLite iOS设备的封闭性常常让用户在个性化定制时感到束手束脚,既想…...
