この記事は 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
でスクリプトを実行した場合は NYAGOS の Lua 拡張が使える。例えばカレント・フォルダを取得する 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 作者による解説
- 環境変数PATHが長すぎて、追加したパスが有効にならないぜ! - Qiita
- nyagosスクリプト解説 - svn のサブコマンドを勝手に拡張する - Qiita
- nyagosスクリプト解説 - ezoe.lua「コマンドではない。」 - Qiita
- nyagosスクリプト解説 - 逆クォートによるコマンド出力展開編(backquote.lua) - Qiita
- nyagosスクリプト解説 - CMD.EXEで化けさせず、nyagosの中だけプロンプトをカラー化 - Qiita
- nyagosスクリプト解説 - VisualStudio れんけー - Qiita
- git 付属のPerlやunzipとかを使いたいけどsort,find,lnとかは要らない - Qiita 2
Lua の解説
- Luaプログラミング入門 | densan-labs.net
- [高速スクリプト言語 Lua を始めよう — WTOPIA v1.0 documentation](http://www.ie.u-ryukyu.ac.jp/~e085739/lua.hajime.html)
- 良いもの。悪いもの。: Lua基礎文法最速マスター
- 紀子さん@へぼぷろぐらまの日常 | Luaで日付時間操作。
- Luaでファイルの読み書きを行なう - Symfoware
-
suffix
ではなくalias
でlua
コマンドを定義する手もある。 ↩ -
最近の Git for Windows は bash 関連のコマンドを
Git\usr\bin
フォルダに集めている。 git コマンドだけが必要ならGit\cmd
フォルダにのみパスを通せばよい。 bash を使う場合はGit\bin
フォルダにあるbash.exe
を起動するのが一番安全なようだ。 ↩