Linux学习记录:I/O重定向与管道

发布时间 2023-11-15 15:15:10作者: 长白山守墓人

1.文件描述符

数据流又可分为 标准输入流 、标准输出流和标准标准错误流。 这三种流向对应着相关的文件描述符, 默认描述符范围是:0-2。

0:标准输入 1:标准输出 2:标准错误 3以上为常规文件的描述符

2.重定向

输入重定向:指的是重新指定设备来代替键盘作为新的输入设备;  输出重定向:指的是重新指定设备来代替显示器作为新的输出设备。

3.输出重定向

覆盖:

命令 1> 文件:将命令执行的标准输出结果重定向输出到指定的文件中,如果该文件已包含数据,会清空原有数据,再写入新数据。(1可省略)

命令 2>文件: 将命令执行的错误输出结果重定向输出到指定的文件中,如果该文件已包含数据,会清空原有数据,再写入新数据。(2不可省略)

覆盖:

命令 1>>文件:将命令执行的标准输出结果重定向输出到指定的文件中,如果该文件已包含数据,新数据将写入到原有内容的后面。(1可省略)

命令 2>>文件:将命令执行的错误输出结果重定向输出到指定的文件中,如果该文件已包含数据,新数据将写入到原有内容的后面。(2不可省略)

1>&2 :把标准输出重定向到标准错误。因为用了&这个时候2不是普通文件,而是表示标准错误。

2>&1 :把标准错误输出重定向到标准输出。因为用了&这个时候1不是普通文件,而是表示标准输出。

2>&1 >file :错误输出到终端(标准输出),标准输出重定向到文件file,等同于1 > file 2>&1(标准输出重定向到文件,错误重定向到标准输出)。

 4.输入重定向

命令 < 文件:将指定文件作为命令的输入设备

命令 << 分界符:表示从标准输入设备(键盘)中读入,直到遇到分界符才停止(读入的数据不包括分界符),这里的分界符其实就是自定义的字符串。

命令 < file 1 > file 2 :将file 1作为命令的输入设备,该命令的执行结果输出到file 2中。

例:使用dd命令从/dev/zero中读取数据并写入到file01.txt文件,每次写入1MiB,一共写入2次。

5.进程管道

管道实际上也是一种重定向,重定向字符控制输出到文件,管道控制输出到其他程序。

例:

将/etc/passwd中的用户按UID数值大小排序并显示前三行:

 打印当前所有ip:

 

这节课学了很多,主要详细了解了输入输出重定向,有些命令还不太熟悉,希望通过练习熟练掌握这些命令。