当前位置:   article > 正文

【Linux】重定向、管道_linux重定向和管道

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
  • 3
  • 4
  • 5
  • 6
  • 7

二、管道

1、操作符

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

在这里插入图片描述

2、less

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


在这里插入图片描述

例:

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

3、tee

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


在这里插入图片描述例:

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

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

可以通过管道来重定向标准错误,但是不能使用合并重定向运算符( &> 和 &>> )执行此操作,仅可以使用( 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 '|'
    
    • 1
    • 2
    • 3
    • 4
  • 正确用法:

    [root@root: ~/Desktop/file]$ls -l /usr/bin/ 2>&1 | less
    [root@root: ~/Desktop/file]$ls -l /usr/bin/ 2>>&1 | less
    
    • 1
    • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/213052
推荐阅读
相关标签
  

闽ICP备14008679号