ドーモ、onoGakkyです。
今回はWindowsのCUI環境/シェル編と言った感じです。
私が普段Windowsで使っているシェル[Nyagos]を紹介します。
Nyagos
Go言語で書かれたLuaで拡張できるシェル
特徴
- UNIX風
- Luaで拡張できる
- Unicodeサポート
UNIX風
- UNIX系の幾つかのコマンドが使える
- ヒストリが使える
![ヒストリ番号]
で再実行など
- エイリアスを設定できる
- ファイル名/コマンド名保管
- パイプが使える
$ pwd | clip
とすればカレントディレクトリのパスをクリップボードにコピーできる
Luaで拡張
- LuaでBashの.bashrcや、スクリプトが記述できる
.nyagos
起動時の設定ファイル
-- This is a sample .nyagos written with Lua.
-- Edit and put it on %USERPROFILE%, %HOME% or the same folder with nyagos.exe
-- Simple Prompt for CMD.EXE
nyagos.env.prompt='$L'.. nyagos.getenv('COMPUTERNAME') .. ':$P$G$_$$$s'
-- Coloring Prompt for NYAGOS.exe
nyagos.prompt =
local wd = nyagos.getwd()
local env = nyagos.env
local home = env.home or env.userprofile
local home_len = home:len()
if wd:sub(1,home_len) == home then
wd = "~" .. wd:sub(home_len+1)
end
local title = wd .. " - NYAGOS"
if nyagos.elevated() then
return nyagos.default_prompt('$e[40;31;1m'..this..'$e[37;1m',title)
else
return nyagos.default_prompt('$e[40;36;1m'..this..'$e[37;1m',title)
end
end
初期状態で上の記述がされています。
プロンプトにこだわりがある人はここをいじる。
エイリアス
alias {
clear = "cls",
ll = "ls -la $*",
rm = "del $*",
mv = "move $*",
cp = "copy $*",
-- Bash on Ubuntu on Windowsの起動(System32では起動できなかったので注意)
bash = [["C:\Windows\Sysnative\bash.exe" $*]],
vi = [["(Vimのパス)\vim.exe" $*]],
vim = "vi $*",
-- TeraTerm起動 (Unixのsshコマンドと同じ使い方で起動できる)
ssh = [["(Teratermのパス)\ttermpro.exe" $* &]],
-- シャットダウン/再起動
reboot = [["C:\Windows\System32\shutdown.exe" /r /t 0]],
shutdown = [["C:\Windows\System32\shutdown.exe" /s /t 0]],
-- ブラウザ起動
chrome = [["C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" $* &]],
-- エクスプローラ起動(引数に指定したパスで起動)
exp =
return "explorer " .. args[1]:gsub("/", "\\")
end,
}
- alias関数にエイリアス上記のようなテーブルを与えると設定できる
- Luaはテーブル内に関数も記述できるので、簡単なコマンドならエイリアス内に直接書ける
- rm/mv/cpはDOSコマンドのため、UNIXっぽく使うにはもう少し改良が必要
インタプリタ名の追加
さらに、スクリプトファイルの拡張子とインタプリタを紐付けてファイル名のみの入力で実行できるよう設定ができます。
suffix.拡張子 = "インタプリタ名"
suffix.py = "python"
- 最初から以下のものは設定済みのようです
- .lua
- .js
- .rb
- .py
- .pl
- .vbs
- .ps1
- .awk
その他
他にも機能があるので、readmeやgithubのWikiのページを参照
また、Luaのメタテーブルなどを駆使すれば大体のことができてしまうので、 自分の思いのままに拡張しましょう。