16

In a larger script to post-process some simulation data I had the following line:

parallel bnzip2 -- *.bz2

Which, if I understand parallel correctly (and I may not), should run n-core threads of the program over all files with the listed extension. You may notice that I misspelled the command bunzip2. I would expect a warning or error message here, but it fails silently. Is this intended? How do I not get bit by this in the future?

Update:

It is possible that I have a different parallel installed than I think I do:

> 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

A man page of parallel on my system gives:

 parallel(1)                                                        parallel(1)
NAME
       parallel - run programs in parallel
....
AUTHOR
   Tollef Fog Heen

Which seems this is not the GNU version.

Hooked
  • 1,373
  • 3
  • 17
  • 24
  • Prints an error on my system. What does parallel --version say? $ parallel bnzip2 -- * sh: bnzip2: command not found – Mikel Apr 03 '12 at 15:03
  • GNU parallel is "Copyright (C) 2010,2011,2012 Ole Tange, http://ole.tange.dk and Free Software Foundation, Inc." (Same author since inception.) – Mat Apr 03 '12 at 18:02

2 Answers2

22

You have been hit by the confusion with Tollef's parallel from moreutils. See https://www.gnu.org/software/parallel/history.html

You can install GNU Parallel simply by:

wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
cp parallel sem

Watch the intro videos for GNU Parallel to learn more: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

Ole Tange
  • 35,514
12

(I would make this a comment, but I lack the privileges.)

You can also probably just use parallel --gnu. You said that Ubuntu 12(.04?) uses Tollef's version, but it's actually the gnu implementation, it just defaults to Tollef's syntax by default for some reason.

I added alias parallel='parallel --gnu' to my login script so I don't have to fuss with it anymore.

billyjmc
  • 513