当前位置:网站首页>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
边栏推荐
- [ThreadX] h743zi + lan8720 + ThreadX + netx duo transplantation
- for()循环参数调用顺序
- C#【文件操作篇】按行读取txt文本
- vs中的多字节与unicode
- Matching between class template with default template argument and template parameter
- C语言的浪漫
- 在visual stdio中运行qt程序
- Swagger2 generates API documents
- 实现一个计算m~n(m<n)之间所有整数的和的简单函数
- Object array and object pointer
猜你喜欢
【UDS统一诊断服务】(补充)五、ECU bootloader开发要点详解 (2)
【UDS统一诊断服务】一、诊断概述(4)— 基本概念和术语
基于Keras的时装分类案例
C语言的运算符
[UDS unified diagnosis service] i. diagnosis overview (1) - diagnosis overview
Introduction to nonparametric camera distortion model
【UDS统一诊断服务】二、网络层协议(1)— 网络层概述与功能
PHP junior programmers, take orders and earn extra money
深蓝学院激光slam理论与实践 -第二章(里程计标定)作业
ArcGIS license错误-15解决方法
随机推荐
undefined reference to `Nabo::NearestNeighbourSearch
ArcGIS表转EXCEL超出上限转换失败
Robocode教程5——Enemy类
Generate random number
生成验证码
[UDS unified diagnosis service] IV. typical diagnosis service (3) - read fault information function unit (storage data transmission function unit)
gcc ,g++,gdb的安装
Graduation project, curriculum link, student achievement evaluation system
Opencv uses genericindex for KNN search
C语言输入和输出(printf和scanf函数、putchar和getchar函数)
Wechat applet request encapsulation
【UDS统一诊断服务】四、诊断典型服务(6)— 输入输出控制单元(0x2F)
使用TransmittableThreadLocal实现参数跨线程传递
Make your own small program
copy constructor
数组旋转
C语言数组处理批量数据
[UDS unified diagnostic service] II. Network layer protocol (1) - overview and functions of network layer
C语言的运算符
Protection of shared data