管道符与重定向
管道命令符
管道命令符“|”的作用是将前一个命令的标准输出当作后后一个命令的标准输入,格式为“命令A|命令B”。
向zhusaiwei-hbza用户发送一封邮件:
[root@zhusaiwei-hbza ~]# echo "Content" | mail -s "Subject" zhusaiwei-hbza
输入输出重定向
对于输出重定向符有这些情况:
符号 |
作用 |
命令 > 文件 |
将标准输出重定向到一个文件中(清空原有文件的数据) |
命令 2> 文件 |
将错误输出重定向到一个文件中(清空原有文件的数据) |
命令 >> 文件 |
将标准输出重定向到一个文件中(追加到原有内容的后面) |
命令 2>> 文件 |
将错误准输出重定向到一个文件中(追加到原有内容的后面) |
命令 >> 文件 2>$1 |
将标准输出与错误输出共同写入到文件中(追加到原有内容的后面) |
对于输入重定向有这些情况:
符号 |
作用 |
命令 < 文件 |
将文件作为命令的标准输入 |
命令 << 分界符 |
从标准输入中读入,直到遇见“分界符”才停止 |
命令 < 文件1 > 文件2 |
将文件1作为命令的标准输入并将标准输出到文件2 |
将man命令的帮助文档写入到/root/man.txt中:
[root@zhusaiwei-hbza ~]# man bash > /root/man.txt
向readme.txt文件中写入一行文字:
[root@zhusaiwei-hbza ~]# echo "Welcome to LinuxProbe.Com" > readme.txt
向readme.txt中追加一行文字:
[root@zhusaiwei-hbza ~]# echo "Quality linux learning materials" >> readme.txt
查看readme.txt中的内容:
[root@zhusaiwei-hbza ~]# cat readme.txt
Welcome to LinuxProbe.Com
命令行通配符
Bash解释器的支持多种文本通配符包括:
通配符 |
含义 |
* |
匹配零个或多个字符。 |
? |
匹配任意单个字符。 |
[0-9] |
匹配范围内的数字。 |
[abc] |
匹配已出的任意字符。 |
查看sda开头的所有设备文件:
[root@zhusaiwei-hbza ~]# ls /dev/sda*
/dev/sda /dev/sda1 /dev/sda2
查看sda后面有一个字符的设备文件:
[root@zhusaiwei-hbza ~]# ls /dev/sda?
/dev/sda1 /dev/sda2
查看sda后面包含0-9数字的设备文件:
[root@linuxprobe ~]# ls /dev/sda[0-9]
/dev/sda1 /dev/sda2
查看sda后面是1或3或5的设备文件:
[root@zhusaiwei-hbza ~]# ls /dev/sda[135]
/dev/sda1
另外bash解释器还支持很多的特殊字符扩展:
字符 |
作用 |
(反斜杠) |
转义后面单个字符 |
''(单引号) |
转义所有的字符 |
""(双引号) |
变量依然生效 |
``(反引号) |
执行命令语句 |
定义名称为PRICE的变量值为5:
[root@zhusaiwei-hbza ~]# PRICE=5
想要输出”价格是5″:
[root@zhusaiwei-hbza ~]# echo "Price is $PRICE"
Price is 5
想要输出”价格是$5″,但因为美元符号与代表变量取值的$符号冲突了,所以报错了:
[root@zhusaiwei-hbza ~]# echo "Price is $$PRICE"
Price is 3767PRICE
添加一个反斜杠,将第一个$符号转义:
[root@zhusaiwei-hbza ~]# echo "Price is $$PRICE"
Price is $5
使用单引号,变量将不再被取值:
[root@zhusaiwei-hbza ~]# echo 'Price is $$PRICE'
Price is $$PRICE
执行uname -a后可以查看到本机内核的版本与架构信息(反引号里面的命令会被执行):
[root@zhusaiwei-hbza ~]# echo `uname -a`
Linux zhusaiwei-hbza.com 3.10.0-123.el7.x86_64 #1 SMP Mon May 5 11:16:57 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux