重定向操作
重定向操作
简介
在 Unix/Linux 系统里,每个进程默认会打开三个标准数据流:
- 标准输入(stdin):文件描述符为 0,用于接收用户输入。
- 标准输出(stdout):文件描述符为 1,用于输出命令的正常执行结果。
- 标准错误(stderr):文件描述符为 2,用于输出命令执行过程中产生的错误信息。
示例
2>/dev/null
2代表标准错误(stderr)。>是重定向符号,用于将输出导向其他地方。/dev/null是一个特殊的设备文件,被称为 “黑洞”,所有写入它的数据都会被丢弃。
所以,2>/dev/null 的作用是将命令执行过程中产生的错误信息重定向到 /dev/null,也就是将错误信息丢弃,不在终端显示。
ls non_existent_file 2>/dev/null
上述命令尝试列出一个不存在的文件,正常情况下会输出错误信息,但由于使用了 2>/dev/null,错误信息会被丢弃,终端不会有任何输出。
2>&1
上述命令将标准错误(stderr)重定向到和标准输出(stdout)相同的位置
1>/dev/null 或 >/dev/null
1 代表标准输出(stdout),1>/dev/null 用于将命令的正常执行结果重定向到 /dev/null,即丢弃正常输出。由于标准输出是默认的输出流,所以 >/dev/null 等同于 1>/dev/null。
ls /tmp 1>/dev/null
上述命令会将 ls /tmp 的正常输出结果丢弃,终端不会显示 /tmp 目录下的文件列表。
&>/dev/null
& 是一个特殊符号,用于表示将标准输出(stdout)和标准错误(stderr)都重定向到指定的位置。&>/dev/null 表示将命令的正常输出和错误信息都丢弃。
ls non_existent_file &>/dev/null
上述命令会同时丢弃 ls non_existent_file 的正常输出和错误信息,终端不会有任何输出。
>/dev/null 2>&1
这种写法先将标准输出(stdout)重定向到 /dev/null,然后 2>&1 表示将标准错误(stderr)重定向到和标准输出相同的位置,也就是 /dev/null,同样实现了将正常输出和错误信息都丢弃的效果。
ls non_existent_file >/dev/null 2>&1