Linux 重定向与管道

it2022-05-05  91

Linux —— 重定向与管道

系统的输入输出包括:默认输入设备:标准输入,STDIN,描述符为0默认输出设备:标准输出,STDOUT,描述符为1              标准错误输出,STDERR,描述符为2              标准输入,标准输出,标准错误输出是三个不同的数据流              系统默认标准输入是从键盘读取,标准输出和标准错误输出是输出到显示器

Linux中I/O重定向:    输出重定向,    >:覆盖输出,作为输出目标的文件原有内容会被覆盖    示例:    root@ubuntu:/home/linlin/linlin/test# echo 'The dog is so cute'  The dog is so cute  root@ubuntu:/home/linlin/linlin/test# echo 'The dog is so cute' > file  root@ubuntu:/home/linlin/linlin/test# cat file   The dog is so cute  覆盖  root@ubuntu:/home/linlin/linlin/test# echo 'The cat is so smart' > file   root@ubuntu:/home/linlin/linlin/test# cat file   The cat is so smart

    >>:追加输出,保留作为输出目标的原有文件    示例:    root@ubuntu:/home/linlin/linlin/test# echo 'The dog is so cute' >> file  root@ubuntu:/home/linlin/linlin/test# cat file   The cat is so smart  The dog is so cute        在使用输出重定向时,可能由于某个输出目标文件内容很重要,这时就需要使用追加    输出,但在实际使用过程中,很容易错把>当做>>使用,为了防止这个错误,我们可以    使用set命令    set:shell内置功能开关    set -C:禁止对已存在文件使用覆盖重定向    强制覆盖输出使用 >|    set +C:允许对已存在内容重定向    root@ubuntu:/home/linlin/linlin/test# set -C  root@ubuntu:/home/linlin/linlin/test# echo 'The cat is so smart' > file   bash: file: cannot overwrite existing file    tee:从标准输入读取数据,输出到标准输出,并保存至文件    2>:标准错误输出重定向  2>>:标准错误追加重定向

    &>:重定向标准输出和标准错误输出到同一个文件    注意 &>> 不支持        <:输入重定向    <<结束符:表示在此处生成文档,当输入为结束符时表示输入结束    here document具体解释https://linux.die.net/abs-guide/here-docs.html        管道:把一个命令的输出作为另一个命令的输入体现了Linux的基本思想之一:组合小命令完成复杂任务使用格式:    命令1 | 命令2 | ......    例如,取出某文件的倒数第3行    root@ubuntu:/home/linlin/linlin/test# cat file   10086  213  3134  21343452  2341  root@ubuntu:/home/linlin/linlin/test# tail -3 file | head -1  3134

构造管道时,应该试着让每个阶段的数据量变得更少,换句话说,如果你有两个要完成的步骤与先后次序无关,你可以把让数据变少的那一个步骤放在管道的前面,这么做可以提高脚本的整体性能,应为此时系统只需要在两个程序中移动少的数据量,每个程序要做的是也比较少。

 

 

转载于:https://www.cnblogs.com/lnlin/p/6958761.html


最新回复(0)