类Unix系统中进程的标准的文件描述符
文件描述符在Unix系统中是一个整数,用来标识打开的文件或者I/O资源,每个进程默认会打开三个标准文件描述符(File Descriptors, FDs),用于处理输入和输出。下面介绍这三个FD
- 标准输入(Standard Input)
- 文件描述符编号:
0 - 作用:用于进程读取输入数据(默认来自键盘输入)
- 相关符号:在Shell中通常用
<或<<进行重定向(如command < input.txt)
- 文件描述符编号:
- 标准输出(Standard Output)
- 文件描述符编号:
1 - 作用:用于进程输出正常结果(默认显示到终端)
- 相关符号:在Shell中通常用
>或>>进行重定向(如command > output.txt)
- 文件描述符编号:
- 标准错误(Standard Error)
- 文件描述符编号:
2 - 作用:用于输出错误或诊断信息(默认显示到终端)
- 相关符号:在Shell中用
2>或2>>重定向错误(如command 2> error.txt)
- 文件描述符编号:
那我们在看以下代码便会清晰的多:
echo log > /dev/null 2>&1
这条命令由以下部分组成:
- **
echo log**:向标准输出(stdout)打印字符串log - **
> /dev/null**:将标准输出(文件描述符1)重定向到/dev/null - **
2>&1**:将标准错误(文件描述符2)重定向到当前标准输出(即/dev/null)
关键概念
(1) /dev/null 的作用
/dev/null是一个特殊的设备文件,写入它的内容会被直接丢弃- 常用于屏蔽命令的输出或错误信息
(2) 文件描述符重定向
>默认重定向标准输出(1>的简写)2>表示重定向标准错误(文件描述符2)&1表示引用当前标准输出的目标(即/dev/null)
3. 执行流程
echo log输出内容echo命令默认将log写入标准输出(文件描述符1)。> /dev/null重定向标准输出
将标准输出(1)从默认的终端屏幕重定向到/dev/null,导致log被丢弃,不会显示在终端。2>&1重定向标准错误2>表示重定向标准错误(文件描述符2)。&1表示将标准错误指向当前标准输出的目标(即/dev/null)。- 因此,标准错误(如有)也会被丢弃。