gpt4 book ai didi

bash - 我想知道执行此命令时发生了什么?

转载 作者:行者123 更新时间:2023-11-29 09:26:03 25 4
gpt4 key购买 nike

cd / | vi

这是我在 bash shell 中输入的命令。执行此命令时,它只会打开 vi 编辑器。然后我就不再使用 :q 了。现在我在 bash shell 中。当我们在此处键入任何命令时,它不会显示,但会执行该命令。我想知道它被重定向到哪里。

最佳答案

不是 100% 确定,但我想谈谈我的看法。

我认为这与输入/输出控制有关。

阅读 cd 的手册页:

STDOUT
If a non-empty directory name from CDPATH is used, or if cd − is
used, an absolute pathname of the new working directory shall be written to the
standard output
as follows:

"%s\n", <new directory>

Otherwise, there shall be no output.

也就是说,如果你cd/,stdout是/dev/null,pipe使stdout成为vim的stdin。

当 vim 启动时,它会保存终端设置、输入/输出控制。但是如果它是 /dev/null,而不是 tty 文件描述符,vim 将不会有正确的设置。在你退出 vim 后,它会在你的终端上应用那些不正确的东西。

要测试,执行这个:

cd -|vim

cd - 会有标准输出,然后 vim 有正常的标准输入,退出 vim 后,终端应该仍然可以正常工作。

然后试试这个:

vim </dev/null

这与 cd/|vim 相同,退出 vim 后,您的终端行为异常,与 cd/|vim 相同

stty sane

可以拯救您的终端。

关于bash - 我想知道执行此命令时发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25849374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com