【问题标题】:Another way to exiting IEX other than ctrl-C除了 ctrl-C 之外的另一种退出 IEX 的方法
【发布时间】:2023-04-02 00:21:01
【问题描述】:

我知道我们可以使用 control-C 退出 IEX 控制台。我很好奇是否有一个命令可以输入到控制台中来做同样的事情。

【问题讨论】:

    标签: elixir elixir-iex


    【解决方案1】:

    我一直以为ctrl-G 其次是q 退出 是退出 iex shell 的官方方式。

    请参阅 IEx 文档的 section on the BREAK menu,其中还显示了如何在备用 shell 等之间切换。

    【讨论】:

    • 指定页面上没有q。请注意,BREAK 菜单可用于退出。但菜单本身也不包含(q)uit 选项,所以现在看起来完全没有记录。
    【解决方案2】:
    1. 断开与 shell 的连接并停止当前节点。这是您在大多数情况下所需要的。

      1.1。 Ctrl+\ - 退出 Erlang shell 的标准方法。请参阅“4.4 如何退出 Erlang shell?”在Erlang -- Getting Started

      1.2。 Ctrl+C, a, Enter - 通过Break 菜单的(a)bort 命令。

      1.3。 Ctrl+C, Ctrl+C - 看起来像是 Break 菜单的未记录功能。

      1.4。 Ctrl+G, q, Enter - 通过User Switch 菜单的q(退出erlang)命令(参见Erlang -- shell -- JCL Mode)。

      注意:如果您使用iex --remsh 连接到远程节点(请参阅iex --helpIEx -- Remote Shells),这会使远程节点保持活动状态。

    2. 关闭您连接的节点。

      2.1。 System.halt - 快速而肮脏的关闭。运行时系统以状态码 0 退出(干净退出,没有错误)。您也可以调用System.halt(:abort) 以使用核心转储中止。同:erlang.halt

      2.2。 :init.stop(未来版本为System.stop)- 干净关机。顺利关闭所有应用程序,卸载所有代码,并在系统终止前关闭所有端口,调用halt(Status)

      注意:如果您已使用 iex --remsh 连接到远程 shell,这会使 您的 shell 活着

    请注意,如果 Erlang 以忽略中断、+Bi、系统标志:iex --erl +Bi(这可能很有用,例如在运行受限 shell 时)启动,则所有这些选项都将被禁用。请参阅Erlang -- erl 了解更多信息。

    【讨论】:

    • 为什么你觉得不得不重述已经存在的答案?
    • @OnorioCatenacci 因为最佳答案太复杂,结构不干净,也没有链接。
    • @OnorioCatenacci 顺便说一句,我认为最佳答案中的一些解释并不正确。
    • 您好,这里是“最佳答案”的作者 :) 我认为您的答案现在比我的要好。我投了赞成票。另一方面,@OnorioCatenacci 是对的。他是对的,您的答案包含与我的答案大致相同的信息,并且他可能建议您可以重新格式化我的答案,修复一些内容并退出它们,而不是复制内容。
    • @flp 提到我应该使用您提供的信息和结构更新我的答案 - 我很乐意这样做,但我不想建立在其他人的工作之上,所以我会如果您或其他用户这样做会感觉更好:)
    【解决方案3】:

    在shell中输入 :c.q() 并且快乐

    【讨论】:

      【解决方案4】:

      我能想到 3 种退出 IEx shell 的方法:

      1. 提到的<ctrl-c>点击两次或一次,然后是q,然后是<enter>
      2. <ctrl-g> 然后q + <enter>,
      3. 最后是System.halt

      但是System.halt 和其他的有区别。

      System.halt停止 Erlang 运行时”而其他只是“退出 shell”。

      当您只有一个 shell 会话正在运行或会话未附加到单独的运行时,那么两种方式都会产生相同的结果。 但是,如果您有一个连接到单独运行时的会话,例如通过iex --remsh(远程shell)然后在其中运行System.halt将停止运行时,因此使两个shell进程/运行时终止。仅仅退出一个 shell(通过方法 1. 或 2.)不会停止它所连接的运行时。

      结论:如果你用你的 shell 连接到其他运行时,那么知道System.halt 将停止你连接到的运行时。如果您不想这样做,请使用<ctrl-c>

      更新:最近我还发现了<ctrl-\>。你可以在this article阅读更多内容:

      我不知道的是,你可以通过发送 Ctrl- 来退出 shell。 shell 将立即退出。据我所知,它具有相同的 在 Break 命令中中止 shell 的效果,它不影响 远程节点,它也可以在 iex 之外工作(例如,您可以 用于终止您的测试)。

      【讨论】:

      • 还有 :init.stop 可以优雅地停止 erlang 虚拟机。
      • 请根据@raacer 的结构改进您的答案并采用他的新信息
      • @flp 请在此处查看我的评论stackoverflow.com/questions/30085376/…
      【解决方案5】:

      看起来

       System.halt
      

      也可以。

      【讨论】:

      • 运行 'h System.halt' 以获取您可以传递给它的其他参数的信息
      猜你喜欢
      • 1970-01-01
      • 2021-02-02
      • 2015-04-09
      • 2019-10-16
      • 2012-10-01
      • 1970-01-01
      • 2017-04-24
      • 2016-12-27
      • 1970-01-01
      相关资源
      最近更新 更多