UNIX/便利な技/コマンドの出力を引数にする

Top > UNIX > 便利な技 > コマンドの出力を引数にする

例えば、

% less `which xinit`

のようにすると、which xinit によって得られる結果を less コマンドの引数とすることができます。 つまり、

% which xinit
/usr/local/bin/xinit

と実行し、出力をコピーアンドペーストして

% less /usr/local/bin/xinit

のようにすることを一度で行うことと同等です。` (逆クォーテーション?) がポイントです。

また、xargs というコマンドを使って同様のことができます。

% which xinit | xargs less

xargs というコマンドは標準入力を引数のコマンドの引数にして引数のコマンドを実行します。 先ほどと同等のことを行っています。

少し解説すると、パイプを使用しているので xargs の標準入力は which xinit の標準出力、つまり /usr/local/bin/xinit になります。xargs は引数で指定したコマンド、つまりこの場合は less コマンドの引数に /usr/local/bin/xinit を指定して実行するので、結局は less /usr/local/bin/xinit が実行されます。

% find | xargs grep -n [pattern]

のように使用してカレントディレクトリ以下のファイル内文字列検索をしたりします。 find コマンドのオプション -exec を使用しない理由は find 参照。


xrea