Edited at

moreutils について

More than 3 years have passed since last update.


moreutils とは

Unix 初期の時代には誰も書こうとは考えなかった、日々拡大を続ける Unix ツール集


この投稿の趣旨

moreutils は便利なのにあまり知られていないので、知名度を上げるためにまとめました。

moreutils が提供するコマンドは数多くありますが、その中で特に私自身が便利だと思うものを使い方とともに紹介します。


chronic

下記を



$ backup >/dev/null 2>&1

下記のように

$ chronic backup

と書くことができる。

>/dev/null 2>&1 の順番を覚えるのが大変なので、便利。


combine

2つのファイル中の行を論理演算して出力できる。

(例)

$ cat lang.txt

Ruby
Perl
Python
PHP

$ cat gemstones.txt
Ruby
Peridot
Sapphire
Opal
Topaz

$ combine lang.txt and gemstones.txt
Ruby

$ combine lang.txt not gemstones.txt
Perl
Python
PHP

$ combine gemstones.txt not lang.txt
Peridot
Sapphire
Opal
Topaz


ifdata

ifconfig や ip a を文字列処理しなくても、ネットワークのいろんなデータを取得可能

$ ifdata -pa lo

127.0.0.1


ifne

標準入力が空でないとき、後続の処理を実行する。

man ページに掲載されていた例(core があれば root にメールする)

find . -name core | ifne mail -s "Core files found" root


isutf8

引数のファイルが UTF8 かどうかを判定する。

$ isutf8 README.md && echo UTF-8

UTF-8


Sponge

標準入力をすべて受け取ってから、引数のファイルに書き出す。

(例)

$ cat lang.txt

Ruby
Perl
Python
PHP

$ egrep ^P lang.txt > lang.txt
grep: 入力ファイル `lang.txt' が出力にもなっています

$ egrep ^P lang.txt | sponge lang.txt
$ cat lang.txt
Perl
Python
PHP


vidir

テキストエディタを使って、カレントディレクトリを編集できる。

ファイル名を一括置換するときや、一部のファイルを削除したいときなどに便利。

$ vidir

$ find -type f | vidir


vipe

パイプの途中にテキストエディタを利用できる。

例として、DB のダンプ内容を加工して、リストアするときは下記のようにしたりできる。

$ mysqldump --host=srchost -uroot -p srcdb | vipe | mysql --host=dsthost -uroot -p dstdb


参考文献