それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

p7zip の7z コマンドがSTDIN/STDOUTを部分的にしかサポートしてなかった。

STDIN/STDOUTで使いにくい7z コマンド

7z コマンドが最強だと思ってました。 7z はアップデートも頻繁にされているし、利用者も多い枯れているツールだと思いこんでました。

STDIN から読み込み

tar.gz を展開するときは次のようになりますよね。

cat sample.tgz |gunzip | 7z -si -ttar l 
cat sample.tgz |gunzip | 7z -si -ttar x 001.jpg -so > out.jpg

同じように 7z / zip が扱えるかというと。

STDIN でパイプすると出来ない

## zip / 7z
cat sample.zip | 7z -si -tzip  
cat sample.7z| 7z -si -t7z 

エラーになる。

ERROR:  : opening : E_NOTIMPL : Not implemented 

STDIN でリダイレクトすると出来ない。

7z -si l < sample.7z
7z -si l < sample.zip

stdin 使えない

tar 以外では、STDINが使えません。まじかよって感じです。だったら -t tar の形式指定オプションはなんのためにあるんだよって感じ。

p7zip 使いにくい・・・

公式マニュアルを読んでみると、STDINで想定してるのはtar だけっぽいぞ。

7z コマンドって微妙に使いにくいですね。