6
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

NYAGOS で Lua

Last updated at Posted at 2015-11-03

この記事は text.Baldanders.info の記事を再掲載したものです。Lua 初心者なので不備等あると思いますがご容赦を。

NYAGOS の特徴のひとつに, Lua のエンジンを内蔵し解釈できる点がある。というか NYAGOS 自身が機能拡張を Lua で実装していて,ユーザも hackable に NYAGOS をカスタマイズできる。

また nyagos.exe-f オプションを付けて起動すると Lua のソースファイルをスクリプトとして実行できる。たとえば以下のコード hello.lua を以下のように記述し

print "Hello World!"

nyagos.exe で実行すると

C:>nyagos.exe -f hello.lua
Hello World!

となる。

これだけだと大したことはないが, nyagos.exe でスクリプトを実行した場合は NYAGOSLua 拡張が使える。例えばカレント・フォルダを取得する getwd.lua を以下のように記述し

nyagos.write(nyagos.getwd().."\n")

nyagos.exe で実行すると

C:\Users\username>nyagos.exe -f getwd.lua
C:\Users\username

となる。

Lua 拡張については NYAGOS のドキュメントを参照するとよいだろう。特筆すべきは alias 機能で,単純なコマンドの置き換えだけでなく

nyagos.alias.cmdname = function(args) ... end

のような形式で新しい内部コマンドを作成することもできる。

ところで nyagos.exe を普通に起動して ls -oF コマンドでファイルの一覧を表示させてみると,拡張子 .lua のファイルは実行可能ファイルになっていることが分かる。ただ,実際に起動しようとすると

~> hello.lua
'lua' is not recognized as an internal or external command,
operable program or batch file

と怒られた。どうやら lua コマンドがねーよ,と言っているらしい(確かに Lua の実行モジュールは入れてないのだが)。

NYAGOS をインストールしたフォルダにある nyagos.d\suffix.lua ファイルの末尾あたりを見ると

suffix.pl="perl"
if nyagos.which("ipy") then
  suffix.py="ipy"
elseif nyagos.which("py") then
  suffix.py="py"
else
  suffix.py="python"
end
suffix.rb="ruby"
suffix.lua="lua"
suffix.awk={"awk","-f"}
suffix.js={"cscript","//nologo"}
suffix.vbs={"cscript","//nologo"}
suffix.ps1={"powershell","-file"}

となっていて,拡張子 .lua のファイルが lua コマンドに関連付けられているのが分かる。ってことは,これを nyagos.exe に書き換えればいいわけだ。とはいえ nyagos.d\suffix.lua ファイルを直接いじるわけにはいかないので(バージョンアップのたびに上書きされる), %HOME% または %HOMEPATH% フォルダにある .nyagos ファイルに以下の記述を追加する1

suffix.lua={"nyagos.exe","-f"}

これで nyagos.exe を起動し直して hello.lua ファイルを実行してみる。

~> hello.lua
Hello World!

おおっ,うまくいった。これで Lua スクリプトを NYAGOS 上でバッチファイルのように扱うことができる。

さぁて,これでいよいよもって Lua の勉強をしないといけなくなった。Pascal 系の構文は目が滑るんだよなぁ。

ブックマーク

NYAGOS 作者による解説

Lua の解説

  1. suffix ではなく aliaslua コマンドを定義する手もある。

  2. 最近の Git for Windows は bash 関連のコマンドを Git\usr\bin フォルダに集めている。 git コマンドだけが必要なら Git\cmd フォルダにのみパスを通せばよい。 bash を使う場合は Git\bin フォルダにある bash.exe を起動するのが一番安全なようだ。

6
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?