Linux(IO重定向 + 管道 图片 + 大白话)

后面也会持续更新,学到新东西会在其中补充。

建议按顺序食用,欢迎批评或者交流!

缺什么东西欢迎评论!我都会及时修改的!

在这里真的很感谢这位老师的教学视频让迷茫的我找到了很好的学习视频

王晓春老师的个人空间-王晓春老师个人主页-哔哩哔哩视频

标准输入和输出 

程序(应用程序):指令+数据

读入数据:Input

输出数据:Output

Linux中一切皆文件,操作输入输出都是所谓的文件,文件表现为每打开一个文件,系统会分配一个数字,这个数字代表一个文件,这个数字叫做文件描述符(file descriptor)

每一个程序由于通常都是需要处理数据的,输入,输出,错误三种信息

一切皆文件,所以输入输出错误对应的都有一个文件描述符。

在Linux中是固定的一个数字 标准输入 0 标准输出 1 标准错误 2

应用程序1-4都有输入,输出,错误 

当每打开文件,系统就会分配打开这个文件唯一的文件描述符。

只有三个(0 1 2)打开的文件的文件描述符是固定的分配给当前程序对应的输入0输出1错误2

至于其他文件打开,描述符就是随机的。

 通过proc 目录可以观察到这个程序所对应的内存信息

 这里是windows中的

定位程序真正位置 

ps aux

 第二列为pid

1983文件夹里面存放着关于正在运行的tail命令详细命令 

程序打开了哪些文件

[root@study fd]# ll
total 0
lrwx------. 1 root root 64 Nov  6 06:57 0 -> /dev/pts/1 标准输入
lrwx------. 1 root root 64 Nov  6 06:57 1 -> /dev/pts/1 标准输出
lrwx------. 1 root root 64 Nov  6 06:56 2 -> /dev/pts/1 标准错误
lr-x------. 1 root root 64 Nov  6 06:57 3 -> /root/anaconda-ks.cfg

0 1 2是用来实现标准输入 标准输出 标准错误三个固定的文件描述符

3 就是正在打开的文件 程序一打开文件 系统自动分配文件描述符 除了0 1 2是固定的

0 1 2是文件描述符本质就是软链接指向的是当前终端窗口

shell的pid

当前窗口也是在一个进程(程序)里面 也就是shell 登录的时候就会在内存中开启一个shell

因为开了三个窗口所以有三个shell 

把0 1 2都映射成当前的终端设备终端窗口

输入输出错误 都是通过当前终端窗口来实现输入输出错误,每个窗口有自己的输入输出错误。

ll /proc/$$/fd 就是显示当前shell的文件描述符

tty是显示当前终端窗口

 输入输出错误都靠当前终端窗口 

 stdin 标准输入 stderr 标准错误 stdout 标准输出 self对应当前的进程编号

ll /proc/self -d 显示当前的进程编号

会发现进程编号2172 没有 因为ll程序已经结束了 ll命令执行的时候 瞬间系统分配一个进程编号,ll命令不是持续运行的,运行完就退出了在proc下面就看不见2172。

每个程序运行系统都会分配一个所谓的进程编号,并且对应的有一个固定的三个文件描述符。

输入:默认接受来自终端窗口的输入 输出:默认输出到终端窗口 错误:默认输出到终端窗口

I/O重定向redirect

1> == > 

把STDOUT重定向到文件

1> 1代表标准输出

2>

2 代表标准错误

把标准错误重定向到文件

&> 把所有输出重定向到文件

 stdout(标准输出)和stderr(标准错误)可以重定向到指定文件,而非默认的当前终端。

将标准输出输出到别的地方

标准输出就是ll等等命令 输出本来是输出到当前终端窗口 但是重定向到其他终端

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值