一、输出重定向
> | 输出重定向 |
---|---|
>> | 追加重定向 |
最基本的重定向将命令的输出发送到一个文件中。bash shell 用大于号( > )来完成这项功能。
command > outputfile
例如:
输出重定向
[root@CHENDAJIE sh.test]# date > a #此时创建了一个新的文件a
[root@CHENDAJIE sh.test]# ls -l a #通过默认的umask设置
-rw-r--r-- 1 root root 43 10月 8 21:21 a
[root@CHENDAJIE sh.test]# cat a #查看该文件内容
2019年 10月 08日 星期二 21:21:28 CST
这个例子中:重定向操作符创建了一个文件a,并将date命令的输出重定向到该文件中。如果输出文件已经存在,则会覆盖该文件。
[root@CHENDAJIE sh.test]# who > a
[root@CHENDAJIE sh.test]# cat a
chendajie pts/0 2019-10-08 20:33 (172.17.2.69)
chendajie pts/1 2019-10-08 20:33 (172.17.2.69)
现在a文件的内容就是who命令的输出。
如果你不想覆盖文件原内容,而是想要在命令的输出追加到已有文件中,这种情况,可以使用双大于号( >> )来追加数据
追加重定向
[root@CHENDAJIE sh.test]# date >> a
[root@CHENDAJIE sh.test]# cat a
chendajie pts/0 2019-10-08 20:33 (172.17.2.69)
chendajie pts/1 2019-10-08 20:33 (172.17.2.69)
2019年 10月 08日 星期二 21:32:01 CST
输入重定向
< | 输入重定向 |
---|---|
<< | 内联输入重定向 |
command < inputfile
输入重定向
例:
[root@CHENDAJIE sh.test]# wc < a
3 16 151
wc命令可以对数据中的文本进行计数。默认情况下,它会输出如下3个值:
1、文本的行数
2、文本的词数
3、文本的字节数
内联输入重定向
内联输入重定向符号是远小于号( << )。除了这个符号,必须指定一个文本标记来划分输入数据的开始和结尾。任何字符串都可以作为文本标记,但是数据的开始和结尾文本标记必须一致。
command << marker
data
marker
在命令行上使用内联输入重定向时,shell会用PS2环境变量中定义的次提示符。
例如:
[root@CHENDAJIE sh.test]# wc << EOF
> test string 1
> test string 2
> test string 3
> EOF
3 9 42
3:3行
9:9个单词
42:42个字节
次提示符会持续提示,以获取更多的输入数据,知道你输入了作为文本标记的那个字符串。wc命令会对内联输入重定向提供的数据进行:行、词、字节计数。