标签:int 读取文件 模式 数据流 异常 art 标准 note 位置
概述
背景
环境
概述
场景: 日常使用 shell
概述
场景
使用模式
输入
输出
概述
机制
进程的启动, 几乎都是为了做一些处理
但是 数据从哪里来, 到哪里去, 这个问题必须先想清楚
进程的处理: 文件描述符
位置
文件
机制
默认
默认
流
问题
概述
准备
cat
查看文件描述符
命令
# pid 怎么来我就不说了
> ll /proc/<pid>/fd
概述
输入
终端的输入
命令的输入
参数
输入流
例子
# 1. 使用 参数, 这个最常见
> cat <inputFile>
# 2. 使用 stdin
## 输入 cat 命令后, 直接敲 回车
## 然后的模式是, 输入一行, 回车一行, 显式一行
## ctrl + c 退出
> cat
# 3. 使用 stdin, 输入多行
## EOF 是结束符, 可以换成别的
## 输入多行后, 回车, 直接输出多行
> cat << EOF
# 4. 输入重定向
## 使用起来和 1 差不多
## 区别是 不会额外使用 新的文件描述符
> cat < <inputFile>
概述
输出
例子
# 1. 重定向 stdout
## 普通
## 没有文件就创建, 有就直接覆盖
> cat <inputFile> > <stdoutFile>
> cat <inputFile> 1> <stdoutFile>
> cat <inputFile> &> <stdoutFile>
## 追加
## 没有文件就创建, 有就继续追加
> cat <inputFile> >> <stdoutFile>
> cat <inputFile> 1>> <stdoutFile>
> cat <inputFile> &>> <stdoutFile>
# 2. 重定向 stderr
## 普通
> cat <notExistFile> 2> <stderrFile>
## 追加
> cat <notExistFile> 2>> <stderrFile>
# 3. 重定向 stdout 和 stderr
## 普通
> cat <inputFile> 1> <stdoutFile> 2> <stderrFile>
## 追加
> cat <inputFile> 1>> <stdoutFile> 2>> <stderrFile>
## 当然, 也可以昏庸
> cat <inputFile> 1> <stdoutFile> 2>> <stderrFile>
# 4. 重定向 stdout 和 stderr 到同一文件
## &1 表示 stdout 当前的目标
## &2 类似
> cat <inputFile> 1> <logFile> 2>&1
## 这样也可以, 但是上面的形式, 见的多一些
> cat <inputFile> 2> <logFile> 1>&2
## 追加模式也可以
## 追加模式, 只用 1 追加, 2 那个不用追加
> cat <inputFile> 1>> <logFile> 2>&1
概述
例子
> cat 1><log> 2>&1
> cat < anaconda-ks.cfg 1>> log 2>&1
文件描述符
后台执行
疑问: 子 shell 与 文件描述符
ref
linux下两个进程可以同时打开同一个文件吗?返回的文件描述符一样吗?
概述
结论
What is the use of file descriptor 255 in bash process
4 What was the point of separating stdout and stderr?
1. 为何要让 stderr 和 stdout 分开
1. 设计者
1. 早期计算机科学家
2. 原因
1. 早期日志查找, 完全靠人
2. 找异常相当痛苦
3. 于是决定, 将 stderr 分离出来
标签:int 读取文件 模式 数据流 异常 art 标准 note 位置
原文地址:https://www.cnblogs.com/xy14/p/10455330.html