标准输入、标准输出和标准错误
标准输入(键盘输入) 对应文件描述符0
标准输出(输出到屏幕) 对应文件描述符1
标准错误(也是输出到屏幕) 对应文件描述符2
& 一般是表示产生一个子shell,即后台运行
但在这里的&是一个标志,是个规定,这个符号后面的数字代表一个文件描述符
&1 这表示标准输出
&2 标准错误输出
2>&1 将标准错误重定向到标准输出
- 每个进程都会默认打开3个文件描述符,即0、1、2。
其中0代表标准输入流、1代表标准输出流、2代表标准错误流。通常标准输入流对应着键盘的设备文件、标准输出流和错误流对应着显示器的设备文件。
在编程中通常使用宏STDIN_FILENO、STDOUT_FILENO和STDERR_FILENO分别来代表0,1,2。 - 执行一个shell命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),通常对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),这两个文件都对应终端的屏幕。进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。
- 文件描述符是一个简单的正整数,用以标明每一个被进程所打开的文件和socket。
最前面的三个文件描述符(0,1,2)分别与标准输入(stdin),标准输出(stdout)和标准错误(stderr)对应
0表示标准输入 1表示标准输出 2表示标准错误输出
>默认为标准输出重定向,与 1>相同
2>&1意思是把 标准错误输出重定向到标准输出.
&>file意思是把 标准输出 和 标准错误输出 都重定向到文件file中
2>&1 > file 把错误出定向到标准输出(此时标准输出为终端,所以输出到终端), 标准输出定位到文件
> file 2>&1 把标准输出定位到文件,错误输出到标准输出(此时标准输出指向文件,所以输出到文件)