Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.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 2>;out.txt“;隐藏bash输出?_Bash_Shell_Unix - Fatal编程技术网

“为什么?”;bash 2>;out.txt“;隐藏bash输出?

“为什么?”;bash 2>;out.txt“;隐藏bash输出?,bash,shell,unix,Bash,Shell,Unix,我目前正在使用zsh,我正在尝试从zsh启动bash,以便在此bash中运行的所有命令都将其stderr重定向到out.txt bash2>out.txt肯定完成了任务,但是正常的bash输出(stdout?)消失了 我所期望的是: zsh> bash 2>out.txt user@pc:~$ pwd /home/user 我得到的是: pwd /home/user user@pc:~$东西不见了 为什么会这样?我想user@pc:~$本应打印到stdout,但我尝试将stdou

我目前正在使用zsh,我正在尝试从zsh启动
bash
,以便在此
bash
中运行的所有命令都将其stderr重定向到
out.txt

bash2>out.txt肯定完成了任务,但是正常的bash输出(
stdout
?)消失了

我所期望的是:

zsh> bash 2>out.txt
user@pc:~$ pwd
/home/user
我得到的是:

pwd
/home/user
user@pc:~$
东西不见了


为什么会这样?我想
user@pc:~$
本应打印到
stdout
,但我尝试将
stdout
重定向到
/dev/null
,它仍在显示。它也没有显示在
out.txt
中,这意味着它没有打印到
stderr
?那么为什么
2>out.txt
会让它消失呢?

Bash只在交互模式下打印提示;将其stderr重定向到非终端将使其退出该模式。您可以使用
-i
强制交互模式,如果这样做,您会注意到提示实际上是打印到stderr,而不是stdout


但一般来说,如果要捕获交互式会话,应使用
script
程序(例如Linux上的
script-c bash out.txt
,BSD/macOS上的
script out.txt bash
).

当您关闭会话或写入足够的内容以刷新我选中的块并将其脚本输出时,文本文件可能会被刷新。txt bash是否会启动另一个zsh?(我在ubuntu 18.04上)在任何事情上,有没有办法达到我所期望的行为?因为
script
似乎捕获了所有内容,这不是我想要实现的。我认为没有办法让bash将其提示符打印到stderr之外的其他地方。如果仍希望得到提示,则必须分别重定向键入的每个命令的stderr。