linux重定向中 >file 2>1,>>file 2>1 , >>file是什莫意思
目录
文件描述符
1.> file 2>&1
语法分解
整体含义
2. &> file
语法分解:
整体含义:
3. >> file 2>&1
语法分解:
整体含义:
4. &>> file
语法分解:
整体含义:
文件描述符
在 Linux/Unix 中,系统为每个进程维护三个标准的“文件描述符”,它们是数据流的通道:
-
0:标准输入 - 程序读取输入的地方,通常是键盘。
-
1:标准输出 - 程序输出正常结果的地方,通常是终端。
-
2:标准错误 - 程序输出错误信息的地方,通常是终端。
1.> file 2>&1
语法分解
> file 2>&1
这条命令由两部分组成:
-
> file
-
这是
1> file
的简写形式。 -
它的意思是:将文件描述符 1(标准输出)重定向到
file
文件。 -
此时,所有本该打印到屏幕的正常输出,都会被写入
file
文件。
-
-
2>&1
-
2>
表示重定向文件描述符 2(标准错误)。 -
&1
不是一个文件名,而是一个指向文件描述符 1 当前目的地的指针。 -
它的意思是:将文件描述符 2(标准错误)重定向到与文件描述符 1(标准输出)相同的地方。
-
由于上一步已经将标准输出(1)指向了
file
,所以这一步的结果就是标准错误(2)也指向了file
。
-
整体含义
将命令的标准输出和标准错误都重定向到同一个文件 file
中。
换句话说,命令执行后,无论是正常的输出信息,还是报错信息,都不会显示在屏幕上,而是全部被写入到 file
这个文件里。
2. &> file
语法分解:
这是覆盖重定向的现代简写形式:
整体含义:
含义: 将标准输出和标准错误都覆盖写入文件
效果: 与 > file 2>&1
完全一样,会清空文件原有内容。
3. >> file 2>&1
这是追加重定向的经典写法:
语法分解:
-
>> file
:将标准输出追加到文件末尾 -
2>&1
:将标准错误重定向到与标准输出相同的地方
整体含义:
命令的标准输出和标准错误都会追加到文件的末尾,保留文件原有内容。
4. &>> file
语法分解:
这是上面 >> file 2>&1
的现代简写形式:
整体含义:
含义: 将标准输出和标准错误都追加到文件末尾
效果: 与 >> file 2>&1
完全一样,只是语法更简洁。