cat(1)しない話

初級小ネタ。

例えばgrep(1)する際に、こんな感じのサンプルコードが示されることがある。

cat file.txt | grep foo

しかし個人的には次のほうが好みだ。

grep foo file.txt

せっかく引数でファイルを指定できるのだから、そちらを使いたい気分になるのだ。

tr(1)のように標準入力しか受け付けないコマンドや、wc(1)のようにファイルか標準入力かで出力が変化するコマンド(で、標準入力の場合の挙動の方が望ましいケース)では、リダイレクトを使う書き方をする。

tr [abc] [ABC] <file.txt
wc -l <file.txt

わざわざcat(1)を使ってテキストフィルタに流し込むのは、複数のファイルを連結した結果に対して何かを行いたい場合ぐらいだが、機会は少ない。