我有一个这样的文件。
rm a.txt
mkdir foo
cp a.doc docs
我习惯了 xargs 但以下命令没有做任何事情。
cat commands.txt | xargs -l1
你这样做是不对的!如果您的文件是所有 shell 命令,请将其视为 shell 脚本。
#!/bin/bash
rm a.txt
mkdir foo
cp a.doc docs
然后在命令行上,chmod u+x commands.txt
./commands.txt
shell 脚本的“事实上的”命名约定以 extension 结尾.sh
,尽管它可以是任何东西。所以尝试将你的脚本命名为“.sh”扩展名
厄姆:
$ mv commands.txt commands.sh
$ chmod +x 命令.sh
$ ./command.sh
如果您不需要使其可执行,请在您当前的 shell 中获取它:
bash/ksh/...:. commands.txt
csh/...:source commands.txt
如果您的命令不在文件中,而是在程序的输出中,您可以使用 GNU Parallel http://www.gnu.org/software/parallel/:
cat commands.txt | parallel -j1
如果命令可以并行运行(即不依赖于彼此来完成),你甚至可以这样做:
cat commands.txt | parallel