本篇讲述linux系统的输入输出、管道和重定向。

1. liunx的输入输出

一个linux系统要想发挥作用,就要有输入输出,这样才可以与外界交互。

类型 设备文件名 文件描述符 设备名称 说明 备注
标准输入 /dev/stdin 0 键盘 程序默认的输入设备  
标准输出 /dev/stdout 1 当前屏幕 程序默认的输出设备  
标准错误输出 /dev/stderr 2 当前屏幕 程序默认的错误信息输出设备  

2. 输入输出的重定向

有些情况,比如我想把程序的日志输出保存起来,以便后续查看。默认输出是屏幕,而屏幕是有大小的,超了显示的区域之前的日志就不可看了。这时就需要重新定义它的输出位置,就有了重定向。
很容易理解,有输出重定向,就有输入重定向。那么输入输出的重定向怎么定义呢?请看下表:

类型 操作符 例子 说明
输入重定向 < tac < 123.txt 把123.txt里的内容输入到tac命令,不需要再从键盘接受字符
标准输出重定向 > ls / > 123.log 把ls / 的输出重定向到123.log文件中,123.log不存在则创建,123.log存在则内容覆盖
标准错误输出重定向 2> ls /error 2> 123.log 把ls /error的错误输出重定向到123.log文件中,123.log不存在则创建,123.log存在则内容覆盖
输出重定向合并 &>或者2>&1 ls / /error &> 123.log 把ls / /error的标准输出和标准错误输出都重定向到123.log文件中,123.log不存在则创建,123.log存在则内容覆盖
追加 >>   把上述>变成>>,文件存在则追加到末尾,避免上述文件存在被覆盖的情况

补充说明一下:
合并重定向的2>&1这种方式,看下面的例子:

发现把2>&1放置在前面的话,错误输出并没有保存到456.log中,而还是打印在屏幕上。把2>&1放置在后面的话,错误输出就保存到123.log中,而没有打印在屏幕上。这是为什么呢?
解答:2>&1,它是把错误输出重定向为标准输出。位置不同逻辑顺序就不同。
放置在前面的话,就先把2转成1,而1默认是在屏幕上显示的,然后再定义1保存到文件中,而这时2已经转化为1在屏幕中输出过了。
放置在后面的话,就先定义1保存到文件中,然后把2变成1,而此时1已经定义重定向到文件中了。

3. 管道

管道是linux中一个重要的概念,在linux中用“|”表示,他可以把前一个命令的输出结果当成下一个命令的输入,经过组合,可以方便的得出我们想要的结果。
比如,我想查找/tmp目录下3分钟之内创建的名字包含“abc”的文件或目录,则可以用:

它就把find出来的结果当成grep的输入了。

这里也补充说明一下:管道只能接受标准输出,而不能接受标准错误输出。如下:

