- blogs:
- cles::blog
« 地震とネット企業のフットワーク :: 眼鏡が復活&散髪しました »
2012/12/08

bash で一時ファイルを使わずにコマンドの出力結果を比較する

linux を使っていて2つのコマンドの出力結果*1の差分を取りたい時には、それぞれの出力結果を一時ファイルに吐いて、それを diff するということをやると思いますが bash の独自機能を使うと一時ファイルを使わないでも差分を取ることができる事が分かったのでメモ。
posix shell で標準入力同士の diff (1) を実現する方法
例えば bash (1) の場合は以下の様にする事で簡単に比較できる。
$ diff <(command1) <(command2)
試しにやってみたら確かにこれで diff が簡単に取れますね。
diff に限らずファイルを2つ使って動くようなコマンドであれば適用できるようです。
$ diff -u <(seq 0 3) <(seq 1 4)
--- /dev/fd/63 2012-12-08 02:02:27.106453447 +0900
+++ /dev/fd/62 2012-12-08 02:02:27.107453280 +0900
@@ -1,4 +1,4 @@
-0
1
2
3
+4
$ cat <(seq 1 3) <(seq 4 6)
1
2
3
4
5
6
† 2013/12/10 追記
これはプロセス置換と呼ばれる機能のようです。
Man page of BASH
プロセス置換 (process substitution) がサポートされるのは、 名前付きパイプ (FIFO) または ファイル・ディスクリプターの /dev/fd 形式での指定 をサポートしているシステムです。これは <(list) または >(list) の形になります。 プロセス list は、その入力や出力が FIFO または /dev/fd 中の 何らかのファイルに接続された状態で実行されます。 このファイルの名前は、展開の結果として、 引き数の形で現在のコマンドに渡されます。 >(list) の形式を使った場合、 ファイルへの書き込みは list への入力となります。 <(list) の形式を使った場合、 引き数として渡されたファイルは list の出力を得るために読み込まれます。
- *1: 例えばlsの結果など。
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/5429
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
« 地震とネット企業のフットワーク :: 眼鏡が復活&散髪しました »
サイト内検索
検索ワードランキング
へぇが多いエントリ
閲覧数が多いエントリ
1 . アーロンチェアのポスチャーフィットを修理(114438)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(112957)
3 . 年次の人間ドックへ(112381)
4 . 2023 年分の確定申告完了!(1つめ)(111951)
5 . 三菱鉛筆がラミーを買収(111824)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(112957)
3 . 年次の人間ドックへ(112381)
4 . 2023 年分の確定申告完了!(1つめ)(111951)
5 . 三菱鉛筆がラミーを買収(111824)
cles::blogについて
Referrers