標準愚痴出力

個人的なIT作業ログです。もしかしたら一般的に参考になることが書いているかもしれません(弱気

nyagos で、行番号シェルつくった

多分理解されないと思うけど、あの「入力が数字から始まっていたら、即実行中ではなく記憶しておき、runとタイプされると数字順に実行する」という「古代 8bit BASIC」のシステム、 意外とコマンドラインシェルで便利かもね。nyagos の Lua で書いてみたけど、BASIC気分が味わえた。

こんなの:

f:id:zetamatta:20181103205347p:plain

if not share.basic then
    share.basic = {}
end

nyagos.filter = function(line)
    local m = string.match(line,"^%d+ ")
    if m then
        share.basic[tonumber(m)] = string.sub(line,string.len(m)+1)
        return ""
    end
    m = string.match(line,"^%d+$")
    if m then
        share.basic[tonumber(m)] = nil
        return ""
    end
end

nyagos.alias.list = function()
    local list={}
    for lnum,_ in pairs(share.basic) do
        list[ #list + 1 ] = lnum
    end
    table.sort(list)
    for i=1,#list do
        print(list[i],share.basic[list[i]])
    end
end

nyagos.alias.run = function()
    local list={}
    for lnum,_ in pairs(share.basic) do
        list[ #list + 1 ] = lnum
    end
    table.sort(list)
    for i=1,#list do
        nyagos.exec(share.basic[list[i]])
    end
end

nyagos.alias.new = function()
    share.basic = {}
end

shellbasic.lua で保存して、lua_f shellbasic.lua でロードすれば Ok