Ubuntu中shell命令-(10)-输入输出重定向

时间:2024-04-09 08:47:11

在Linux中,一切皆文件!

  • 所有对设备和文件的操作都是使用文件描述符来进行的。
     
  • 文件描述符是一个非负的整数,它是一个索引值,并指向在内核中每个进程所打开的文件的记录表;
     
  • 当打开一个现存文件或创建一个新文件时,内核就向进程返回一个文件描述符;
     
  • 当需要读写文件时,需要把文件描述符作为参数传递给相应的函数。

 

通常,一个进程启动时,都会打开3个文件:

  • 标准输入:对应文件描述符为0(STDIN_FILENO)
     
  • 标准输出:对应文件描述符为1(STDOUT_FILENO)
     
  • 标准出错处理:对应文件描述符为2(STDERR_FILENO)

注:本段摘自 https://blog.csdn.net/rl529014/article/details/51322352


文件描述符

Ubuntu中shell命令-(10)-输入输出重定向


重定向(此处以 ls 命令举例)

重定向举例一:标准输出重定向(理解:ls命令把结果展示在显示器的terminal窗口,现在我把内容重定向到我指定的文件)                           注:标准输出是经过缓冲区!再到设备。

1,首先  ls 出 test 下的目录和文件

Ubuntu中shell命令-(10)-输入输出重定向

2,这个时候,我想把 ls 的结果输出到文件,以文本的形式保存下来

命令:ls > test1.0     注:标准输出的文件描述符是1可以省略,系统默认省略,本条命令也可以写作:ls 1> test1.0

继续 ls 可以看到多了一个 test1.0 (重定向的时候先自动创建test1.0,并且将自己也写进去)

Ubuntu中shell命令-(10)-输入输出重定向

3,查看 test1.0

命令:vi test1.0

此时我们可以看到所有 ls 出来的结果全部,被写进 test1.0

Ubuntu中shell命令-(10)-输入输出重定向


重定向举例二:标准错误重定向

过程和标准输出完全相同,区别:标准错误不能省略文件描述符

命令:ls dir1 2> test2.0    注:dir1是不存在的路径,我们要将这个错误提示写到文件中去

Ubuntu中shell命令-(10)-输入输出重定向

Ubuntu中shell命令-(10)-输入输出重定向

然后 vi test3.0 查看文件内容

Ubuntu中shell命令-(10)-输入输出重定向


重定向举例三:准输入重定向(此处以 wc -w 命令举例,wc:用来计算数字的  -w:显示单词数)

1,首先我们可以输入 wc -c 命令,然后手动输入4个字符,ctrl+d 结束命令这时候显示我们有四个单词

Ubuntu中shell命令-(10)-输入输出重定向

2,此时我们新建一个test4.0,编辑,填写6个单词

Ubuntu中shell命令-(10)-输入输出重定向

3,输入命令:wc -w < test4.0     注:这里其实也有文件描述符 0,只不过系统默认可以省略,命令也可写作:wc -w 0< test4.0

Ubuntu中shell命令-(10)-输入输出重定向

4,理解:本来 wc 命令要获取的是键盘输入的字符,但是通过重定向,不需要输入,直接读取已存在的文件中,并显示出单词数