【Linux Shell】shell命令读书笔记---第四章:通配符扩展
来源:互联网 发布:杜兰特身体数据 编辑:程序博客网 时间:2024/05/16 08:45
这章是比较简单的,主要讲述通配符的扩展
4.1 文件名扩展(globbing)
globbing 意思是使用通配符扩展搜索文件,而且不使用path变量:
[root@dev34 daodao]# lsab abc.php abct abc.txt ac a.xml bc bcde cd[root@dev34 daodao]# ls a.*a.xml[root@dev34 daodao]# ls a*ab abc.php abct abc.txt ac a.xml[root@dev34 daodao]# ls a?ab ac[root@dev34 daodao]# ls a{abc}*ls: a{abc}*: 没有那个文件或目录[root@dev34 daodao]# ls a{a,b,c}*ls: aa*: 没有那个文件或目录ab abc.php abct abc.txt ac[root@dev34 daodao]# ls -ld a{a,b,c}*ls: aa*: 没有那个文件或目录-rw-r--r-- 1 root root 0 12-24 11:38 ab-rw-r--r-- 1 root root 0 12-24 11:39 abc.php-rw-r--r-- 1 root root 0 12-24 11:39 abct-rw-r--r-- 1 root root 0 12-24 11:39 abc.txt-rw-r--r-- 1 root root 0 12-24 11:38 ac
[root@dev34 daodao]# ls a[a-z]*ab abc.php abct abc.txt ac
shell有一个特性,比如我b*的时候,如果当模式不匹配任何文件时,回归原来的意思:
比如b* 如果一个都不匹配的时候,就会报错了
如图:
for filename in a* b*do md5sum $filenamedone[root@dev34 daodao]# sh daodao1.shd41d8cd98f00b204e9800998ecf8427e abd41d8cd98f00b204e9800998ecf8427e abc.phpd41d8cd98f00b204e9800998ecf8427e abctd41d8cd98f00b204e9800998ecf8427e abc.txtd41d8cd98f00b204e9800998ecf8427e acd41d8cd98f00b204e9800998ecf8427e a.xmld41d8cd98f00b204e9800998ecf8427e bcd41d8cd98f00b204e9800998ecf8427e bcde[root@dev34 daodao]# rm -rf b*[root@dev34 daodao]# sh daodao1.shd41d8cd98f00b204e9800998ecf8427e abd41d8cd98f00b204e9800998ecf8427e abc.phpd41d8cd98f00b204e9800998ecf8427e abctd41d8cd98f00b204e9800998ecf8427e abc.txtd41d8cd98f00b204e9800998ecf8427e acd41d8cd98f00b204e9800998ecf8427e a.xmlmd5sum: b*: 没有那个文件或目录
这个时候可以使用shopt -s nullglob选项:
[root@dev34 daodao]# vi daodao1.shshopt -s nullglobshopt -s nullglobfor filename in a* b*do md5sum $filenamedone[root@dev34 daodao]# sh daodao1.sh d41d8cd98f00b204e9800998ecf8427e abd41d8cd98f00b204e9800998ecf8427e abc.phpd41d8cd98f00b204e9800998ecf8427e abctd41d8cd98f00b204e9800998ecf8427e abc.txtd41d8cd98f00b204e9800998ecf8427e acd41d8cd98f00b204e9800998ecf8427e a.xml
4.2 正则表达式:
正则表达式和sed结合非常好用,可以参考: http://sed.sourceforge.net/sed1line.txt
例子:
root@dev34 daodao]# cat mytestfoo="hello is bonjour"bar="goodbye is aureviour"fool=$foobar1=$bar[root@dev34 daodao]# sed s/$foo/$bar/g mytestfoo="hello is aureviour"bar="goodbye is aureviour"fool=$foobar1=$bar
4.3 引用:
shell 向外部命令传递参数的方式非常重要,有3种主要形式的引用,单引号,双引号,和反斜线。
最简单的是单引号,可以防止shell解释其中的内容,shell分析的只是与第一个单引号配对的下一个单引号:
单引号和双引号的区别:
[root@dev34 daodao]# hello=5 [root@dev34 daodao]# echo "$hello"5[root@dev34 daodao]# echo '$hello'$hello
如果需要输出let's play a game怎么输出?
[root@dev34 daodao]# echo let's play a game> 'lets play a game[root@dev34 daodao]# echo "let's play a game"let's play a game[root@dev34 daodao]#
当需要在常规字符包含特殊字符的时候,可以用\表示:
比如:
[root@dev34 daodao]# echo "i said ,\"i like you\""
i said ,"i like you"
反斜杠还可以用于续行:
[root@dev34 daodao]# cat cont.sh#!/bin/bashecho foo\bar[root@dev34 daodao]# sh cont.shfoobar
- 【Linux Shell】shell命令读书笔记---第四章:通配符扩展
- 【Linux Shell】shell命令读书笔记---第三章:变量
- 《Linux程序设计第四版》读书笔记 - 第二章 Shell程序设计
- Linux Shell快捷键、通配符
- 二、linux Shell通配符
- linux shell(通配符)
- linux shell通配符
- shell命令中通配符学习
- Shell 脚本编程诀窍 第4章 通配符扩展
- 一、linux shell通配符(wildcard)
- linux下shell通配符说明
- linux shell常用快捷键 通配符
- 【Linux Shell】shell命令读书笔记---第六章:使用循环进行流控制
- hbase shell命令扩展
- Shell 通配符
- shell 通配符
- shell通配符
- SHELL 通配符
- Java零零碎碎的笔记(二)
- 动态绑定/解绑控件变量和控件
- 透明层覆盖在另一层上,透明层在ie6下不能响应事件的解决
- IOS文件下载
- VC读取文件的文件版本号
- 【Linux Shell】shell命令读书笔记---第四章:通配符扩展
- Android 中的WiFi学习笔记(转载)----WIFI启动 代码流程走读---网络连接流程
- 三层交换机学习--三层表项精确匹配和最长匹配
- Load 和Activate 的区别
- Partitioning by Palindromes
- iPhone开发中经常用到的控件尺寸大集合
- UI设计原则
- CRM的客户数据模型:Siebel Party Data Model (VI)
- JQuery select控件的相关操作