2010.10.01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

MHI 5.0

この「にっき」には暴力シーンやグロテスクな表現が含まれています。

(2010.10.03)

$ [nyaos] 上に行く cd 作った

リンク先は zsh 版らしい。NYAOS 版を作った。 以下のソースは「up.lua」とでも保存して「source up.lua」するか、 _nya の中で、lua_e "~" 内に入れてください。

- #1:up 3ってやると,3つ上に行く

function nyaos.command.up(cnt)
    for i=1,cnt do
        nyaos.chdir('..')
    end
end

- #2:考えながら入力できるように、引数の数だけ見る

function nyaos.command.up(...)
    for i in pairs{...} do
        nyaos.chdir('..')
    end
end

- #3: ディレクトリ名からさかのぼるディレクトリを探す

カレントディレクトリが「c:\a\b\c\d」の時、「up b」を実行すると、 「c:\a\b」へ移動する。

function nyaos.command.up(argv)
    local p=nyaos.eval('pwd')..'\\'
    local d=argv..'\\'
    local r=0
    while 1 do
        local t=string.find(p,d,r+1,true)
        if not t then break end
        r=t
    end
    if r > 0 then
        nyaos.chdir( string.sub(p,1,r+string.len(argv)-1) )
    else
        print("no such file or directory: "..argv)
    end
end

Lua には Perl の rindex 相当が無いから面倒だったぜよ

- #4: コマンドラインが空の時に ^ をタイプすると、cd .. する

function nyaos.keyhook(t)
    if t.key == string.byte('^') and t.text == '' then
        return 'cd ..',true
    end
end

moimoi #3のスクリプトですが…
lua_e "..."に書く場合に"no such file or directory: "のダブルクォーテーション部分がエラーになりませんか?シングルクォートのほうがよろしいかと。

しかしluaで拡張できるのはすばらしく便利です。ありがたく使わせていただいてます。 (2010/11/04 21:49:29)

はやま あー、ほんとですね。そこはシングルクォートにすべきところでした。「source ~.lua」でやってたもので、気付きませんでした。ご指摘ありがとうございます。 (2010/11/05 13:32:05)

(2010.09.26) | (2010.10.09)

.net(3) C++(3) Cygwin(12) GAME(3) Groovy(1) Linux(2) Lua(39) Mercurial(13) NYAOS(92) OS/2(7) Oracle(3) Perl(4) Python(22) SKK(4) Windows8(1) album(68) ckw(10) coLinux(1) vim(6) wifky(27) 書評(21) (9)

zetamattaのたいじゅー