CLIでブックマークするgookmark
あ~このディレクトリをブックマークしたい
僕はwindowsでもlinuxでもコンソールを使うことが多く、
社内の共有ファイルサーバーとかにもコンソールで侵入していきます。
そんな時思うのが「あ~このディレクトリをブックマークしたい」
Go言語で作ってみた
nocd5/gookmark
ざっくりと使い方は
$ pwd
-> /foo/bar/hoge/moge
$ gookmark add
$ gookmark add ../..
$ gookmark list
-> /foo/bar
/foo/bar/hoge/moge
add
したものをlist
で標準出力に表示するだけです。
front endはpecoあたりで書いた方がいいな。と思ったのでこうなりました。
どうせディレクトリ移動するにはシェルスクリプト書く必要がありますからね。
nyagos用にpecoを使ったfront end
pgm.lua
--------------------------------------------------------
-- gookmark Front End
function nocd5_pgm(args)
local target = nyagos.eval('gookmark list | peco')
if target ~= nil then
if is_dir(target) then
nyagos.exec('cd "' .. chomp(target) .. '"')
else
nyagos.exec('open ' .. target)
end
end
end
--
function is_dir(f)
return nyagos.eval('file ' .. f):find(': directory')
end
function chomp(src)
return string.gsub(src, "[\r\n]+$", "")
end
--------------------------------------------------------
alias{ pgm=nocd5_pgm }
--------------------------------------------------------
-- gookmark Front End
function nocd5_pgm(args)
local target = nyagos.eval('gookmark list | peco')
if target ~= nil then
if is_dir(target) then
nyagos.exec('cd "' .. chomp(target) .. '"')
else
nyagos.exec('open ' .. target)
end
end
end
--
function is_dir(f)
return nyagos.eval('file ' .. f):find(': directory')
end
function chomp(src)
return string.gsub(src, "[\r\n]+$", "")
end
--------------------------------------------------------
alias{ pgm=nocd5_pgm }
選択したものがディレクトリならcd
ディレクトリ以外ならとりあえずopen
(関連付けで開く)しています。
csh, bash
Githubのリポジトリにcshとbash用のサンプルスクリプトも追加しました。
nocd5/gookmark/examples
参考になれば幸いです。
おわりに
なぜGo言語になったか
最初に浮かんだのが、
bookmark add
bookmark list
bookmark remove
こんなサブコマンドを持つコマンドでした。
windowsでは主にnyagosを使ってるのでluaで書くことも考えたのですが、
それだとlinuxで使えないし、サブコマンド持つスクリプト書くのは面倒くさそう。
「そうだ!cli-initを使おう!」
ということでGo言語になりました。
ほとんどGo言語は書いたことがないので大変でした
まぁ規模が小さいので、大したことではなくて
自分で書いた関数から返すerror
どうするかなぁとか
errorがあった時、panic
やlog.Fatal
とか、どれ使うんだろう?とか
(結局すべてfmt.Fprintln(os.Stderr, err)
にしましたが)
しょうもないことですが。
Author And Source
この問題について(CLIでブックマークするgookmark), 我々は、より多くの情報をここで見つけました https://qiita.com/nocd5/items/1b509155849a476ca400著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .