转载自--没有开花的树:http://blog.csdn.net/mycwq/article/details/16858805
整理的很完整,所以拿过来了,
erlang shell 是在命令行模式下使用命令和 erlang 交互的工具。erlang shell功能十分强大,可以直接编译、加载、执行、调试模块等等,完全可以将shell做为erlang项目的终端使用。文章将对erlang shell 命令做介绍,还简单以示例说明。
打开erlang shell的帮助信息,在这里变成中文了。同时可以看下官方文档
shell 函数帮助
- Eshell V5.10.2 (abort with ^G)
- 1> help().
- ** shell 内置命令 **
- b() -- 显示所有绑定的变量
- e(N) -- 重复某次查询 <N>
- f() -- 释放所有绑定的变量
- f(X) -- 释放某个绑定的变量
- h() -- 显示之前的操作
- history(N) -- 设置保存之前操作命令的条数
- results(N) -- 设置保存之前操作结果的条数
- catch_exception(Bool) -- 设置的执行过程中的异常处理
- v(N) -- 使用某次查询的值 <N>
- rd(R,D) -- 定义一个 record
- rf() -- 移除所有 record
- rf(R) -- 移除某个 record
- rl() -- 显示所有 record
- rl(R) -- 显示某个 record 信息
- rp(Term) -- 显示某个元组的所有内容
- rr(File) -- 从一个文件或模块读取 record 定义
- ** c 模块命令 **
- bt(Pid) -- 显示一个进程的栈回溯
- c(File) -- 编译及重新加载模块
- cd(Dir) -- 改变工作目录
- flush() -- 刷新信箱(以便shell接收信息)
- help() -- 帮助信息
- i() -- 显示系统信息
- ni() -- 和 i() 一样显示系统信息,还包括网络节点的系统信息
- i(X,Y,Z) -- 通过 pid <X,Y,Z> 获取某个进程的信息
- l(Module) -- 加载或重新加载模块
- lc([File]) -- 编译一个列表的 Erlang 模块
- ls() -- 显示当前工作目录下的文件列表
- ls(Dir) -- 显示某个目录下的文件列表
- m() -- 显示已加载进系统的模块
- m(Mod) -- 显示某个模块信息
- memory() -- 显示内存分配信息
- memory(T) -- 显示某项内存分配信息 <T>
- nc(File) -- 在所有节点编译及加载模块
- nl(Module) -- 在所有节点重新加载模块
- pid(X,Y,Z) -- 通过 pid <X,Y,Z> 获取某个进程 pid
- pwd() -- 显示当前工作目录
- q() -- 关闭 erlang shell
- regs() -- 显示注册过的进程信息
- nregs() -- 和 regs() 一样显示注册过的进程信息,还包括网络节点的进程信息
- xm(M) -- 查找某个模块未定义的函数,未使用的函数,已弃用的函数
- y(File) -- 编译 Yecc 文件(.yrl)
- ** i 模块命令 **
- ih() -- 显示 i 模块的帮助信息
- true
shell 函数说明
1、显示绑定变量
b() -- 显示所有绑定的变量
- 1> [A,B,C] = [1,2,3].
- [1,2,3]
- 2> b().
- A = 1
- B = 2
- C = 3
- ok
2、重复查询
e(N) -- 重复某次查询
- 3> e(1).
- [1,2,3]
3、释放绑定变量
f() -- 释放所有绑定的变量
f(X) -- 释放某个绑定的变量
- 4> A.
- 1
- 5> f(A).
- ok
- 6> A.
- * 1: variable 'A' is unbound
- 7> B.
- 2
- 8> f().
- ok
- 9> B.
- * 1: variable 'B' is unbound
- 10> C.
- * 1: variable 'C' is unbound
4、使用查询结果
v(N) -- 使用某次查询的值
- 11> A1 = v(4).
- 1
- 12> A1.
- 1
5、record 操作
rd(R,D) -- 定义一个 record
rf() -- 移除所有 record
rf(R) -- 移除某个 record
rl() -- 显示所有 record
rl(R) -- 显示某个 record 信息
- 13> rd(person, {name, age, address, salary, children}).
- person
- 14> rd(child, {name, age}).
- child
- 15> rl().
- -record(child,{name,age}).
- -record(person,{name,age,address,salary,children}).
- ok
- 16> rl(child).
- -record(child,{name,age}).
- ok
6、显示元组内容
rp(Term) -- 显示某个元组的所有内容
erlang shell会自动省略内容太长的元组,使用rp命令可以完整显示出来
- 17> lists:seq(1,50).
- [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|...]
- 18> rp(lists:seq(1,50)).
- [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]
- ok
7、工作目录
cd(Dir) -- 改变工作目录
pwd() -- 获取工作目录
- 19> pwd().
- d:/tmp
- ok
- 20> cd("d:/").
- d:/
- ok
- 21> pwd().
- d:/
- ok
8、进程操作
self() -- 获取当前进程 pid
pid(X,Y,Z) -- 通过 pid <X,Y,Z> 获取某个进程 pidexit(Pid) -- 杀死某个进程
catch_exception(Bool) -- 设置的执行过程中的异常处理
- 22> self().
- <0.31.0>
- 23> catch_exception(false).
- true
- 24> exit(pid(0,31,0)).
- ** exception exit: <0.31.0>
- 25> self().
- <0.33.0>
- 26> catch_exception(true).
- false
- 27> exit(pid(0,33,0)).
- * exception exit: <0.33.0>
- 28> self().
- <0.33.0>