渋いコマンド使ってちょっとドヤ顔( ・´ー・`)してやろうぜ

初めまして、伊藤(@kur_neko)と申します。

クリスマスですね。この記事はueqareerアドベントカレンダーの24日目の記事です。

今日は知っているとちょっと便利かもしれない渋いlinuxコマンドをいくつか紹介しようと思います。

あまり見慣れないコマンド達だと思いますので、便利に使ってくれればと思います。

知ってると便利かもしれない渋いコマンド達

tac

catコマンドって知ってますでしょうか。catはファイルの中身表示するコマンドです。

-> % cat fruit.txt
 1. apple
 2. banana
 3. strawberry

tacはどんなコマンドかというと…!

-> % tac fruit.txt
 3. strawberry
 2. banana
 1. apple

逆向きに表示してくれるコマンドなのです!

よく見てみたらこのコマンド

c a t <-> t a c

ユニークかつ渋いコマンドです。

comm

commコマンドは2つのファイルのうち、片方にしか無い行や共通している行のみを表示できたりするコマンドです。

例えばこんなファイルを用意します。

-> % cat num1.txt
 1
 2
 3

-> % cat num2.txt
 2
 3
 4

それをcommコマンドに読み込ませると

-> % comm num1.txt num2.txt
 1
                                 2
                                 3
               4

なんとこのようにnum1.txtにしかない行、num2.txtにしかない行、共通している行に分けてくれるのです。

オプションに不要な行を指定すると下記のように共通している部分のみを取り出せてしまうんです。

-> % comm num1.txt num2.txt -12
 2
 3

ただし、このコマンドはファイルがsortされていることが前提なので、sortしてないファイルは事前にsortして上げる必要があります。こんな感じで読み込ませて上げたら良いですね。

 -> % comm -12 <(sort num1.txt) <(sort num2.txt)

渋い!

install

install…名前から聞くとなにかをinstallしてくるコマンドのように見えますが、じつはこれ、ファイルやディレクトリを作成するコマンドなんです。

-> %  install -d testdir  -o root -g root -m 644
-> %  ls -la
total 24
 drwxr-xr-x. 3 root root 4096 Dec 24 10:51 .
 dr-xr-x---. 7 root root 4096 Dec 24 10:43 ..
 -rw-r--r--. 1 root root 34 Dec 24 10:37 fruit.txt
 -rw-r--r--. 1 root root 6 Dec 24 10:42 num1.txt
 -rw-r--r--. 1 root root 6 Dec 24 10:43 num2.txt
 drwxr-xr-x. 2 root root 4096 Dec 24 10:51 testdir

なんとこのファイル、既存のディレクトリがあった場合は権限等を上書きするだけなので、冪等性があるコマンドなのです。

ansibleやitamaeなどのプロビジョニングツールでよく使うコマンドです。渋い!

paste

こちらのpasteコマンド、名前から想像すると何かクリップボードの中身をコピーするコマンドのような感じがしますが

このコマンドは水平方向にファイルを結合してくれるコマンドなのです。

試しに先程のcommコマンドの時に使ったnum1.txt ,num2.txtをつかって見ます。

->%   paste num1.txt num2.txt
 1 2
 2 3
 3 4

わかりましたでしょうか。なんとも渋いコマンドだ…

いくつかのサーバのアクセスログをサーバごとに一列づつpasteコマンドで組み合わせて見やすいアクセスログを作成したりしてました。

最後に

これらのコマンドは知ってればちょっと楽になるかもしれないような渋いコマンド達なので

すっとコマンドをつかって「え?知らないの?このコマンド?( ・´ー・`)」みたいな感じでドヤれるかもしれないですね。

(ドヤってみんな知っても怒らないでくださいね。)

他にも便利なオプションがあるので詳しくはman <コマンド名>を実行してもらえれば良いと思います。

以上、ありがとうございました!良いクリスマスを!( ・´ー・`)