当前位置:网站首页>Shell脚本的通配符和特殊符号
Shell脚本的通配符和特殊符号
2022-04-23 05:50:00 【tilblackout】
通配符:
符号 |
意义 |
* |
0到无穷个任意字符 |
? |
一个任意字符 |
[] |
如[abcd]表示a,b,c,d中任意一个 |
[-] |
在编码顺序内的所有字符,如[0-9]表示0到9间的数字 |
[^] |
反向选择,如[^abc]表示非a,b,c的其它字符 |
特殊符号:
符号 |
内容 |
| |
管线:分割两个管线命令的界定 |
& |
工作控制:将指令变为后台运行 |
>,>> |
数据流重导向:输出导向,分别是“取代”与“累加” |
<,<< |
数据流重导向:输入导向 |
(1)数据流重导向:将某个指令执行后应该出现在屏幕上的数据(stdout/stderr)传输到其它地方
- 标准输入(0):使用<或<<
- 标准输出(1):使用>或>>
- 标准错误(2):使用2>或2>>(不写数字默认为1)
例子:
例1:
ll / > ~/rootfile #输出根目录内容到文件
>:如果文件不存在则创建,存在则覆盖
>>:存在则追加
例2:
find /home -name .bashrc>list_right 2>list_error #将stdout与stderr存到不同的档案
例3:将正确和错误的信息都写入list中
find /home -name .bashrc>list 2>list #错误
find /home -name .bashrc>list 2>&1 #正确
find /home -name .bashrc &>list #正确
例4:
cat > catfile #用户输入字符,然后保存到catfile中
cat > catfile < ~/.bashrc #输入的字符由bashrc提供保存在catfile中(拷贝)
例5:
cat > catfile << "eof" #<<代表结束的输入字符,输入eof则结束输入
注意:
- /dev/null黑洞设备,可以将不需要的信息输出到/dev/null中
find /home -name .bashrc 2>/dev/null #将错误数据丢弃,正确数据显示到屏幕
(2)管道符号“|”的使用:
ls -al /etc|less #ls的stdout作为less命令的stdin
- 在"|"后面的指定必须是管线命令(可以接受stdin),如less、more、head、tail
- 管线命令仅会处理stdout,对于stderr会忽略
常见管道命令例子:
1.cut
cut -d '分隔字符' -f fields #-f为取出第几段,结果下标从1开始
cut -c 字符区间 #以字符为单位取出固定字符区间
例:
echo $PATH | cut -d ':' -f 5 #取出第5个
echo $PATH | cut -d ':' -f 3,5 #取出第3与第5个
export | cut -c 12- #取出第12个字符后的字符串
export | cut -c 12-20 #取出12-20的字符串
2.grep
选项:--color=auto 可在结果中高亮关键字
例:
last | grep 'root' #取出有root的行
last | grep -v 'root' #取出没有root的行
last | grep 'root' |cut -d ' ' -f1 #取出有root的行的第一列
3.sort:排序
-t:分割符 -k:以分隔结果的哪个区间排序 -r:反向排序 -f:忽略大小写 -b:忽略最前面的空格 -n以数字排序
例:将帐号进行排序
cat /etc/passwd | sort
cat /etc/passwd | sort -t ':' -k 3 #以第三栏排序
cat /etc/passwd | sort -t ':' -k 3 -n #上述排序以字符串排序,1会出现在11后面,-n指出按数字排序
4.uniq:去除重复
例:
last | cut -d ' ' -f1 | sort | uniq [-c] #去除重复,-c为计数
5.wc:统计
例:
cat /etc/man.config | wc #输出的三个数字分别代表:行、字数、字符数
6.tee:作为管道的输入,同时也输出到屏幕
last | tee last.list #输出到屏幕和last.list
7.tr:删除或替换文字
-d:删除后面接的字符串 -s:取代重复的字符
例:
last | tr '[a-z]' '[A-Z]'
cat /etc/passwd | tr -d ':' #将结果中的冒号删除
减号-的用途
在管道命令中,会用前一个指令的stdout作为这次的stdin,某些指令需要用到文件名来处理时,该stdin与stdout可以利用减号“-”来代替。例:
tar -cvf - /home | tar -xvf -
- 用tar打包/home,文件名位置填“-”,打包的数据传送到stdout,则后面的tar的“-”就是前一个指令的stdout。
版权声明
本文为[tilblackout]所创,转载请带上原文链接,感谢
https://blog.csdn.net/tilblackout/article/details/123411524
边栏推荐
- Generate random number
- _findnext 报错
- 类的继承与派生
- [opencv] use filestorage to read and write eigenvectors
- PM2 deploy nuxt project
- 【UDS统一诊断服务】四、诊断典型服务(3)— 读故障信息功能单元(存储数据传输功能单元)
- 类和对象
- [UDS unified diagnostic service] II. Network layer protocol (2) - data transmission rules (single frame and multi frame)
- OpenCV使用 GenericIndex 进行 KNN 搜索
- C#【文件操作篇】按行读取txt文本
猜你喜欢
[untitled]
Dynamic creation and release, assignment and replication of objects
Swagger2 generates API documents
深蓝学院激光slam 理论与实践 第三章激光雷达去畸变 作业习题
基于TensorFlow的线性回归实例
【UDS统一诊断服务】三、应用层协议(1)
【UDS统一诊断服务】一、诊断概述(4)— 基本概念和术语
Eigen 学习总结
cv_bridge 与opencv 版本不匹配的解决
C [document operation] PDF files and pictures are converted to each other
随机推荐
C语言实用小技巧合集(持续更新)
爬虫效率提升方法
PM2 deploy nuxt related commands
realsense 选型大对比D455 D435i D415 T265 3D硬件对比
产生随机数
Eigen 学习总结
[UDS unified diagnostic service] III. application layer protocol (1)
vs中的多字节与unicode
[UDS unified diagnosis service] i. diagnosis overview (3) - ISO 15765 architecture
Swagger2 generates API documents
爬取小米有品app商品数据
【UDS统一诊断服务】四、诊断典型服务(5)— 功能/元件测试功能单元(例行程序功能单元0x31)
cuda工程更换环境(电脑)后遇到的一系列编译问题
ArcGIS license错误-15解决方法
ROS包nmea_navsat_driver读取GPS、北斗定位信息笔记
C语言进阶要点笔记2
日志写法(带时间)
jenkspy包安装
[UDS unified diagnostic service] i. overview of diagnosis (4) - basic concepts and terms
【学习一下】HF-Net 训练