关于重定向含义
顾名思义,所谓重定向就是相对于标准输入输出,改变输入输出的方向。标准输入设备是键盘,标准输出设备为屏幕。
因此,输入重定向,就是改变输入设备并用新的设备来代替键盘输入;输出重定向,就是改变输出设备,指定新的输出设备来代替屏幕。
输入重定向
输入重定向有三种固定格式:
命令符号格式 | 作用 |
命令 < 文件 | 将指定文件作为命令的输入设备 |
命令 << 分界符 | 表示从标准输入设备(键盘)中读入,直到遇到分界符才停止(读入的数据不包括分界符),这里的分界符其实就是自定义的字符串 |
命令 < 文件 1 > 文件 2 | 将文件 1 作为命令的输入设备,该命令的执行结果输出到文件 2 中。 |
[root@localhost ~]# cat /etc/passwd
#这里省略输出信息,读者可自行查看
[root@localhost ~]# cat < /etc/passwd
#输出结果同上面命令相同
注意,虽然执行结果相同,但第一行代表是以键盘作为输入设备,而第二行代码是以 /etc/passwd 文件作为输入设备。
一般来说,输入重定向用的比较少,输出重定向用得更多。
输出重定向
输出重定向就是将原来输入的屏幕的内容,输出的别的设备(文件也是设备)。
有两个需要注意的点:
输出重定向命令中,>和>> 的区别在于,> 输出时会覆盖原来的内容,而>>会在原来文件的末尾进行追加写,不会覆盖原来内容。
输出有标准输出和标准错误输出。2代表标准错误(0标准输入,1代表标准输出)
命令 > 文件 | 将命令执行的标准输出结果重定向输出到指定的文件中,如果该文件已包含数据,会清空原有数据,再写入新数据。 |
命令 2> 文件 | 将命令执行的错误输出结果重定向到指定的文件中,如果该文件中已包含数据,会清空原有数据,再写入新数据。 |
命令 >> 文件 | 将命令执行的标准输出结果重定向输出到指定的文件中,如果该文件已包含数据,新数据将写入到原有内容的后面。 |
命令 2>> 文件 | 将命令执行的错误输出结果重定向到指定的文件中,如果该文件中已包含数据,新数据将写入到原有内容的后面。 |
命令 >> 文件 2>&1 或者 命令 &>> 文件 | 将标准输出或者错误输出写入到指定文件,如果该文件中已包含数据,新数据将写入到原有内容的后面。注意,第一种格式中,最后的 2>&1 是一体的,可以认为是固定写法。 |
参考文章: