【翻译】LearnYouSomeErlangForGreatGood(二):起始

来源:互联网 发布:js获取当前登录用户名 编辑:程序博客网 时间:2024/06/05 15:49

  • The Shell
  • Shell Commands

The Shell

  在Erlang中,你可以在模拟器上试验大部分工作,它将在编译和部署之后执行你的代码,同时也允许你实时编辑你的代码。在Linux下启动shell,打开一个终端并如数$ erl。如果你已经正确安装了所有内容,那么你应该会看到以下内容:

Erlang R13B01 (erts-5.7.2) [source] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false]Eshell V5.7.2  (abort with ^G)

  恭喜!你成功启动了Shell。
  对于Windows用户,比起运行erl.exe,我更推荐你使用werl.exe,你可以在开始菜单找到它(程序->Erlang)。Werl是Window版Erlang Shell,它拥有一个带滚动条支持命令行编辑(复制-粘贴等功能,标准cmd永远的痛)的窗口。但想要重定向标准输入输出或使用管道操作符,仍需使用erl.exe。
  我们马上就能够在模拟器输入和运行代码了,但首先,我们来看看怎样深入其中。
  


Shell Commands

  Erlang Shell基于一个自70年起就风靡全球的文本编辑器Emacs。对于熟悉Emacs的读者,将会感动非常舒适。即使不熟悉,也没有什么关系。
  首先,如果你在输入文本之后按下^A(Ctrl + A),你将发现光标已经移到了行首。按下^E,光标将移到行尾。还可以使用箭头按键来前进、后退、重复上一行或下一行代码。
  如果你输入了一些文本如li之后按下“tab”,shell会帮你将这一项补全成lists:。再次按下tab,shell将给出许多建议函数。这里Erlang补全了模块lists,并从中找出建议使用的函数。你也许会觉得有些怪异,但别担心,很快就会熟悉起来的。
  我想我们已经见识到shell够多功能了,除了一个:我们还不知道怎么退出!找出它的捷径是输入help()。你就能获取到一堆可以在shell下使用的命令的信息(别忘了句号(.),它是运行命令必须的)。后面我们会使用到这些命令的,但现在能让我们出去的是:
  q()——quit - init:stop()的简写
  这就是那个退出的方法(事实上,两个方法)。但这在shell无响应时一点鸟用都没有!而在启动shell时,如果你够仔细,就会发现有一行”aborting with ^G“的注释。我们就这样干,然后按下h来获取帮助。

User switch command--> hc [nn]            - connect to jobi [nn]            - interrupt jobk [nn]            - kill jobj                 - list all jobss [shell]         - start local shellr [node [shell]]  - start remote shellq        - quit erlang? | h             - this message-->

  如果你按下ic,Erlang将停止运行当前代码并返回可响应的shell。i将所有运行的进程列表展示给你(数字之后带一个星表示当前运行的进程),接着你可以使用i带上列表中的数字来终止那个进程。如果使用k,你将杀死shell而不是终止它。按下s来启动一个新的。

Eshell V5.7.2  (abort with ^G)1> "OH NO THIS SHELL IS UNRESPONSIVE!!! *hits ctrl+G*"User switch command--> k--> cUnknown job--> s--> j2* {shell,start,[]}--> c 2Eshell V5.7.2  (abort with ^G)1> "YESS!"

  如果你回头读一下帮助文本,你会发现我们可以启动远程shell。我现在不会过多陷入细节,但你可以意识到除了执行代码外Erlang VM也许还有些其他功能。现在,让我们真的开始吧!

0 0
原创粉丝点击