linux输入输出、重定向、管道
本篇讲述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输入输出、重定向、管道的更多相关文章
- 全面理解Linux输入输出重定向
全面理解Linux输入输出重定向 本教程通过视频方式讲解shell操作,理解感念,教程通俗易懂,比起看一大堆文档要舒服的多.本次教程主要讲解 Linux Shell 中支持输入输出重定向,用符号&l ...
- Linux输入输出重定向和文件查找值grep命令
Linux输入输出重定向和文件查找值grep命令 一.文件描述符Linux 的shell命令,可以通过文件描述符来引用一些文件,通常使用到的文件描述符为0,1,2.Linux系统实际上有12个文件描述 ...
- [转帖]Linux教程(12)- linux输入输出重定向
Linux教程(12)- linux输入输出重定向 2018-08-21 22:57:02 钱婷婷 阅读数 49更多 分类专栏: Linux教程与操作 Linux教程与使用 版权声明:本文为博主原 ...
- Linux 输入输出重定向, &>file, 2>&1, 1>&2
Linux 输入输出重定向, &>file, 2>&1, 1>&2 一.1和2在Linux中代表什么 1.1 输出重定向 1.2 输入重定向 1.3 绑定重定 ...
- linux 输入输出重定向
输入输出重定向 1,输入输出重定向,是针对过滤器的,不针对,编辑器和交互工具 2,>号只把正确的标准输出重定向,输出错误信息,可以用2> 3,新建或清空文件可以直接用>filenam ...
- linux - 输入输出重定向 及 管道
> 正确结果重定向 2> 错误结果重定向 &> 正确和错误全部重定向 >> 追加,其它同> 标准输出实际上就是显示器,比如我们使用cat命令打开一个文件,文 ...
- linux输入输出重定向
http://www.cnblogs.com/chengmo/archive/2010/10/20/1855805.html 在Linux下,当一个用户进程被创建的时候,系统会自动为该进程创建三个数据 ...
- [100]linux输入输出重定向
一目了然版本: &号含义: 参考 参考:非常经典,值得一看,我是在linux爱好者公众号里发现的. 下面是我自己的一些总结. linux的命令数据流 在Linux下,当一个用户进程被创建的时候 ...
- 6. Linux输入输出重定向
1.输入重定向是指把文件导入到命令中,而输出重定向则是指把原本要输出到屏幕的数据信息写入到指定文件中. 输入重定向中用到的符号及其作用 输出重定向中用到的符号及其作用 1)通过输出重定向将原本要输出到 ...
- Linux输入输出重定向练习
1.date >> 123 date > 123 2.abc 2>123 abc 2>>123 abc 2>/dev/null 标准输出重定向到回收站 3. ...
随机推荐
- gdb 调试中No symbol “***” in current context解决方法
主要是因为GCC/G++版本和GDB不匹配造成的,网上也有说是因为O2优化问题,具体啥原因需要自己尝试一下. 解决: 放狗搜索,解决办法是在编译是加-gdwarf-3即可,出现这样的原因是gcc,gd ...
- 高校战“疫”网络安全分享赛 Misc ez_mem&usb
打开之后是一个流量包 用wireshark导出HTTP文件,有个upload,用一下binwalk,出来了一个镜像文件 用volatility搜一下,命令里有一个密码,看见了但是后来给忘了... 文件 ...
- Java讲解RPC的基本实现
RPC远程过程调用可以说是分布式系统的基础,本文将通过Java演示一次普通的rpc调用到底发生了什么. 我曾经在网上看到有人提问,为什么RPC要叫作远程过程调用,而不叫作RMC远程方法调用.个人认为R ...
- 控制反转IOC,依赖注入DI理解
IOC:控制反转,常规下,高层依赖低层,项目是不稳定的.我们则应该把高层对低层的依赖去掉,换成对抽象的依赖,细节交给第三方来决定,这就是控制反转,反转的目的是为了降低依赖,增强扩展性. DI:依赖注入 ...
- pytorch 去除维度为1的维度
out.squeeze(dim=1) out.squeeze_(dim=1)
- liunx系统二进制包安装编译mysql数据库
liunx系统二进制包安装编译mysql数据库 # 解压二进制压缩包 [root@localhost ~]# tar xf mysql-5.5.32-linux2.6-x86_64.tar.gz -C ...
- PE文件学习(1)DOS和NT
大致结构 DOS头和NT头之间通常还有个DOS Stub DOS头 DOS头的作用是兼容MS-DOS操作系统中的可执行文件 一般没啥用 记录着PE头的位置 DOS头定义部分 typedef struc ...
- CentOS 7.4 安装网易云音乐
1.下包–>网易云音乐 Ubuntu14.04(推荐14.04依赖包网上能找到) 提示:16.04有部分依赖包还找不到,有兴趣可以自行打包RPM安装. 2.解包 (1)使用 ar -vx解压ub ...
- Linux系统进入救援模式
由于现在很多的服务器都是用的RedHat,CentOS也比较多,这里就介绍CentOS6.6的救援模式. 有很多人的linux在用的时候不小心修改了某个权限,导致系统启动不起来,下面我就来为大家解决一 ...
- DFS(单词方阵)
思路: 先把地图二维字符数组存进去之后,遍历寻找到一个‘y’,然后我们可以设置一个八个方向的方向数组,让‘y’的坐标,遍历加上方向坐标,找到’i‘然后沿着这个方向,dfs下去,每次寻找到正确的,然后建 ...