当前位置:网站首页>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
边栏推荐
猜你喜欢

C语言实用小技巧合集(持续更新)
![[ThreadX] ThreadX source code reading plan (I)](/img/e0/f182a101af24581c808e1d16a0c1fc.jpg)
[ThreadX] ThreadX source code reading plan (I)

对象的动态建立和释放,赋值和复制

OpenCV使用 GenericIndex 进行 KNN 搜索

Dynamic creation and release, assignment and replication of objects

基于VGG对五种类别图片的迁移学习

Vscode custom comments

C语言循环结构程序

Initialization of classes and objects (constructors and destructors)

cuda工程更换环境(电脑)后遇到的一系列编译问题
随机推荐
Installation of GCC, G + +, GDB
[UDS unified diagnosis service] IV. typical diagnosis service (3) - read fault information function unit (storage data transmission function unit)
C语言输入和输出(printf和scanf函数、putchar和getchar函数)
生成验证码
相机标定:关键点法 vs 直接法
Eigen 库常用基本用法 备忘
CUDA环境安装
C语言进阶要点笔记5
【UDS统一诊断服务】一、诊断概述(1)— 诊断概述
圆整 round 的一点点小细节
Tabbar implementation of dynamic bottom navigation bar in uniapp, authority management
C语言进阶要点笔记2
【UDS统一诊断服务】四、诊断典型服务(3)— 读故障信息功能单元(存储数据传输功能单元)
函数的调用过程
C语言的运算符
猜數字遊戲
TP download folder, compress folder and download
pyppeteer爬虫
Graduation project, curriculum link, student achievement evaluation system
深蓝学院激光slam理论与实践 -第二章(里程计标定)作业