このようなファイルがあります。
rm a.txt
mkdir foo
cp a.doc docs
私は xargs に慣れていますが、次のコマンドは何もしていません。
cat commands.txt | xargs -l1
それは間違っている!ファイルがすべてシェル コマンドの場合は、シェル スクリプトとして扱います。
#!/bin/bash
rm a.txt
mkdir foo
cp a.doc docs
次にコマンドラインで、chmod u+x commands.txt
./commands.txt
シェル スクリプトの「デファクト」命名規則は拡張子.sh
で終わりますが、拡張子は何でもかまいません。したがって、スクリプトに「.sh」拡張子の名前を付けてみてください
実行可能にする必要がない場合は、現在のシェルでソースします。
バッシュ/ksh/...:. commands.txt
csh/...:source commands.txt
えーと:
$ mv コマンド.txt コマンド.sh
$ chmod +x command.sh
$ ./command.sh
コマンドがファイルではなくプログラムからの出力である場合は、GNU Parallel http://www.gnu.org/software/parallel/を使用できます。
cat commands.txt | parallel -j1
コマンドを並行して実行できる場合 (つまり、完了するために相互に依存しない場合)、次のこともできます。
cat commands.txt | parallel