開始
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)
恭喜,您正在執行 Erlang shell!
對於 Windows 使用者,您仍然可以執行 erl.exe
shell,但建議您改用 werl.exe
,可以在您的開始選單中找到它 (程式集 > Erlang
)。Werl 是 Erlang shell 的 Windows 專用實作,它有自己的視窗,帶有捲軸並支援命令列編輯(例如複製貼上,這在 Windows 的標準 cmd.exe
shell 中會很麻煩)。如果您想重新導向標準輸入或輸出,或使用管道,仍然需要 erl shell。
我們將能夠在模擬器中輸入並執行程式碼,但首先,讓我們看看如何操作它。
Shell 命令
Erlang shell 有一個內建的行編輯器,基於 Emacs 的一個子集,Emacs 是一個自 70 年代以來就廣泛使用的流行文字編輯器。如果您知道 Emacs,您應該沒問題。對於其他人,您也會沒事的。

首先,如果您輸入一些文字,然後按下 ^A
(Ctrl+A),您應該會看到游標移動到行首。^E
(Ctrl+E) 會將您帶到行尾。您可以使用方向鍵向前、向後移動,顯示上一個或下一個行,以便您可以重複程式碼。
如果您輸入類似 li
的內容,然後按下 "tab" 鍵,shell 會為您完成 lists:
的詞彙。再次按下 tab 鍵,shell 會建議您許多可用的函式。這是 Erlang 完成模組 lists
,然後建議其中的函式。您可能會覺得這種表示法很奇怪,但別擔心,您很快就會熟悉它。
我認為我們已經了解足夠的 shell 功能了,除了還有一件事:我們不知道如何離開!有一個快速的方法可以找到答案。只需輸入 help().
,您應該會得到一堆可以在 shell 中使用的命令資訊 (不要忘記句點 (.
),因為它是命令運行的必要條件)。我們稍後會使用其中的一些,但我們為了離開而需要關注的唯一一行是
q() -- 離開 - init:stop() 的簡寫
所以這是其中一種方法 (實際上是兩種方法)。但如果 shell 凍結了,這對我們沒有幫助!如果您注意到了,當您啟動 shell 時,有一個關於「使用 ^G
中斷」的註解。讓我們這樣做,然後按下 h
以取得說明!
User switch command --> h c [nn] - connect to job i [nn] - interrupt job k [nn] - kill job j - list all jobs s [shell] - start local shell r [node [shell]] - start remote shell q - quit erlang ? | h - this message -->
如果您輸入 i
然後輸入 c
,Erlang 應該會停止目前正在執行的程式碼,並將您帶回一個反應靈敏的 shell。j
會給您一個正在執行的程序列表(數字後的星號表示這是您目前正在執行的工作),然後您可以使用 i
後面跟著數字來中斷它。如果您使用 k
,您將會直接關閉 shell,而不是僅僅中斷它。按下 s
以啟動新的 shell。
Eshell V5.7.2 (abort with ^G) 1> "OH NO THIS SHELL IS UNRESPONSIVE!!! *hits ctrl+G*" User switch command --> k --> c Unknown job --> s --> j 2* {shell,start,[]} --> c 2 Eshell V5.7.2 (abort with ^G) 1> "YESS!"
如果您回頭閱讀說明文字,您會注意到我們可以啟動遠端 shell。我現在不會深入探討細節,但這應該讓您了解 Erlang VM 除了執行程式碼之外還能做什麼。現在,讓我們開始 (真的)。