我刚开始使用Elixir,并且已经使用了iex shell很多了。我可以将“ session ”保存/记录到文件吗?

谢谢。

最佳答案

在Erlang / OTP-20及更高版本中



-https://github.com/ferd/erlang-history

故障排除

历史记录似乎未更新(未写入文件)?

似乎将历史记录写入文件的过程是异步执行的,并且在关闭IEx Shell之前需要一些时间。您需要稍等片刻才能退出 shell 程序(例如,按<ctrl+\>)。

Erlang / OTP-20之前版本:

我发现有两种方法可以做到这一点。

1. Erlang History



在Ubuntu Linux中安装:

sudo su
cd /usr/local/src
git clone https://github.com/ferd/erlang-history.git
cd erlang-history
make install

现在,每个现在开始使用的基于Erlang的REPL(即IEx)都应该使用erlang-history

2. rlwrap

另外,您可以尝试使用更通用的REPL增强程序/修复程序rlwrap,它是“readline包装器”:


rlwrap -a -A iex -S mix

(如果您在Ubuntu Linux上使用,请使用:sudo apt-get install rlwrap)

它使您可以向REPL添加更多功能,例如pipeto过滤器rlwrap -a -z pipeto iex,可让您将内容通过管道传递给Shell命令-对阅读文档非常有用,例如:iex> h Stream | less(more)

知道缺点:
  • 它会破坏IEx
  • 中的代码完成(即制表符完成)


    为什么此非常有用的功能-命令历史-Elixir / Erlang中尚未包含?
  • https://github.com/elixir-lang/elixir/issues/2945#issuecomment-66594851
  • https://github.com/elixir-lang/elixir/issues/1516#issuecomment-21772851


  • 使用 asdf 时,请参见this

    关于shell - 如何保存/记录iex shell的输出以获得持久的命令历史记录?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22426716/

    10-16 11:05