设为首页 收藏本站
查看: 1129|回复: 0

[Erlang 0083] All about Erlang Shell

[复制链接]

尚未签到

发表于 2015-4-28 10:33:04 | 显示全部楼层 |阅读模式
  
  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
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().

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

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,}
3>  group_leader(F, self()).
4> rp(v(1)).
5>
  查看一下文件dump.data:



[iyunv@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还有什么常见的问题?欢迎补充!
  
  最后,送上小图一张,这位美女是 曾华倩 每次看到曾华倩出现在屏幕,就想到何勇的那句歌词:
  姑娘 姑娘 你漂亮 漂亮 你抱着娃娃我还把你想
  
DSC0000.jpg
  
  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/

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-61482-1-1.html 上篇帖子: java连接SSH服务器并执行shell命令 下篇帖子: Windows Shell扩展系列文章 1
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表