|
|
|
|
公众号矩阵

1.4.1 星号

《UNIX/Linux/OS X中的Shell编程(第4版)》第1章基础概述,本章将会对UNIX系统进行简要讲述,其中包括文件系统、基本命令、文件名替换、I/O重定向及管道。本节为大家介绍星号。

作者:门佳 译来源:人民邮电出版社|2018-01-30 14:21

1.4 文件名替换

1.4.1 星号

在UNIX系统中,Shell拥有一个强大的特性:文件名替换。假设你的当前目录下有以下文件:

  1. $ ls  
  2. chaptl  
  3. chapt2  
  4. chapt3  
  5. chapt4  

如果你想同时显示这些文件的内容的话,很简单:cat命令能够显示出在命令行中所指定的多个文件的内容。就像这样:

  1. $ cat chaptl chapt2 chapt3 chapt4  
  2. ...  

但是这种方法太麻烦了。你可以借助于文件名替换,只需要简单地输入:

  1. $ cat *  
  2. ...  

Shell会自动将模式 *替换成当前目录下能够匹配到的所有文件名。如果你在其他命令中使用 *,相同的替换过程一样会发生。那么echo命令呢?

  1. $ echo *  
  2. chaptl chapt2 chapt3 chapt4  

在这里,*又一次被替换成当前目录中的所有文件名,然后用echo命令显示出了这些文件名。

命令行中只要是 *出现的地方,Shell都会进行替换:

  1. $ echo * : *  
  2. chaptl chapt2 chapt3 chapt4 : chaptl chapt2 chapt3 chapt4  

*能够实现部分文件替换功能,它实际上还可以与其他字符配合使用,以限制所能够匹配到的文件名范围。

举例来说,假设在当前目录下不仅有chapt1~chapt4这些文件,还包括文件a、b和c:

  1. $ ls  
  2. a  
  3. b  
  4. c  
  5. chaptl  
  6. chapt2  
  7. chapt3  
  8. chapt4  

要想只显示出以chap开头的文件,可以输入:

  1. $ cat chap*  
  2. .  
  3. .  
  4. .  

chap *能够匹配以chap开头的所有文件。在指定的命令被调用之前,这些文件名替换就已经完成了。

*并不仅限于放在文件名尾部,它还可以出现在开头或中间的位置:

  1. $ echo *t1  
  2. chaptl  
  3. $ echo *t*  
  4. chaptl chapt2 chapt3 chapt4  
  5. $ echo *x  
  6. *x  

在***个echo中,*t1指定了所有以字符t1作为结尾的文件名。在第二个echo中,****能够匹配t字符之前的任意多个字符,另一个*匹配t之后的任意多个字符,因此,只要包含t的文件名,就会被打印出来。因为没有以x作为结尾的文件名,所以***一个例子中并没有发生替换,echo命令也就只是显示出了*x。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

16招轻松掌握PPT技巧

16招轻松掌握PPT技巧

GET职场加薪技能
共16章 | 晒书包

289人订阅学习

20个局域网建设改造案例

20个局域网建设改造案例

网络搭建技巧
共20章 | 捷哥CCIE

645人订阅学习

WOT2019全球人工智能技术峰会

WOT2019全球人工智能技术峰会

通用技术、应用领域、企业赋能三大章节,13大技术专场,60+国内外一线人工智能精英大咖站台,分享人工智能的平台工具、算法模型、语音视觉等技术主题,助力人工智能落地。
共50章 | WOT峰会

0人订阅学习

读 书 +更多

J2EE应用开发(WebLogic+JBuilder)(第二版)

本书介绍如何将最流行的J2EE应用服务器WebLogic Server和最好的Java集成开发工具JBuilder结合起来开发J2EE应用,主要内容包括:WebLogic Se...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO播客