您的位置:首页 > 运维架构 > Shell

20150823-Bash的基础特性(2)

2015-08-24 17:45 453 查看

概述

在前面部分,我们学习了bash的一些基础特性,现在我们继续学习bash的基础特性,在部分中,我们将学习bash的文本通配、快捷键、IO重定向及管道的特性。

bash的基础特性

(1)glob
在bash中,支持文本名“通配”的功能,叫做glob机制。
参数信息:
*:匹配任意长度的任意字符;



?:匹配任意单个字符;



[]: 匹配指定范围内的任意单个字符;



[^]:匹配指定范围外的任意单个字符;




[]还支持一些专用的字符集合:
[:lower:] 指定就匹配小写字母



[:upper:] 指定就匹配大写字母



[:alnum:] 所有的字母,包括大小写、数字



[:digit:] 所有数字



[:space:] 所有的空白字符
[:punct:] 标点符号
需要将这些内容全部放入中括号中使用。

练习:
显示/etc/目录下,以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录;

复制/etc目录下,所有以.d结尾的文件或目录至/tmp/mageedu.com目录中;




(2)快捷键(组合键)
在使用bash的时候,可以使用以下快捷键:
Ctrl+l:清屏
Ctrl+a: 切换至命令行首
Ctrl+e:切换至命令行尾
Ctrl+c:取消命令执行
Ctrl+u:删除光标所在处至行首的内容;
Ctrl+k: 删除光标所在处至行尾的内容;

(3)IO重定向和管道
程序由指令加数据组成;指令由我们的程序所提供,而数据可能有变量或者是指明的文件路径中的配置文件所提供。所以在执行程序时,程序需要读取数据,对这些数据进行加工,并且在加工完成之后将数据输出。所以一般程序都需要读入数据和输出数据,都有这样的需求。
所以我们任何一种程序都有输入流和输出流这两种概念,对Linux而言,这个输入流和输出流默认情况下都会有一个标准位置或者默认位置,否则就会有多个位置可以实现读入和多个位置实现输出。另外,Linux下,每一个打开的文件都一个fd:file descriptor【文件描述符】,文件描述符在Windows当中我们通常称之为文件句柄。因为在操作系统当中,内核容易识别的是数字而非文件名。
标准输入:keyboard,是指键盘,文件描述符通常用0来表示, 设备在/dev/stdin
标准输出:monitor,指监视器,比如我们的电脑显示屏,文件描述符通常使用1来表示,设备在/dev/stdout;
标准错误输出:monitor, 也是使用显示器进行输出,通常文件描述符使用2来表示, 设备在/dev/stderr。
而所谓的I/O重定向,就是改变这些标准位置的。I/O重定向通常包含输入重定向、输出重定向以及错误重定向。
输出重定向的使用:
命令 > 新位置,
命令 >> 新位置
在命令中:
>:表示覆盖重定向;
>>:表示追加重定向;
如果我们使用>不小心把文件覆盖掉,而我们的文件由十分的重要,那么这个命令就会造成破坏性的作用,我们可以使用以下命令安全的使用覆盖重定向的功能:
set -C
这个命令并不是禁止使用覆盖重定向,而是指如果覆盖重定向目标文件存在,则禁止执行;而若干目标文件存在,我们也想继续进行覆盖重定向,确认不会造成破坏性给损失,那么我们可以使用:
>| 这个符号继续执行覆盖重定向。
而关闭覆盖重定向功能,使用以下命令即可实现:
set +C

错误重定向的使用:
2>:覆盖
2>>:追加

同时重定向标准输出流和错误输出流:
示例1:COMMAND > /path/to/file.out 2> /path/to/file.err
示例2:COMMAND > /path/to/file.out 2>&1 标准输出重定向至一个文件,一旦错误,也输出至第一个输出文件位置,即输出都至一个文件。
示例3:COMMAND &> /path/to/file.out 重定向至同一个文件

输入重定向使用:
在特殊命令下才有用。大多数命令自动使用参数来读入输入流。
输入重定向使用 < 来实现。




tr命令:
作用:tr用来从标准输入中通过替换或删除操作进行字符转换。
格式:tr [选项]... SET1 [SET2]
参数:
-d: 删除字符
使用说明:使用tr时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换。tr刚执行时,字符串1中的字符被映射到字符串2中的字符,然后转换操作开始。
示例1:字符转换



示例2:删除指定字符




在输入重定向中,<< 作用是生成文档的,把对方输入的内容一次性的保存到某个文件中。
格式:cat >> /path/to/somefile << EOF EOF是文档结束标志符




管道使用:
管理是什么?管道就是前一个命令的输出可以用作后一个命令的输入。可以使用管理来组合小程序完成复杂任务。
管道使用通过 | 符号来实现。
格式:COMMAND1 | COMMAND2 | ...




练习:tee命令的用法;
tee命令:
作用:读取标准输入的数据,并将其内容输出成文件。
格式:tee [选项] 文件
参数:
-a或--append  附加到既有文件的后面,而非覆盖它.
  -i-i或--ignore-interrupts  忽略中断信号。
使用说明:tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。
示例1:和管道结合使用



本文出自 “我拿流年乱了浮生” 博客,请务必保留此出处http://tasnrh.blog.51cto.com/4141731/1687750
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: