[Erlang 0083] All about Erlang Shell-阿里云开发者社区

开发者社区> 唐玄奘> 正文

[Erlang 0083] All about Erlang Shell

简介:
+关注继续查看

 Erlang Shell是一个强大的工具,几乎只要我的电脑开着,就会有一个Erlang Shell开着,随时验证想法.就是因为是常用武器,也会有一些常见问题,今天做下回顾,顺便解决两个新问题.算是Erlang shell常见问题的不完全合集了吧.后续和Erlang Shell相关的问题也会在本文追加更新.

  

  对于Erlang Shell有些问题已经有解决方案了,你可以先翻翻下面的列表:

 

[Erlang 0062] Erlang Unicode 两三事 (Erlang Shell中文输出问题) 

 

[Erlang 0056] 用fun在Erlang Shell中编写尾递归 Ⅱ

 

[Erlang 0051] Using ETS in Erlang Shell 

 

[Erlang 0050]用fun在Erlang Shell中编写尾递归

 

[Erlang 0044] Erlang Shell 输入历史

 

[Erlang 0031] Erlang Shell中的输出完整数据

 

[Erlang 0027] Using Record in Erlang Shell 

 

 

老革命遇到新问题之 

 

我还是想看到输出的中文是什么?

 

   之前专门整理过一篇关于Erlang与Unicode的文章: [Erlang 0062] Erlang Unicode 两三事 ,但还是有执著的兄弟就像看看输出的中文是什么,这里可以绕一步,把输出的内容输出到文件,然后在别的窗口(或者把当前shell切换到后台运行)查看,代码如下:

 
14> Dump= fun(Content)-> file:write_file("/data/dump.data", io_lib:fwrite("~ts.\n", [Content])) end.
#Fun<erl_eval.6.111823515>
15> Dump(v(1)).
ok
16> 

 

  如果,这个是常用的操作,可以考虑把这个方法放在user_default方便使用;我曾经在 [Erlang 0027] Using Record in Erlang Shell 提到过user_default的用法.

 

 

老革命遇到新问题之

 

把io:format结果输出到文件

 

  群里面有人问"我在erl shell里执行m(). 如何把列出的内容输出到文件里, 因为内容太多了, 一个屏看不完!"如果你尝试上面的方法把结果写到文件,你会发现结果只有一个ok.这是因为m()输出的一大堆结果是io:format的输出,要把这些结果输出实际上要做的是将io:format的结果重定向到文件.我之前提到过,这里其实就是修改group_leader  (参考:[Erlang 0041] 详解io:format)

 

  样例代码如下,记得由于你的结果会全部重定向到文件,所以后续想切换回Shell输出,需要重新设置一下group_leader

 

复制代码
Eshell V5.9.1  (abort with ^G)

1> group_leader().

<0.23.0>

2> {ok, F} = file:open("dump.data", [write]).

{ok,<0.33.0>}

3> self().

<0.30.0>

4> group_leader(F, self()).

5> m().

6> group_leader(pid(0,23,0), pid(0,30,0)).

true

7> erlang:now().

{1351,776145,62000}
复制代码

   这个问题有同学发起追问"io:format 也显示不完呢?"  这个其实很简单,我们只需要把rp()的结果重定向就可以了:

复制代码
Eshell V5.9  (abort with ^G)
1> lists:seq(1,100).
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,
 23,24,25,26,27,28,29|...]
2> {ok, F} = file:open("dump.data", [write]).
{ok,<0.35.0>}
3>  group_leader(F, self()).
4> rp(v(1)).
5> 
复制代码

查看一下文件dump.data:

复制代码
[root@localhost data]# cat dump.data 
true
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,
 23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,
 43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,
 63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,
 83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100]
ok
复制代码

 

  关于Erlang Shell还有什么常见的问题?欢迎补充!

 

  最后,送上小图一张,这位美女是 曾华倩 每次看到曾华倩出现在屏幕,就想到何勇的那句歌词:

姑娘 姑娘 你漂亮 漂亮 你抱着娃娃我还把你想

 

 

2012-11-01 23:26 更新

今天还有一个好消息啊,Nosql Distilled 的电子书版可以下载了,期待Martin Fowler的这本书好久了,终于等到了!!!!

这里就不给出链接了,执行百度吧,很容易找到 epub版本的 

 

NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence [Paperback]

 

Pramod J. Sadalage (Author), Martin Fowler (Author)

 

http://www.amazon.com/NoSQL-Distilled-Emerging-Polyglot-Persistence/dp/0321826620

 

2012-11-5 20:26:35更新

  关于Erlang Shell的扩展除了user_default的方式,不少开发者也不断另辟蹊径:

  著名的Erlang开发者Ulf Wiger2007年在其博客里面提到了一些对Erlang Shell的扩展方法:

[1] Extending the Erlang shell (part 1)

[2] Extending the Erlang shell (part 2)

 

[3] 相关项目地址: http://jungerl.cvs.sourceforge.net/viewvc/jungerl/jungerl/lib/lersp/src/

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
使用NAT网关轻松为单台云服务器设置多个公网IP
在应用中,有时会遇到用户询问如何使单台云服务器具备多个公网IP的问题。 具体如何操作呢,有了NAT网关这个也不是难题。
26680 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
2871 0
阿里云服务器ECS远程登录用户名密码查询方法
阿里云服务器ECS远程连接登录输入用户名和密码,阿里云没有默认密码,如果购买时没设置需要先重置实例密码,Windows用户名是administrator,Linux账号是root,阿小云来详细说下阿里云服务器远程登录连接用户名和密码查询方法
11081 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
10682 0
使用SSH远程登录阿里云ECS服务器
远程连接服务器以及配置环境
2438 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
11972 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
12602 0
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
7360 0
+关注
641
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载