【Linux】重定向、管道

一、重定向

1、操作符

  • " > ":覆盖写入
  • " >> ":附加写入

2、语法

通道(文件描述符)

编号通道名称描述默认链接用法
0stdin标准输入键盘仅读取
1stdout标准输出终端仅写入
2stderr标准错误终端仅写入
3+filename其他文件读取和/或写入

输出重定向操作符

用法说明图示
>filename重定向stdout以覆盖文件图示
>>filename重定向stdout以附加到文件在这里插入图片描述
2>filename重定向stdout以覆盖文件在这里插入图片描述
2>>filename重定向stdout以附加到文件在这里插入图片描述
2>/dev/null将stderr重定向到/dev/null,从而将它丢弃在这里插入图片描述
>filename 2>&1重定向stdout和stderr以覆盖同一个文件在这里插入图片描述
&>filename重定向stdout和stderr以覆盖同一个文件在这里插入图片描述
>>filename 2>&1重定向stdout和stderr以附加到同一个文件在这里插入图片描述
&>>filename重定向stdout和stderr以附加到同一个文件在这里插入图片描述

3、组合示例

在实际使用过程中,重定向通常与其他指令组合使用,用以保存其他指令的执行结果。

[root@root: ~/Desktop/file]$ data > data.txt                                         //获取机器时间并保存
[root@root: ~/Desktop/file]$ tail -n 100 file1.txt > file2.txt                       //获取file1.txt的最后100行保存到file2.txt
[root@root: ~/Desktop/file]$ cat file1.txt file2.txt file3.txt > file_all.txt        //合并file1.txt file2.txt file3.txt的内容并保存至file_all.txt
[root@root: ~/Desktop/file]$ echo "this is a new file" >> file.txt                   //向文件中进行写入
[root@root: ~/Desktop/file]$ diff file1.txt file2.txt  >> diff_info.txt              //比较file1.txt file2.txt并将结果保存到diff_info.txt
[root@root: ~/Desktop/file]$ ./run.sh &> run_log.txt                                 //运行run.sh,并将运行中产生的标准输出和错误保存至run_log.txt
[root@root: ~/Desktop/file]$ find /etc -name passwd >> passwd_list.txt               //在/etc文件夹下查找文件名带有passwd的文件并保存查找结果到passwd_list.txt

二、管道

1、操作符

  • " | ":将第一个命令的标准输出链接到下一个命令的标准输入

在这里插入图片描述

2、less

管道组合less指令使用,会使第一个命令的结果在终端上以一次一屏的方式显示输出。


在这里插入图片描述

例:

 [root@root: ~/Desktop/file]$ ls -l /user/bin | less

3、tee

管道组合tee指令使用,可以保存命令的输出到文件并且同时输出到终端。


在这里插入图片描述例:

 [root@root: ~/Desktop/file]$ ls -l /user/bin | tee file.txt

三、管道中使用重定向的注意事项

可以通过管道来重定向标准错误,但是不能使用合并重定向运算符( &> 和 &>> )执行此操作,仅可以使用( 2>&1 和 2>>&1 )执行此操作。


例:

  • 错误用法:

     [root@root: ~/Desktop/file]$ls -l /usr/bin/ &> | less
     -bash: syntax error near unexpected tok en '|'
     [root@root: ~/Desktop/file]$ls -l /usr/bin/ &>> | less
     -bash: syntax error near unexpected tok en '|'
    
  • 正确用法:

    [root@root: ~/Desktop/file]$ls -l /usr/bin/ 2>&1 | less
    [root@root: ~/Desktop/file]$ls -l /usr/bin/ 2>>&1 | less
    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值