绝大多数的Unix系统从你的终端执行命令,同时将结果返回至终端展示。一个命令从标准输入(Standard Input)中,即终端,读取输入。同样,一个命令会将其结果输出至标准输出(Standard Output)中,即终端。
¶输出重定向 Output Redirection
我们可以很方便的将标准输出转换至文件中,即输出重定向。
我们使用大于号 >
进行输出重定向。
1 | $ echo "hello redirect" > hello.txt |
输出至终端的结果被输出至i.txt文件中
执行cat hello.txt
,输出:hello redirect
再次执行重定向语句
1 | $ echo "line 1" > hello.txt |
执行cat hello.txt
,输出: line 1
第一次重定向至hello.txt的hello redirect已被覆盖
我们可以使用 >>
将新的重定向语句附属至已有的内容后
1 | $ echo "line 2" >> hello.txt |
执行cat hello.txt
,输出:
line 1
line 2
¶输入重定向 Input Redirection
Linux使用 <
进行输入重定向,我们可将输入重定向为文件
1 | $ wc -l hello.txt |
输出:2 hello.txt
1 | $ wc -l < hello.txt |
输出:2
wc -l < hello.txt
,我们将hello.txt重定向为Standard Input,所以wc
命令并不知道文件名,所以只会打印出行数
¶Here document
Here document的通用格式:
command << delimiter
document
delimiter
示例:
1 | wc -l << EOF |
输出:2
¶pipeline
pipeline是串联至一起的一组命令,每个命令的输出都被重定向为下一个命令的输入,
每个命令使用pipe(|
)串联至一起。
1 | $ ls -a | grep hello | less |
¶丢弃输出
当我们执行一个命令,但并不想结果输出至终端时,可将输出重定向至 /dev/null
,/dev/null文件可自动的丢弃指向它的所有输入。
1 | echo discard message > /dev/null |