我知道我们可以用 control-C 退出 IEX 控制台。我很好奇是否有一个命令可以在控制台中输入也可以做同样的事情。
5 回答
我可以想到 3 种退出 IEx shell 的方法:
- 提到的
<ctrl-c>
命中两次或一次q
,然后<enter>
, <ctrl-g>
然后q
+<enter>
,- 最后
System.halt
,
但是和其他的还是有区别System.halt
的。
即System.halt
“停止 Erlang 运行时”,而其他只是“退出 shell ”。
当您只有一个 shell 会话正在运行或会话未附加到单独的运行时,那么两种方式都会产生相同的结果。但是,如果您有一个会话连接到单独的运行时,例如通过iex --remsh
(远程外壳)然后System.halt
在其中运行将停止运行时,因此使两个外壳进程/运行时终止。只是退出 shell(通过方法 1. 或 2.)不会停止它所连接的运行时。
结论:如果你将你的 shell 连接到其他运行时,那么知道这System.halt
将停止你连接到的运行时。如果您不想这样做,请使用<ctrl-c>
.
更新:最近我也发现了关于<ctrl-\>
. 你可以在这篇文章中阅读更多关于它的信息:
我不知道的是,您可以通过发送 Ctrl- 来退出 shell。shell 将立即退出。据我所知,它与在 Break 命令中中止 shell 具有相同的效果,它不会影响远程节点,并且它也可以在 iex 之外工作(例如,您可以使用它来终止您的测试)。
断开与 shell 的连接并停止当前节点。这是您在大多数情况下所需要的。
1.1。
Ctrl+\
- 退出 Erlang shell 的标准方法。请参阅“4.4 如何退出 Erlang shell?” 在Erlang - 入门。1.2.
Ctrl+C, a, Enter
- 通过中断菜单的(a)bort
命令。1.3.
Ctrl+C, Ctrl+C
- 看起来像是 Break 菜单的未记录功能。1.4.
Ctrl+G, q, Enter
- 通过User Switch菜单的q
(quit erlang) 命令(参见Erlang -- shell -- JCL Mode)。注意:如果您已经连接到远程节点,这会使远程节点保持活动状态
iex --remsh
(请参阅IEx -- Remote Shells)。iex --help
关闭您连接的节点。
2.1。
System.halt
- 快速而肮脏的关机。运行时系统以状态码 0 退出(干净退出,没有错误)。您也可以System.halt(:abort)
使用核心转储调用中止。与 相同:erlang.halt
。2.2.
:init.stop
(System.stop
在未来的版本中) - 干净关机。所有应用程序都被顺利关闭,所有代码都被卸载,并且在系统通过调用终止之前关闭所有端口halt(Status)
。注意:如果您已使用
iex --remsh
.
请注意,如果 Erlang 以忽略中断、+Bi、系统标志启动时所有这些选项都将被禁用:(iex --erl +Bi
这可能很有用,例如在运行受限 shell 时)。有关更多信息,请参见Erlang -- erl。
好像
System.halt
也有效。
在shell
:c.q()
中输入并开心
我一直认为ctrl-G 后跟q 退出是退出 iex shell 的官方方式。
请参阅BREAK 菜单上的 IEx 文档部分,其中还显示了如何在备用 shell 等之间切换。