【翻译】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-->
如果你按下i
或c
,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也许还有些其他功能。现在,让我们真的开始吧!
- 【翻译】LearnYouSomeErlangForGreatGood(二):起始
- 【翻译】LearnYouSomeErlangForGreatGood(三):真·起始
- 【翻译】LearnYouSomeErlangForGreatGood(一):导言
- Boost.Asio翻译(二)
- V4L2文档翻译(二)
- V4L2文档翻译(二)
- 起始
- 起始
- 起始
- 起始
- 起始
- 数据绑定(二)(翻译)
- 数据绑定(二)(翻译)
- [翻译]设计.Net Compact Framework(二)
- eMule 协议分析翻译(二)
- 尝试翻译JRUnit的文档(二)
- Programming WCF Services翻译笔记(二)
- PhysX官方手册翻译(二)
- POJ 1041 欧拉回路
- 标签语义化
- MySQL InnoDB存储引擎下的锁
- spark streaming的NetworkWordCount实例理解
- HBase学习之五:HBase的RowKey设计原则
- 【翻译】LearnYouSomeErlangForGreatGood(二):起始
- exp,imp
- 两行代码完成金额选择器与时间选择器
- Mysql日期类型大小比较---拉取给定时间段的记录
- jquery $.extend()【1】
- Retrofit 一种适用于Android和Java的类型安全的http客户端
- 我不应该
- java之包
- Linux下安装Git