linux输入输出、重定向、管道的更多相关文章

  1. 全面理解Linux输入输出重定向

    全面理解Linux输入输出重定向 本教程通过视频方式讲解shell操作,理解感念,教程通俗易懂,比起看一大堆文档要舒服的多.本次教程主要讲解  Linux Shell 中支持输入输出重定向,用符号&l ...

  2. Linux输入输出重定向和文件查找值grep命令

    Linux输入输出重定向和文件查找值grep命令 一.文件描述符Linux 的shell命令,可以通过文件描述符来引用一些文件,通常使用到的文件描述符为0,1,2.Linux系统实际上有12个文件描述 ...

  3. [转帖]Linux教程(12)- linux输入输出重定向

    Linux教程(12)- linux输入输出重定向 2018-08-21 22:57:02 钱婷婷 阅读数 49更多 分类专栏: Linux教程与操作 Linux教程与使用   版权声明:本文为博主原 ...

  4. Linux 输入输出重定向, &>file, 2>&1, 1>&2

    Linux 输入输出重定向, &>file, 2>&1, 1>&2 一.1和2在Linux中代表什么 1.1 输出重定向 1.2 输入重定向 1.3 绑定重定 ...

  5. linux 输入输出重定向

    输入输出重定向 1,输入输出重定向,是针对过滤器的,不针对,编辑器和交互工具 2,>号只把正确的标准输出重定向,输出错误信息,可以用2> 3,新建或清空文件可以直接用>filenam ...

  6. linux - 输入输出重定向 及 管道

    > 正确结果重定向 2> 错误结果重定向 &> 正确和错误全部重定向 >> 追加,其它同> 标准输出实际上就是显示器,比如我们使用cat命令打开一个文件,文 ...

  7. linux输入输出重定向

    http://www.cnblogs.com/chengmo/archive/2010/10/20/1855805.html 在Linux下,当一个用户进程被创建的时候,系统会自动为该进程创建三个数据 ...

  8. [100]linux输入输出重定向

    一目了然版本: &号含义: 参考 参考:非常经典,值得一看,我是在linux爱好者公众号里发现的. 下面是我自己的一些总结. linux的命令数据流 在Linux下,当一个用户进程被创建的时候 ...

  9. 6. Linux输入输出重定向

    1.输入重定向是指把文件导入到命令中,而输出重定向则是指把原本要输出到屏幕的数据信息写入到指定文件中. 输入重定向中用到的符号及其作用 输出重定向中用到的符号及其作用 1)通过输出重定向将原本要输出到 ...

  10. Linux输入输出重定向练习

    1.date >> 123 date > 123 2.abc 2>123 abc 2>>123 abc 2>/dev/null  标准输出重定向到回收站 3. ...

随机推荐

  1. SQL入门,就这么简单

    随着时代的发展,人类活动产生的信息越来越多,大家常说,现在这个时代是大数据时代.在这样一个前提下,数据的存储成为我们必须要认真对待和研究的问题了.SQL(Structured Query Langua ...

  2. wechall前十题

    今天开始打一打wechall 累了打wechall,不累的时候开始打buu 第一题:Get Sourced 查看源代码即可,拉到底部 第二题:Stegano 属于misc的范畴,直接下载下来,然后no ...

  3. 《并发编程的艺术》阅读笔记之Lock与AQS

    Lock接口 在jdk1.5之后,并发包下新增了一个lock接口,lock接口定义了锁的获取,锁的释放,等方法,需要用户手动设置.与关键字不同的是,lock具有可操作性,比如,可以中断线程,设置超时时 ...

  4. pytorch 中HWC转CHW

    import torch import numpy as np from torchvision.transforms import ToTensor t = torch.tensor(np.aran ...

  5. UDO、TCP、HTTP、websocket

    如图:

  6. bootstrap4中使用fontawesome5.6.3

    先下载fontawesome5.6.3,选择free for web,下载完解压,丢在资源目录下 <form action=""> <div class=&quo ...

  7. dhcp协议抓包分析

    dhcp协议 DHCP,动态主机配置协议,前身是BOOTP协议,是一个局域网的网络协议,使用UDP协议工作,常用的2个端口:67(DHCP server),68(DHCP client). wires ...

  8. GithubAction-Deploy

    GithubAction-Deploy githubhexoaction 使用 github action 自动化部署 创建GitHub repository 存放源文件 在repo设置界面里添加Se ...

  9. 基于NFS共享存储实现KVM虚拟机动态迁移

    基于NFS共享存储实现KVM虚拟机动态迁移 一:配置环境 二:安装相关的依赖包 三:实现NFS共享存储 四:KVM机配置相同的步骤 五:安装KVM01安装虚拟机 六:实现迁移  实验初始配置:所有主机 ...

  10. vue2.x学习笔记(二十四)

    接着前面的内容:https://www.cnblogs.com/yanggb/p/12663909.html. 插件 插件通常是用来为vue添加全局功能的. 插件的功能范围 插件的功能范围没有严格的限 ...