Linux(入门基础):63---Linux数据流重定向、双向重定向(tee)

数据流重定向

一、概念

  • 平常我们在终端输入命令,输入的命令或显示的信息(正确/错误)就是数据流。数据流重定向就是通过一定的方法使输入的命令信息来自于文件/设备,或者使输出的数据传输到文件/设备中,而不在屏幕上显示。

二、分类

  • 输入流重定向:在终端中,原本需要由键盘输入的数据,由文件的内容替换
  • 输出流重定向:在终端中,原本需要输出到终端的数据,输出到文件/设备中

三、标准输入、标准输出、标准错误输出

  • 标准输入(stdin):从键盘/文件中输入的信息。代码为0
  • 标准输出(stdout):输出的信息是正确信息。代码为1
  • 标准错误输出(stderr):输出的信息是错误信息。代码为2

四、输出流重定向

1.命令格式

  • 命令   重定向符号1  文件1/设备1   重定向符号2   文件2/设备2

重定向符号

  • 标准输出流重定向:使用>(文件内容清空,将数据写入文件)或>>(在文件尾部追加内容)
  • 标准错误输出流重定向:使用2>(文件内容清空,将数据写入文件)或2>>(在文件尾部追加内容)

注意

  • 后面的文件不存在,系统自动创建
  • 标准输出流重定向后,错误信息还是会显示在屏幕上
  • 标准错误输出流重定向后,正确信息还是会显示在屏幕上

2.重点:标准输出和标准错误输出写入同一文件

方法

  • 命令   >  file   2>  file    //错误用法,两股数据同时写入同一文件中,造成次序错乱,查看文件内容时混乱的
  • 命令   >  file   2>&1        //正确用法(2>&1代表把错误信息写入到正确信息文件中)
  • 命令   2>  file  1>&2       //正确用法(1>&2代表把正确信息写入到错误信息文件中)
  • 命令   &>  file                   //正确用法(>都写入到正确文件中)

3.演示案例

  • ①将当前目录的信息写入到一个文件中

使用ll命令产生的信息就被输出到文件中,cat查看文件的内容就为我们ll的内容(错误的信息不会被写入)

  • ②将正确数据和错误数据写入到不同的文件中(file文件存在,file2文件不存在)

为了将正确信息和错误信息写入到不同的文件中,可以用两次数据流重定向符号

五、输出流与/dev/null设备的特殊用法

1./dev/null设备

  • 写入到这个设备的任何数据都会消失不见

2.合适使用这个设备

  • 我们执行一条命令时,提前知道会有错误信息产生,但是不想输出到屏幕上,又不想输出到其它文件中,于是就可以输出到这个设备中

3.用法

命令   2>  /dev/null

4.案例

  • 目录下不存在file2文件,因此查看不了,会有错误信息,将错误信息输入到/dev/null

ll  file2  2>  /dev/null

六、输入流重定向

1.概念

  • 在终端中,原本需要由键盘输入的数据,由文件的内容替换输入完成

2.输入流重定向符号

  • <:后面接文件,想要输入的信息由文件代替
  • <<:后面接【结束的输入字符】

3.<的应用

cat命令介绍:输入cat然后回车,我们就可以在终端随意输入内容

  • 案例:我们将~/.bashrc的内容拷贝到一个text文件中(类似于cp拷贝文件的功能)

解析:cat之后屏幕会让在屏幕上输入信息,这些信息使用<  ~/.brashrc来自于~/.brashrc文件,然后再使用>text写入text文件中。下面两种命令格式都可以

  • 第一种:cat     >  text     <  ~/.brashrc
  • 第二种:cat    <  ~/.brashrc   >  text 

4.<<的应用

  • 我们使用cat命令输入信息到file文件中,然后使用"eof"作为结束符,但是eof不会被写入到文件中(eof为自己取的名称)

cat  > file  <<  "eof"

七、双向重定向(tee命令)

1.功能

  • tee命令是一种管道命令
  • 与普通数据流重定向不同,tee可以让输出的内容既可以输出到屏幕中,也可以输出到文件中

2.命令格式

  • tee  [选项]   文件名

相关选项与参数

  • -a:以追加的方式将数据写入文件中

3.注意事项

  • 后面的文件不存在,自动创建
  • tee不加-a参数,默认清空文件内容再写入

4.演示案例

  • 将/home显示的信息存入到~/.homefile文件中

ls -l /home | tee  ~/homefile  | more

  • 将last显示的用户信息以" "分割获取第一部分,并存入last.list文件中

last  | cut -d " "  -f 1 | tee last.list

猜你喜欢

转载自blog.csdn.net/qq_41453285/article/details/88062340