Linux小贴士 - 重定向

绝大多数的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
2
3
4
wc -l << EOF
Hello bash
from hexo
EOF

输出:2

pipeline

pipeline是串联至一起的一组命令,每个命令的输出都被重定向为下一个命令的输入,
每个命令使用pipe(|)串联至一起。

1
$ ls -a | grep hello | less

丢弃输出

当我们执行一个命令,但并不想结果输出至终端时,可将输出重定向至 /dev/null,/dev/null文件可自动的丢弃指向它的所有输入。

1
echo discard message > /dev/null