手始めに

シェル

Erlang では、そのほとんどのものをエミュレーターでテストできます。それは、コンパイルやデプロイ、スクリプトの実行も行いますが、ライブ編集もできます。Linux でシェルを開始するには、ターミナルを開いて $ 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 シェルを実行しています!

Windows ユーザーはそれでも erl.exe シェルを実行できますが、代わりに werl.exe を使用する方がお勧めです。これはスタートメニュー (プログラム > Erlang) で見つけることができます。Werl は Erlang シェルの Windows 専用の実装であり、独自のウィンドウにスクロールバーがあり、コマンドラインの編集 (コピー & ペーストなど。Windows では標準の cmd.exe シェルでは問題となりました) をサポートしています。標準入出力をリダイレクトしたり、パイプラインを使用したりする場合は、それでも erl シェルが必要です。

エミュレーター内にコードを入力して実行できますが、まず、それを行う方法を見ていきましょう。

シェルのコマンド

Erlang シェルには、70 年代から使用されている人気のテキストエディター Emacs のサブセットをベースにした、組み込みラインエディターがあります。Emacs を知っていれば大丈夫です。知らない人も、いずれにせよ大丈夫です。

super turtle

まず、テキストを入力して ^A (Ctrl+A) に移動すると、カーソルが行頭へ移動します。^E (Ctrl+E) は行末へ移動します。矢印キーを使用して、前後に移動して、前の行と次の行を表示してコードを繰り返すことができます。

li のようなものを入力して "tab" を押すと、シェルが用語を lists: に完了します。もう一度 tab を押すと、シェルはその後に使用する多くの関数を提案します。Erlang がモジュール lists を完了し、それからそこから関数を提案しています。この表記は奇妙に見えるかもしれませんが、心配しないでください。すぐに慣れます。

シェル機能は大丈夫であるくらいには十分に見たと思いますが、1 つ問題があります。終了する方法がわかりません。早わかりの方法があります。help(). と入力するだけで、シェルで使用できる多くのコマンドに関する情報が得られます (実行するためにピリオド (.) が必要なので忘れないでください)。いくつかは後で使用しますが、終了するために唯一気になるのは次の行だけです
q() -- 終了する - init:stop() の省略形
これを1つの方法として (実際は2つの方法) 行うことができます。しかし、シェルがフリーズした場合は、これでは役に立ちません。注意していれば、シェルを開始したときに '^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 は現在実行中のコードを停止して、反応のあるシェルに戻します。j を使用すると、実行中のプロセスの一覧が表示されます (番号の後にアスタリスクが付いている場合は、現在実行しているジョブを示しています)。これを i とその番号の後に続けて使用すると、中断できます。k を使用すると、一時停止するのではなく、そのようにシェルを終了します。s を押して新しいシェルを起動します。

 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!"

ヘルプテキストをもう一度確認すれば、リモートシェルを起動できることがわかります。詳細については今は触れませんが、これにより Erlang VM がコードを実行する以外にも何ができるかがわかるはずです。ここでは、まず、(実際には)物事の開始から進めていきます。