数据流重定向

通俗来讲,本来数据要传到A处,但让它传到B处

  • 标准输入,代码为0,使用<

  • 标准输出,代码为1,使用>>>

  • 标准错误输出,代码为2,使用2>2>>

标准输出


  • >:以覆盖方式将屏幕输出传到指定文件或设备上

  • >>:以累加方式将屏幕输出传到指定文件或设备上

例子:

[user1@qmmms ~]$ ll > ll_info
[user1@qmmms ~]$ cat ll_info 
总用量 684
drwxrwxrwT 2 user1 basic_users   4096 9月   2 17:24 dir_test
-rw------- 1 user1 basic_users    348 9月  12 15:05 doc
-rw-r--r-- 1 user1 basic_users      0 9月  17 10:39 ll_info
-rw-r--r-- 1 user1 basic_users    752 9月  12 16:13 lucas.cpp
-rwxr-xr-x 1 user1 basic_users   8360 9月   2 13:36 sayhi
-rw-r--r-- 1 user1 basic_users 670293 9月  12 10:46 services
drwxrwxrwt 2 root  root          4096 9月   4 23:05 tmp

标准错误输出


  • 2>:以覆盖方式将屏幕错误输出传到指定文件或设备上

  • 2>>:以累加方式将屏幕错误输出传到指定文件或设备上

例子:

组合用法


写入不同文件

输出转化

  • 1>&2:将标准输出转到标准错误输出

  • 2>&1:将标准错误输出转到标准输出

例子:

黑洞设备

如果对于某些输出,不想在屏幕上看到,也不想保存到文件,那么可以重定向到/dev/null黑洞设备

例子:

标准输入


  • <:本来要键盘输入的数据,转而由文件提供

例子:在程序中使用数据文件代替键盘输入

写一个简单加法C++文件(simple_add.cpp)

编辑一个数据文件(data.in)

编译后执行

双向重定向


tee命令可以让其他命令的屏幕输出保留,同时留存一份到文件

格式:

参数:

  • 没有参数,直接覆盖文件

  • -a:以追加的方式加入数据到文件

例子:

最后更新于