目的
複数のlogファイルの最新をvimで開く方法を書きました。
欲が出てn番目の新しいファイルも開きたいときはどうしましょうか?
参考
考えかた
引数を渡したいので関数で書きます。
$ tail ~/.bashrc
~~
# 引数の番号の最新をvimで開くfunction vl(){[$# -eq 0 ]&&command vim $(ls-t | sed-n 1p)[$# -ne 0 ]&&command vim $(ls-t | sed-n$1p)}$ vl 3 #<- これで3番目に新しいファイルが開きます。
説明
引数の数($#
)で処理を変えます。引数がなければsed
で1行目を表示します。引数があればsed
で1番目の引数の中身を展開します。vl
という関数を定義するのですが、ls -t
で時間が新しい順に表示させて、sed
で$1
番目のファイルを表示します。それをvim
で受け取ります。参考によるとcommand
がないと
内部で用いられているcommandは関数やエイリアス以外のコマンドを優先して実行するためのコマンドです。
だそうです。
様々な環境で動くかなんていうのは調べていないですが、ContOS7ではOKでした。どなたかのお役に立てると嬉しいです。