2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MacでもMultiTailで日本語ファイルをtail -fしたい

Last updated at Posted at 2021-11-14

Multitailって?

ログを監視しておく用途などで、$ tail -F$ less +Fなど使っている方も多いかと思います。

複数のログファイルを追いたいけどウインドウたくさん開くのもめんどい、というときに便利なのがこのMultiTail。

Macでは日本語ファイルを読み込むと文字化けする

Homebrewにもあるので、普通は$ brew install multitailすれば良いのですが、そのままでは日本語のファイルを読み込むと意図通りの表示してくれません。

そこで、ソースからビルドしてみましょう。

※ 数ヶ月前にオリジナル版の開発が終わってしまったようなので、他所からソースは拝借しました。

Makefileの修正例

まずは準備から。

pkg-configやncursesが入っていないときはまずインストール。

$ brew install pkg-config ncurses

最新版のソースを頂いてきます。

$ curl -O https://distfiles.macports.org/multitail/multitail-6.5.0.tgz

展開して移動します。

$ tar xvfz multitail-6.5.0.tgz
$ cd multitail-6.5.0

お好きなエディタでMakefileを修正します。

$vim Makefile

34行目あたりに以下を追記しましょう。

CFLAGS+=-I/usr/local/Cellar/ncurses/6.2/include
LDFLAGS+=-L/usr/local/Cellar/ncurses/6.2/lib -lpanelw -lncursesw
CPPFLAGS+=-DUTF8_SUPPORT

バージョンはご自身の環境に合わせてください。(パスはHomebrew版のncursesを想定してます。)
※ vimをお使いの場合は、iキーで挿入モードになり編集でき、終わったらescでモードを抜け、:wqを打ってreturnし、上書き保存してvimを抜けましょう。

ではビルドしてみます。

$ make install

どうでしょうか、正常に終了したでしょうか。
もしここでwaddnwstrについてerrorがでてしまった場合、

$ vim /usr/local/Cellar/ncurses/6.2/include/ncurses.h

205: #define NCURSES_WIDECHAR 0
を1に変えて上書き保存。
※ コンパイル後に戻しておく。

$ make clean
$ make install

で再度試してみてください。

これで、日本語対応のMultiTailが使えるようになるかと思います。
MultiTailの使い方はたくさん記事が出ていますので割愛します。

自分はMac miniをサーバー代わりに使っていろいろログを書き出しているので、Multitailは重宝しています。

削除方法

いらなくなったときは通常の手順で削除できます。
その時のためにmultitail-6.5.0のディレクトリは残しておくと良いかと。

$ cd multitail-6.5.0
$ make uninstall
$ make clean
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?