GNU并行根本不工作

我一直在尝试使用GNU并行,但是我从来没有能够得到它的function!

例如,运行(在一个非空的目录!):

ls | parallel echo # Outputs single new line ls | parallel echo echo echo # Outputs three new lines. ls | parallel echo {} # /bin/bash: {}: command not found ls | parallel echo '{}' # /bin/bash: {}: command not found ls | parallel 'echo {}' # Outputs: {} ls | parallel -IMM 'echo MM' # Outputs: MM 

看来这只是把每个参数作为一个命令来执行,这是没有意义的。

我试过bash,zsh,tcsh,csh和sh,都无济于事。

当我正要完成写这个问题时,我跑parallel --version报告版本,只发现:

警告:您正在使用–tollef。 如果事情正在运行,请使用–gnu。

我不清楚为什么这个标志是默认设置的。 不用说,使用--gnu工作!

以为我会张贴这个保存一些小时的挫折和困惑。

编辑:要永久解决这个问题(至less在Ubuntu中),删除/etc/parallel/config--tollef标志

根据你的操作系统,你应该检查你是否真的在运行GNU版本。

 $ parallel --version parallel: invalid option -- '-' parallel [OPTIONS] command -- arguments for each argument, run command with argument, in parallel parallel [OPTIONS] -- commands run specified commands in parallel 

如果是这种情况,那么你不会运行GNU版本。 Ubuntu 12.04就是这样,你需要手动安装GNU并行来获得你期望的function。

作为FREEMAT的一个外部命令并行运行(MATLAB相似); argumentFile没有被馈送到正确解决它的命令:

  • 将–gnu添加到选项
  • 不使用涉及[“]的cmdString语法

码:

 cmdString = 'parallel --gnu command ::: '; while j<=jLength cmdString = [cmdString argumentFilePath(j,:) ' ']; j=j+1; end system(cmdString) 

谢谢你:)我也在Ubuntu 12.04上。