先日、ボケーとネットサーフィン中にTwitterで見かけたツール『up』が良さげだったのでちょっと試してみることにした。 このupコマンドでどういうことができるかというと、コンソール上でパイプで渡した出力に対してgrepやsed、awkといった処理をリトライし、確定したらそのままシェルスクリプトとして出力することができる。

以下のgifを見てもらったほうがイメージしやすいかもしれない。

こんな感じで、特定の出力に対してパイプ後の処理を試行錯誤で試す際に便利なコマンドだ。

残念ながら、upで記述したコマンドはスクリプトに吐かれるだけで、そのまま実行はしてくれないようだ。 upで記述したコマンドをそのまま実行する場合は、以下のように()でグループ化してその中で処理をするか、同じような処理をfunctionにしておく必要がありそう。

ls -al | (a=$(cat) && echo "$a" |up -o /tmp/test.sh 2>/dev/null && echo "$a" | /tmp/test.sh)