LoginSignup
81
72

More than 5 years have passed since last update.

シェルのパイプの速度(進捗バー) は pv で

Last updated at Posted at 2015-04-21

シェルでコマンドをパイプをつなげている時、
どれくらいの速度でパイプをデータが通過しているのか知りたい事がある。
pv コマンドを使うと分かる。

pipe viewer の略で pv らしい。

使用例

$ gzip -dc < something.gz | python analysis.py > result.txt

例として ↑ のように gzip を解凍してパイプを通して Python のスクリプトに渡し、
結果は result.txt に出力しているとする。
このとき間に pv をパイプして通すと進捗バーが表示される。

$ gzip -dc < something.gz | pv | python analysis.py > result.txt
81MiB 0:00:17 [  13MiB/s] [                  <=>                                   ]

13 MiB/s の速度が出ていて、それまで計 81MiB のデータが pv を経由したとわかる。
進捗バーは /dev/tty に直接出してくれているようなので
標準出力や標準エラーをリダイレクトしても特に差し障りない。

使用例 2

pv は進捗バーを出す他は、完全に内容をそのまま通過させるので cat の代わりに使うこともできる。
たとえば、次のようなコマンドだと、 a.txt から から b.txt に進捗を表示しながらコピーする。

$ pv a.txt > b.txt
1.92GiB 0:00:32 [60.8MiB/s] [=======================================================================>] 100%

他の使用例

man を読むと、全体のサイズを指定する -s オプションを始め、
フォーマットのオプションやモードのオプションが多岐に渡る。

インストール方法

OS X

$ brew install pv

Debian/Ubuntu

$ sudo apt-get install pv

RHEL/CentOS

$ sudo yum install pv
81
72
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
81
72