玩转linux第三天通配符、组合键、IO重定向及管道详解(四)

1    前言

本文档介绍了bash其中的一个特性如文件名通配符、组合键、IO重定向及管道,为了便于理解会提供相应使用案例。

学习这些bash特性是一个Linux爱好者需要具备的首要条件,让小编带领你们进入Linux的世界看看它的一颦一笑。

读者对象

    本文档(本指南)主要适用于以下人员:

                          Linux爱好者

2     环境简介

项目 配置
硬件型号 Tinkpad T440P
CPU I5-4210
内存 4G
操作系统 Windows 8.1
虚拟系统 Vmware workstation 11
CPU 1Core
内存 1G
操作系统 Centos 7.1

3     Bash特性详解

3.1   golb文件名“通配机制”

通配符是一种特殊语句,主要有星号(*)和问号(?),用来模糊搜索文件。当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正的字符

示例:

*:匹配任意长度的任意字符;

[root@localhost ~]# ls /tmp/t*

/tmp/testfile2

/tmp/test1:

?:匹配任意单个字符;

[root@localhost ~]# ls /tmp/test1/a?b

/tmp/test1/a1b:

/tmp/test1/a2b:

/tmp/test1/a3b:

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

[root@localhost ~]# ls /tmp/test[0-9]

/tmp/test1:

/tmp/test2:

/tmp/test3:

[^] 匹配范围外的任意单个字符如:[^a-b]

[root@localhost ~]# ls /tmp/test[^a-b]

/tmp/test1:

/tmp/test2:

/tmp/test3:

字符集合

[:lower:] 小写字母

[:upper:] 大写字母

[:alpha:] 所有字母

[:digit:] 所有数字

[:space:] 所有字母和数字

[:punct:] 所有标点

[:alnum:] 所有空白字符

让我们做几个小练习吧

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

[root@localhost ~]# ls /etc/[^a-z]*[[:alpha:]]

/etc/4yhelo

/etc/6udcd:

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

[root@localhost ~]# cp -r /etc/*.d /tmp/magedu.com/

 

3.2   组合键

组合键表示2个或3个键组合在一起使用,来实现某一项功能,这样就简化了步骤。通常是依次按住每个键不放,到最后实现目的。

Ctrl+l:清屏

              Ctrl+a: 切换至命令行首

              Ctrl+e:切换至命令行尾

              Ctrl+c:取消命令执行

              Ctrl+u:删除光标所在处至行首的内容;

              Ctrl+k: 删除光标所在处至行尾的内容;

3.3   i/o 重定向

所谓I/O重定向简单来说就是一个过程,这个过程捕捉一个文件,或者命令,程序,脚本,甚至脚本中的代码块(codeblock)的输出,然后把捕捉到的输出,作为输入发送给另外一个文件,命令,程序,或者脚本。

输入重定向使用“<<<”实现

  tr 把提供的文本 替换或删除文本中的文字

  -d 删除字符

[root@localhost ~]# cat >>/tmp/test/testfile1 <<EOF

> 3

> 5

> 6

> EOF

[root@localhost ~]# cat /tmp/test/testfile1

5

6

输出重定向使用“> >>”实现

如:command > new_pos command>> new_pos

“>”又叫覆盖重定向

[root@localhost ~]# ls /var > /tmp/test/testfile1

[root@localhost ~]# cat /tmp/test/testfile1

“>>“又叫 追加重定向:保留原有内容再复制新内容

ls >> /tmp/test/testfile1

[root@localhost ~]# cat /tmp/test/testfile1

set -C 关闭覆盖重定向

set +C 开启

错误重定向

  2>  覆盖

[root@localhost ~]# vii 2> /tmp/test/testfile1

  2>> 追加

同时重定向标准输出流和错误输出流

      command >/path/to/file.out 2>/path/to/file.err

[root@localhost ~]# lss > /tmp/test/testfile1 2> /tmp/test/testfile2 //正确输入文件1错误输入到文件2

[root@localhost ~]# cat /tmp/test/testfile2

-bash: lss: command not found

[root@localhost ~]# cat /tmp/test/testfile1

      command > /path/to/file.out 2>&1

      command &> /path/to/file.out

 

3.4   管道符

管道命令操作符是:”|”,它仅能处理经由前面一个指令传出的正确输出信息,也就是 standard output 的信息,对于 stdandard error 信息没有直接处理能力。然后,传递给下一个命令,作为标准的输入 standard input.管道命令使用说明:

command1正确输出,作为command2的输入 然后comand2的输出作为,comand3的输入,comand3输出就会直接显示在屏幕上面了。通过管道之后:comand1,comand2的正确输出不显示在屏幕上面              
注意:1、管道命令只处理前一个命令正确输出,不处理错误输出              
      2
、管道命令右边命令,必须能够接收标准输入流命令才行

让我们通过一个命令来深刻了解管道符‘|’。tee命令表示从标准输入读取和写入标准输出和文件(及使用此命令可以使输入的数据输出到屏幕和文件中)

示例:

[root@localhost ~]# who | tee /tmp/test/testfile1  //命令的输入输出到testfile1文件中

root     pts/0        2015-08-24 16:11 (192.168.11.1)

root     pts/1        2015-08-24 16:25 (192.168.11.1)

[root@localhost ~]# cat /tmp/test/testfile1   //查看文件内容

root     pts/0        2015-08-24 16:11 (192.168.11.1)

root     pts/1        2015-08-24 16:25 (192.168.11.1)

 

选项详解

-a, --append       //附加到既有文件的后面,而非覆盖它

[root@localhost ~]# ls  |tee -a /tmp/test/testfile1  

install.log.syslog

mylinux

�Cpv

root

who.out

[root@localhost ~]# cat /tmp/test/testfile1    //没有被覆盖而是追加输入到其中

root     pts/0        2015-08-24 16:11 (192.168.11.1)

root     pts/1        2015-08-24 16:25 (192.168.11.1)

install.log.syslog

mylinux

�Cpv

root

who.out

-i, --ignore-interrupts   //忽略中断信号

 

你可能感兴趣的:(linux,通配符,组合键,管道符,io重定向)