Linux 中大部分命令都具有标准的输入/输出设备端口,重定向就是不使用系统的标准输入端口,标准输出端口和标准错误输出端口,而进行重新的指定,所以重定向分为输入、输出和错误重定向,通常情况下重定向到一个文件。
命令 | 说明 |
---|---|
command > file | 将输出重定向到 file。 |
command < file | 将输入重定向到 file。 |
command >> file | 将输出以追加的方式重定向到 file。 |
command << sep | 表示从标准输入设备(键盘)中读入,直到遇到分界符才停止(读入的数据不包括分界符),这里的分界符其实就是自定义的字符串。 |
command < file1 > file2 | 将文件 file1 作为命令的输入设备,该命令的执行结果输出到 file2 中。 |
n > file | 将文件描述符为 n 的文件重定向到 file。 |
n >> file | 将文件描述符为 n 的文件以追加的方式重定向到 file。 |
n >& m | 将输出文件 m 和 n 合并。 |
n <& m | 将输入文件 m 和 n 合并。 |
<< tag | 将开始标记 tag 和结束标记 tag 之间的内容作为输入。 |
command > /dev/null 2>&1 | 忽略命令所有的输出。 |
输出重定向就是将输出,重定向到文件或其他地方,输出重定向就是从文件或者其他地方读取输入。
名称 | 文件描述 | 含义 | 设备 | 说明 |
---|---|---|---|---|
STDIN | 0 | 标准输入 | 键盘 | 命令在执行时所要的输入数据通过它来取得 |
STDOUT | 1 | 标准输出 | 显示器 | 命令在执行后的输出结果从该端口送出 |
STDERR | 2 | 标准错误 | 显示器 | 命令执行时的错误信息通过该端口送出 |
文件描述符 0 通常是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)。
实例 | 描述 |
---|---|
command > file | 将输出重定向到 file。 |
command < file | 将输入重定向到 file。 |
command >> file | 将输出以追加的方式重定向到 file。 |
Linux 中重定向常用的就是输入与输出重定向,注意 > 与 >> 的区别,>> 是追加写文件。
command > file
我们使用 pwd 命令,输出当前的路径到终端,具体命令如下:
pwd
运行后,终端输出如下:
我们看到,在终端输出了当前命令输出,现在,我们将当前命令的输出重定向到文件中,具体命令如下:
pwd > haicoder.txt
运行后,终端输出如下:
这次,我们看到,终端没有输出命令的结果,因此,此时被重定向到了文件中了,现在,我们使用 cat 命令查看文件内容,具体命令如下:
cat haicoder.txt
运行后,终端输出如下:
我们可以看到,文件中写入了 pwd 命令的结果,即,我们使用了重定向将命令的输出重定向到了文件中。
command >> file
我们使用 pwd 命令,输出当前的路径到终端,具体命令如下:
pwd
运行后,终端输出如下:
我们看到,在终端输出了当前命令输出,现在,我们将当前命令的输出重定向到文件中,具体命令如下:
pwd > haicoder.txt
运行后,终端输出如下:
这次,我们看到,终端没有输出命令的结果,因此,此时被重定向到了文件中了,现在,我们使用 cat 命令查看文件内容,具体命令如下:
cat haicoder.txt
运行后,终端输出如下:
我们可以看到,文件中写入了 pwd 命令的结果,即,我们使用了重定向将命令的输出重定向到了文件中,现在,我们再次执行重定向,具体命令如下:
pwd > haicoder.txt
运行后,我们使用 cat 命令再次查看文件内容,,具体命令如下:
cat haicoder.txt
运行后,终端输出如下:
我们看到,此时文件内容还是一条记录,因为使用 > 重定向会清空原来的文件内容,现在,我们使用 >> 以追加的方式进行重定向,具体命令如下:
pwd >> haicoder.txt
运行后,终端输出如下:
现在,我们使用 cat 命令查看文件内容,具体命令如下:
cat haicoder.txt
运行后,终端输出如下:
我们可以看到,这次文件中写入了两次 pwd 的执行结果,即,我们使用了 >> 将命令执行结果以追加的方式重定向到了文件中。
command < file
我们使用 cat 命令,以输入重定向的方式读取文件内容,具体命令如下:
cat < haicoder.txt
运行后,终端输出如下:
我们看到,在终端输出了文件内容,即,我们使用了输入重定向获取了输入。
command > /dev/null 2>&1
我们使用 cat 命令,读取文件内容,具体命令如下:
cat haicoder.txt
运行后,终端输出如下:
我们看到,在终端输出了文件内容,现在,如果我们仅仅是想执行这条命令,但不关心该命令的输出,那么我们可以将该命令的输出重定向到 null 文件中,具体命令如下:
cat haicoder.txt > /dev/null
运行后,终端输出如下:
我们将输出重定向到了 null 文件中,因此屏幕没有任何输出,在该命令的执行过程中,还可能发生错误,如果我们还希望将错误也重定向,那么我们可以使用如下命令:
cat haicoder.txt > /dev/null 2>&1
运行后,终端输出如下:
这样,我们就可以忽略所有的输出了。
Linux 中大部分命令都具有标准的输入/输出设备端口,重定向就是不使用系统的标准输入端口,标准输出端口和标准错误输出端口,而进行重新的指定,所以重定向分为输入、输出和错误重定向,通常情况下重定向到一个文件。