美文网首页
Linux 重定向和管道

Linux 重定向和管道

作者: Kin丶 | 来源:发表于2019-10-20 23:14 被阅读0次

一、标准输入、输出

1. 文件描述符

(1) 定义

每打开一个文件,系统就会分配一个数字作为文件描述符来代表打开的文件,也可以使用exec Number<>手工指定;
实际上是把文件描述符做软链接指向目标文件,所以访问文件描述符的内容和访问目标文件的内容一样。

2. 查看文件描述符

ll /proc/$$/fd

系统默认分配0、1、2、255数字作为文件描述符。

0:标准输入(STDIN),默认接受来自键盘的输入;
1:标准输出(STDOUT),默认输出到终端窗口;
2:标准错误(STDERR),默认输出到终端窗口;

2. 重定向

(1) 合并重定向

(;)

可以把多个命令合并进行重定向。

(2) 输出重定向

>
把标准输出重定向覆盖到文件

>>
把标准输出重定向追加到文件

2>
把标准错误输出重定向文件
> 2>
分别分类重定向
&>
把所有输出重定向到文件

(3) 标准输入重定向

<
标准输入重定向

只要按下回车键,就会重定向输入内容。

支持输入重定向的命令
cat
tr
mail

(4) 多行重定向

<<终止符
多行重导向

只有遇到终止符才会重定向所有输入内容。

终止符必须独立一行,前后不能有任何字符。

(5) 实战功能

标准错误和标准输出重定向同一个文件
Error_Cmd Correctness_Cmd >all.log 2>&1
(Error_Cmd Correctness_Cmd 2>&1) >all.log

将2(标准错误)重定向到1(标准输出),而标准输出重定向到all.log,就能实现标准错误和标准输出重定向同一个文件。

Error_Cmd Correctness_Cmd 2>all.log >&2

将1(标准输出)重定向到2(标准错误),而标准错误重定向到all.log,就能实现标准错误和标准输出重定向同一个文件。

Error_Cmd Correctness_Cmd &> all.log

黑洞文件
> /dev/null

在执行命令过程中,如果不想在屏幕上打印信息,可以重定向到/dev/null文件中。

安全创建空文件
>>

由于>>为追加操作,所以如果目标文件已经存在,不会覆盖、修改文件内容和属性信息,比touch命令更为安全,因为touch命令会修改文件时间。

输出重定向软链接

由于软链接最终指向原始文件,所以使用>重定向软链接,会修改原始文件内容。

输出重定向分区

如果重定向分区,不会破坏分区里的内容。

使用cat命令输入重定向覆盖文件
cat < File > File

会直接把File清空。

使用cat命令输出重定向追加文件
cat < File >> File

会不断追加File原有内容到File。

二、管道符

|

1. 定义

把一个命令的标准输出发送给另一个命令作为标准输入;
可以使用多次管道符。

2. 重定向到多个目标

tee

(1) 定义

把命令1的标准输出保存到文件并作为命令2的标准输出。

(2) 作用

保存不同阶段的输出;
复杂管道的故障排除;
同时查看和记录输出。

3. 实战功能

(1) 通过管道符把标准输出和标准错误都发送给另一个命令作为标准输入

Error_Cmd 2>&1 | Cmd_2

把标准错误转换成标准输出在发送给另一个命令。

Error_Cmd |& Cmd_2

把一个命令的标准输出和标准错误发送给另一个命令,CentOS5及以前的版本不支持。

(2) 计算1+2+3+……+99+100的总和

echo {1..100} | tr ' ' + | bc
seq -s + 100 | bc

相关文章

  • 生信人的Linux14-24

    Liunx Day15:管道和重定向 管道和重定向:> < >> << Linux: >:覆盖输出 注意文件/t...

  • 管道命令

    参考linux shell 管道命令(pipe)使用及与shell重定向区别、管道命令 管道命令操作符是:”|”,...

  • Linux 重定向和管道

    一、标准输入、输出 1. 文件描述符 (1) 定义 每打开一个文件,系统就会分配一个数字作为文件描述符来代表打开的...

  • Linux的管道命令

    Linux的管道命令 管道命令(Pipe) 双向重定向 字符转换命令:tr,col,join,paste,expand

  • Linux重定向day13

    1.重定向概述2.重定向的输出输入3.进程管道技术 一、重定向概述 什么是重定向:Linux重定向是指修改原来默认...

  • Liunx Day15:管道和重定向

    管道和重定向:> < >> << Linux: >:覆盖输出 注意文件/tmp/var.out的变化,这个例子说...

  • 第07章重定向管道

    输出重定向案例 > < 脚本中使用重定向 2.输入重定向及结合案例 管道 | 重定向和管道的符号对比。重定向输出到...

  • 类Unix 基础命令整理(三)

    重定向输入和输出 重定向输入和输出 wc 管道

  • Linux 重定向和管道练习

    一、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中 二、将当前系统登录用户...

  • linux-重定向和管道

    一 单行重定向 单行重定向是每一行写完敲回车之后进行写入文件; 二 多行重定向 多行重定向是以指定标识符开始,指定...

网友评论

      本文标题:Linux 重定向和管道

      本文链接:https://www.haomeiwen.com/subject/neqzmctx.html