vlambda博客
学习文章列表

erlang shell 命令中文说明

erlang shell 是在命令行模式下使用命令和 erlang 交互的工具。erlang shell功能十分强大,可以直接编译、加载、执行、调试模块等等,完全可以将shell做为erlang项目的终端使用。文章将对erlang shell 命令做介绍,还简单以示例说明。

打开erlang shell的帮助信息,在这里变成中文了。同时可以看下官方文档(http://erlang.org/doc/man/shell.html)

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) -- 定义一个 recordrf() -- 移除所有 recordrf(R) -- 移除某个 recordrl() -- 显示所有 recordrl(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> 获取某个进程 pidpwd() -- 显示当前工作目录q() -- 关闭 erlang shellregs() -- 显示注册过的进程信息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 = 1B = 2C = 3ok

2、重复查询

e(N)   — 重复某次查询

3> e(1).[1,2,3]

3、释放绑定变量
f()        — 释放所有绑定的变量
f(X)     — 释放某个绑定的变量

4> A.15> f(A).ok6> A.* 1: variable 'A' is unbound7> B.28> f().ok9> B.* 1: variable 'B' is unbound10> C.* 1: variable 'C' is unbound

4、使用查询结果

v(N)  — 使用某次查询的值

11> A1 = v(4).112> 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}).person14> rd(child, {name, age}).child15> rl().-record(child,{name,age}).-record(person,{name,age,address,salary,children}).ok16> 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:/tmpok20> cd("d:/").d:/ok21> 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).true24> exit(pid(0,31,0)).** exception exit: <0.31.0>25> self().<0.33.0>26> catch_exception(true).false27> exit(pid(0,33,0)).* exception exit: <0.33.0>28> self().<0.33.0>


shell 函数扩展

还可以通过自定义编写user_default模块来扩展,如

-module(user_default).-export([test/0]).test()-> "this is a test example".

2> test()."this is a test example"