私はUbuntuを使用しています。いくつかの引数(改行で区切って)をコピーし、 xsel を使用して次のように出力できます
$ xsel
arg1
arg2
arg3
arg4
...
ここで、これらの各引数を別のコマンドに使用し、引数の数だけそのコマンドを実行したいと思います。
だから私は試しました
$ xsel | mycommand "constantArgument" $1
ただし、これは最初の引数に対してのみmycommand
を実行しました。どうすればすべての引数に対してそれを実行できますか?
xargs
を使用するだけです
xsel | xargs -n1 echo mycommand
-n1
はmycommandの1つの引数を意味しますが、これは単なるドライランであり、何が実行されるかを示し、実行するにはecho
を削除します。
定数引数の場合
xsel | xargs -I {} -n1 echo mycommand "constantArgument" {}
xsel | while read line; do mycommand "$line"; done
または同様のもの。 xargs
を使用することもできます。これは、コマンドライン引数を操作するための非常に強力なコマンドです。
少しカスタマイズ可能にするために:
printf "${CMD} %s ${ARG2}\n" `xsel` | sh -n
-noexecute
動作を確認した後、フラグを立てます。
それがあなたのために働くならば、あなたはsh
を完全に落として、代わりにこれをすることができます:
. <<HERE /dev/stdin
$(printf "${CMD} %s ${ARG2}\n" `xsel`)
HERE
またはそれ以上:
printf "${CMD} %s ${ARG2}\n" `xsel` | . /dev/stdin
どちらの方法も簡単で、それを実行します。