文件描述符是与文件输入,输出相关联的整数。它们用来跟踪已经打开的文件。
最常见的文件描述符是 系统预留的 0 ,1,2 。
0 -- stdin (标准输入)。
1 -- stdout (标准输出)。
2 -- stderr (标准错误)。
在命令输出文本时,这些文本信息 可能是 错误信息,也可能是 正常输出信息 ,单靠 查看输出的内容本身,我们没办法分辨哪些是错误信息哪些是正常输出。
我们可以 通过文件描述符来解决这个问题,将那些与特定描述符关联的文本提出出来
#!/bin/bash
echo "This is a normal stdout string" > temp.txt
ls; cat temp.txt
错误信息
如果你在 终端执行一行 错误的指令,就会输出 错误信息 例如
$ ls +
ls: +: No such file or directory
这里 ,+ 是一个非法参数,因此返回错误信息 对应 2 stderr
下面的 命令正确执行 ,输出的是 输出内容 对应 1 stdout
$ ls
Applications Movies shell.sh
Desktop Music solarized
可以将内容 重定位到文件中 如下
$ls > lstmp.txt
分别将 1 stdout 和 2 stderr 重定位到不同的文件中
注意空格 2>tmp.txt ,2和>之间不能有空格, >和tmp.txt 之间的空格 可有可无
$ls 2>error.txt 1>output.txt
将所有输出 都定位到 同一个文件中
$ls &>allmessage.txt
$ls 2>&1 alloutput.txt
或者这样
$cmd &>outputAnderror.text
$cmd 2>/dev/null