重定向——Linux

 

目录

前言

重定向

指令

    相关函数

     管道符 |


前言

    重定向在linux中的应用比较多,重定向就是把原本要写入A的数据,不写入A,反而写入B了,在linux中可以用重定向来完成进程间通信(使用管道)。

重定向

    重定向就是将原本要输入A的数据,不写入A,而是写入B。对linux来说键盘、鼠标就是一种输入设备,也叫标准输入设备,显示器,屏幕,音响等就是标准输出设备,重定向就是将本应该由标准输入/输出设备要输入的数据,转由其他文件或设备输入/输出

    文件标识符:linux用整数来指明与特定进程间的数据流,一般是0~9,其中系统在打开任意一个进程时都会默认打开三个文件:stdin(标准输入,0)、stdout(标准输出,1)、stderr(标准错误,2),所以如果要给进程打开其他文件,则只能从3开始。

    另外一提,通常向文件写入数据时,会先将数据写入缓冲区,但对于系统调用接口(open、read、write等)没有缓冲区,是直接写入/打印文件,但printf、fprintf、fwrite等是有缓冲区的,如果在不刷新缓冲区就退出进程的情况下,缓冲区里的数据会丢失。

指令

    ~ 输出重定向

    Command > filename 将标准输出重定向到一个新文件

    Command >> filename 将标准输出以追加的方式重定向到一个新文件

    Command > filename 2>&1 将标准输出和标准错误一起重定向到一个新文件中

    Command 2 > filename 将标准错误重定向到一个新文件中

    Command 2 >> filename 将标准错误以追加的方式重定向到一个新文件中

    Command >> filename 2>&1 将标准输出和标准错误以追加的方式重定向到一个新文件中

   ~ 输入重定向

    Command < filename > filename2: command命令以filename作为标准输入,以filename2作为标准输出

    Command < filename:以filename作为标准输入

    Command < delimiter:从标准输入中读入,直到遇到delimiter分界符

   ~ 绑定重定向

    Command > &m:将标准输出重定向到文件描述符m中

    Command < &-:关闭标准输入

    Command 0 > &-:关闭标准输入

    举例:

    ls 1 > test.txt:将标准输出重定向到text.txt文件

    2 > &1 :&1表示标准输出,该指令表示将标准错误重定向到标准输出

    ./main > /dev/null  2 > &1 :将标准错误标准输出都重定向到/dev/null文件,该指令是先将1重定向到文件,再将2重定向到1,所以,1和2其实都重定向到了文件

 

    ./main 2 > &1 > /dev/null :将标准错误重定向到标准输出,然后将标准输出重定向到/dev/null,该指令和上面一条并不一样。这个是先将2重定向到1也就是显示器,再将1重定向到文件,1和2最终指向不一样

 

    相关函数

      int dup2(int oldfd,int newfd):让newfd和oldfd都指向oldfd所代表的文件,相当于把newfd重定向到oldfd,如果newfd本身代表了一个已经打开的文件,则重定向前会释放其文件。

     管道符 |

      管道就是重定向的一种表现,可以将一个命令的输出作为下一个命令的输入,可通过多个命令相互配合来完成比较复杂的内容。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值