本文档介绍了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.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/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的正确输出不显示在屏幕上面 |
让我们通过一个命令来深刻了解管道符‘|’。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 –pv 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 –pv root who.out -i, --ignore-interrupts //忽略中断信号 |