我执行了以下bash脚本:
#!/bin/env bash
exec 0<log
我的理解是它永久地将此bash进程的stdin重新分配给日志文件。所以,当我跑步时
ls > log
我期待我将“ls”传递给stdin。由于我没有重新分配stdout,我也期望在终端(我通常看到stdout)中看到“ls”命令的结果。但是,我在日志文件中看到了“ls”的输出。为什么stdout在日志文件中而不是终端?
答案 0 :(得分:1)
ls
写入为标准输出提供的任何文件。没有重定向,这是它从父(您的脚本)继承的任何文件。通过重定向,您可以明确地为标准输出提供文件log
。
这与文件log
可能用于的任何其他内容无关。