[Shell] Windowsで快適なCUI環境 | パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください

パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください

開発の解決方法や新しい手法の情報を、パークのエンジニアが提供します。パークのエンジニアが必要な場合は、ぜひお気軽にお問い合わせ下さい。 株式会社パーク:http://www.pa-rk.co.jp/


テーマ:

ドーモ、onoGakkyです。

今回はWindowsのCUI環境/シェル編と言った感じです。
私が普段Windowsで使っているシェル[Nyagos]を紹介します。

Nyagos

Github zetamatta/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 = function(this)
    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 = function(args)
      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
その他

他にも機能があるので、readmegithubのWikiのページを参照
また、Luaのメタテーブルなどを駆使すれば大体のことができてしまうので、 自分の思いのままに拡張しましょう。

パク太郎さんをフォロー

ブログの更新情報が受け取れて、アクセスが簡単になります