Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 将stdin分配给文件也会将stdout分配给该文件_Bash_Exec_Stdout_Stdin - Fatal编程技术网

Bash 将stdin分配给文件也会将stdout分配给该文件

Bash 将stdin分配给文件也会将stdout分配给该文件,bash,exec,stdout,stdin,Bash,Exec,Stdout,Stdin,我执行了以下bash脚本: #!/bin/env bash exec 0<log 我以为我是在把“ls”传递给stdin。因为我没有重新分配stdout,所以我还希望在终端中看到“ls”命令的结果(我通常在这里看到stdout)。但是,我在日志文件中看到了“ls”的输出。为什么stdout在日志文件中而不是终端中?ls会写入为标准输出提供的任何文件。如果没有重定向,这就是它从其父级(脚本)继承的任何文件。通过重定向,您可以显式地为标准输出提供文件log 这与文件log可能用于的任何其他用

我执行了以下bash脚本:

#!/bin/env bash
exec 0<log

我以为我是在把“ls”传递给stdin。因为我没有重新分配stdout,所以我还希望在终端中看到“ls”命令的结果(我通常在这里看到stdout)。但是,我在日志文件中看到了“ls”的输出。为什么stdout在日志文件中而不是终端中?

ls
会写入为标准输出提供的任何文件。如果没有重定向,这就是它从其父级(脚本)继承的任何文件。通过重定向,您可以显式地为标准输出提供文件
log

这与文件
log
可能用于的任何其他用途无关

ls > log