はじめに

この資料は Rust 製のコマンドラインツール o-o について紹介するものです。

Rustの環境構築やツールのインストール方法については以下を参照してください

Rust開発環境を整える

o-o について

o-o は、コマンドラインで指定されたファイルに対して読み書きを行うコマンドを、標準入出力を前提とした動作を有効にするためのCLIツールです。

GitHub - tos-kamiya/o-o: Enables commands that assume the standard input and output to read and write to files specified in the command line.

概要

xarg などのコマンドを呼び出すコマンドとシェルのリダイレクトとの干渉に悩まされることがあります。

例えば、次のコマンドライン。

% ls *.txt | xargs -I {} head -n 3 {} > {}-head.out

これは、それぞれの *.txt に対して *.head.out を作成するのではなく、すべての head コマンドの実行結果を含んだ {}-head.out という1つのファイルが作成されます。

リダイレクト(>)は xargs の外側で実行されるので、{} が置換されないことが理由です。

こうした場合に o-o は便利で、次のように記述できます。

% ls *.txt | xargs -I {} o-o - {}-head.out - head -3 {}

使用方法

o-o [options] <stdin> <stdout> <stderr> [--] <commandline>...

オプション