Released as 20190822 ('JesperSvarre')

This commit is contained in:
Ole Tange 2019-08-22 23:07:56 +02:00
parent 2aabbf5e76
commit c0e63fb81c
17 changed files with 270 additions and 125 deletions

30
NEWS
View file

@ -1,3 +1,33 @@
20190822
* GNU Parallel will be presented at Driving IT 2019:
https://ida.dk/arrangementer-og-kurser/konferencer/driving-it#beskrivelse
* Linux Productivity Tools
https://www.usenix.org/conference/lisa19/presentation/maheshwari
* Improve your reconnaissance performance by using GNU Parallel
https://mailchi.mp/3f46ceb46357/improve-your-reconnaissance-performance-by-using-gnu-parallel
* Paralel İşler / İşlemler / Programlar Bashde Nasıl Çalıştırılır?
https://kaleinfo.com/2019/07/29/paralel-isler-islemler-programlar-bashde-nasil-calistirilir-2/
* Use POLYBAR to change WALLPAPER with GNU Parallel
https://www.youtube.com/watch?v=rjYg-b_eiRU
* Finding the Balance Between Speed & Accuracy During an Internet-wide
Port Scanning
https://captmeelo.com/pentest/2019/07/29/port-scanning.html
* GNU Parallel Ryugu released
https://linuxreviews.org/GNU_Parallel_Ryugu_released
* CO2017 - CW1 - Operating Systems & Networks - Shell scripting
http://www.7daixie.com/2019071646302396.html
* Bug fixes and man page updates.
20190722
* {= uq; =} causes the replacement string to be unquoted. Example:

20
README
View file

@ -54,11 +54,11 @@ document.
Full installation of GNU Parallel is as simple as:
wget https://ftpmirror.gnu.org/parallel/parallel-20190722.tar.bz2
wget https://ftpmirror.gnu.org/parallel/parallel-20190722.tar.bz2.sig
gpg parallel-20190722.tar.bz2.sig
bzip2 -dc parallel-20190722.tar.bz2 | tar xvf -
cd parallel-20190722
wget https://ftpmirror.gnu.org/parallel/parallel-20190822.tar.bz2
wget https://ftpmirror.gnu.org/parallel/parallel-20190822.tar.bz2.sig
gpg parallel-20190822.tar.bz2.sig
bzip2 -dc parallel-20190822.tar.bz2 | tar xvf -
cd parallel-20190822
./configure && make && sudo make install
@ -67,11 +67,11 @@ Full installation of GNU Parallel is as simple as:
If you are not root you can add ~/bin to your path and install in
~/bin and ~/share:
wget https://ftpmirror.gnu.org/parallel/parallel-20190722.tar.bz2
wget https://ftpmirror.gnu.org/parallel/parallel-20190722.tar.bz2.sig
gpg parallel-20190722.tar.bz2.sig
bzip2 -dc parallel-20190722.tar.bz2 | tar xvf -
cd parallel-20190722
wget https://ftpmirror.gnu.org/parallel/parallel-20190822.tar.bz2
wget https://ftpmirror.gnu.org/parallel/parallel-20190822.tar.bz2.sig
gpg parallel-20190822.tar.bz2.sig
bzip2 -dc parallel-20190822.tar.bz2 | tar xvf -
cd parallel-20190822
./configure --prefix=$HOME && make && make install
Or if your system lacks 'make' you can simply copy src/parallel

20
configure vendored
View file

@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for parallel 20190722.
# Generated by GNU Autoconf 2.69 for parallel 20190822.
#
# Report bugs to <bug-parallel@gnu.org>.
#
@ -579,8 +579,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='parallel'
PACKAGE_TARNAME='parallel'
PACKAGE_VERSION='20190722'
PACKAGE_STRING='parallel 20190722'
PACKAGE_VERSION='20190822'
PACKAGE_STRING='parallel 20190822'
PACKAGE_BUGREPORT='bug-parallel@gnu.org'
PACKAGE_URL=''
@ -1214,7 +1214,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures parallel 20190722 to adapt to many kinds of systems.
\`configure' configures parallel 20190822 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1281,7 +1281,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of parallel 20190722:";;
short | recursive ) echo "Configuration of parallel 20190822:";;
esac
cat <<\_ACEOF
@ -1357,7 +1357,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
parallel configure 20190722
parallel configure 20190822
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@ -1374,7 +1374,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by parallel $as_me 20190722, which was
It was created by parallel $as_me 20190822, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@ -2237,7 +2237,7 @@ fi
# Define the identity of the package.
PACKAGE='parallel'
VERSION='20190722'
VERSION='20190822'
cat >>confdefs.h <<_ACEOF
@ -2880,7 +2880,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by parallel $as_me 20190722, which was
This file was extended by parallel $as_me 20190822, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@ -2942,7 +2942,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
parallel config.status 20190722
parallel config.status 20190822
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"

View file

@ -1,4 +1,4 @@
AC_INIT([parallel], [20190722], [bug-parallel@gnu.org])
AC_INIT([parallel], [20190822], [bug-parallel@gnu.org])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([

View file

@ -1,35 +1,37 @@
Quote of the month:
With multicore systems everywhere GNU Parallel is a must have tool.
-- Neil H. Watson @neil_h_watson
My new favourite command line tool is gnu parallel. After knowing it for a while I just recently came back to it for a refactor of a script and now I've changed like 4 different huge scripts into tiny parallel scripts that do their job literally 3 to 10 times faster and just [mind blown]
-- Izzy @angry_izzy
I love so much @GnuParallel to parallelize my SQL requests on @PostgreSQL
-- @rmaziere_85 Romain
Parallel is the BEST command.
-- Nick @NickInfoSec
GNU parallel really changed how I do a lot of data processing stuff
-- Brendan Dolan-Gavitt @moyix@twitter
It is, beyond absolutely any doubt whatsoever, the single most
important tool I use in making me a productive bioinformatician.
-- A-N-Other@reddit.com
Parallel is a life send, what an awesome piece of software.
-- Blaze9@reddit.com
It's really powerful for smallish data processing scripts
-- João Veiga @jcsvveiga@twitter
It's the MapReduce of our generation!
-- Mathias Meyer @roidrage@twitter
GNU Parallel is awesome
-- Gaurav Jain @gauravjain49@twitter
[L]earning about parallel was amazing for me, it gives us many beautiful solutions.
-- SergioAraujo@stackoverflow
With multicore systems everywhere GNU Parallel is a must have tool.
-- Neil H. Watson @neil_h_watson@twitter
My new favourite command line tool is gnu parallel. After knowing it for a while I just recently came back to it for a refactor of a script and now I've changed like 4 different huge scripts into tiny parallel scripts that do their job literally 3 to 10 times faster and just [mind blown]
-- Izzy @angry_izzy@twitter
I love so much @GnuParallel to parallelize my SQL requests on @PostgreSQL
-- @rmaziere_85 Romain
Parallel is the BEST command.
-- Nick @NickInfoSec@twitter
GNU parallel really changed how I do a lot of data processing stuff
-- Brendan Dolan-Gavitt @moyix@twitter
Parallel is a life send, what an awesome piece of software.
-- Blaze9@reddit.com
It's really powerful for smallish data processing scripts
-- João Veiga @jcsvveiga@twitter
It's the MapReduce of our generation!
-- Mathias Meyer @roidrage@twitter
GNU parallel is a seriously powerful flexible and tool.
-- Greg Hurrell @wincent
-- Greg Hurrell @wincent@twitter
[socat is] top3 on my "crazy and powerful" list (the other two being
gnu parallel and emacs).
@ -47,6 +49,10 @@ It's the MapReduce of our generation!
=== Used ===
It is, beyond absolutely any doubt whatsoever, the single most
important tool I use in making me a productive bioinformatician.
-- A-N-Other@reddit.com
It is SUPER easy to speed up jobs from the command line w/ GNU parallel.
-- B3n @B3njaminHimes@twitter

View file

@ -75,6 +75,9 @@ make alphaupload
== Update OpenSUSE build system ==
YYYYMMDD=`yyyymmdd`
export YYYYMMDD
cd ~/privat/parallel/packager/obs
find home:tange/parallel/* -type f | grep -v parallel.spec | parallel -Xj1 osc rm {}
@ -222,9 +225,21 @@ Quote of the month:
New in this release:
https://captmeelo.com/pentest/2019/07/29/port-scanning.html
https://linuxreviews.org/GNU_Parallel_Ryugu_released
http://www.7daixie.com/2019071646302396.html
* GNU Parallel will be presented at Driving IT 2019: https://ida.dk/arrangementer-og-kurser/konferencer/driving-it#beskrivelse
* Linux Productivity Tools https://www.usenix.org/conference/lisa19/presentation/maheshwari
* Improve your reconnaissance performance by using GNU Parallel https://mailchi.mp/3f46ceb46357/improve-your-reconnaissance-performance-by-using-gnu-parallel
* Paralel İşler / İşlemler / Programlar Bashde Nasıl Çalıştırılır? https://kaleinfo.com/2019/07/29/paralel-isler-islemler-programlar-bashde-nasil-calistirilir-2/
* Use POLYBAR to change WALLPAPER with GNU Parallel https://www.youtube.com/watch?v=rjYg-b_eiRU
* Finding the Balance Between Speed & Accuracy During an Internet-wide Port Scanning https://captmeelo.com/pentest/2019/07/29/port-scanning.html
* GNU Parallel Ryugu released https://linuxreviews.org/GNU_Parallel_Ryugu_released
* CO2017 - CW1 - Operating Systems & Networks - Shell scripting http://www.7daixie.com/2019071646302396.html
* Bug fixes and man page updates.

View file

@ -1,11 +1,6 @@
<directory name="parallel" rev="241" srcmd5="c7733e6025d9f4b35422af7770069be6" vrev="1">
<entry md5="5d4ebc72ae5bffb9a5a4a949e8f314b4" mtime="1558556218" name="parallel-20190522.tar.bz2" size="2038935" />
<entry md5="d7d19b16052360401b056d2dbe09225e" mtime="1561127212" name="parallel-20190622.tar.bz2" size="2036882" />
<entry md5="1d4d7e92edd443b9920be2cfd178d10d" mtime="1563864179" name="parallel-20190722.tar.bz2" size="2055042" />
<entry md5="07f67a164e2eba21997328caece19138" mtime="1563864804" name="parallel.spec" size="4751" />
<entry md5="32519dc05165419210a3fc93de42d292" mtime="1558556219" name="parallel_20190522.dsc" size="556" />
<entry md5="84b47634ef28854f07ff67b4fa600a7b" mtime="1558556219" name="parallel_20190522.tar.gz" size="2218635" />
<entry md5="749462a802ec13989b8205dbe8a076a2" mtime="1561124429" name="parallel_20190622.tar.gz" size="2219106" />
<entry md5="09d77a764d34ae75b04568f800b846be" mtime="1563864179" name="parallel_20190722.dsc" size="556" />
<entry md5="6e0bc2550f7c650f29fff8b41aa28356" mtime="1563864180" name="parallel_20190722.tar.gz" size="2234355" />
<directory name="parallel" rev="242" srcmd5="aae2529502ceb88ee12207c241f1c6ed" vrev="1">
<entry md5="bec7e8441ca38ffbd32411b5df1e1ec7" mtime="1566507479" name="parallel-20190822.tar.bz2" size="2066472" />
<entry md5="609721c738ddfc772636d8a2a5e6caeb" mtime="1566507479" name="parallel.spec" size="4751" />
<entry md5="7f2d5e5910fcb70f688214a6d3cd700a" mtime="1566507479" name="parallel_20190822.dsc" size="556" />
<entry md5="46225cd83d7ade564416869d5318e563" mtime="1566507479" name="parallel_20190822.tar.gz" size="2242794" />
</directory>

View file

@ -1,7 +1,7 @@
Summary: Shell tool for executing jobs in parallel
Name: parallel
Version: 20190722
Version: 20190822
Release: 1.3
License: GPL-3.0-or-later
Group: Productivity/File utilities

View file

@ -1,7 +1,7 @@
Summary: Shell tool for executing jobs in parallel
Name: parallel
Version: 20190722
Version: 20190822
Release: 1.3
License: GPL-3.0-or-later
Group: Productivity/File utilities

View file

@ -23,7 +23,7 @@
use strict;
use Getopt::Long;
$Global::progname="niceload";
$Global::version = 20190724;
$Global::version = 20190822;
Getopt::Long::Configure("bundling","require_order");
get_options_from_array(\@ARGV) || die_usage();
if($opt::version) {

View file

@ -24,7 +24,7 @@ my %opt = get_options_hash();
# Reserved words in Python: Replace them
my %reserved = ("return" => "_return",
"0" => "null");
my @out = <<'_EOS';
my @out = <<"_EOS";
#!/usr/bin/python3
# Copyright (C) 2019 Ole Tange and Free Software Foundation, Inc.
@ -44,6 +44,9 @@ my @out = <<'_EOS';
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
# This file was generated by
# $0
import subprocess
_EOS
@ -66,7 +69,7 @@ push @out, "):\n";
push @out, ' """
Python wrapper for GNU Parallel
Use GNU Parallel options with - replaced with _.
Use GNU Parallel options with "-" replaced with "_".
These:

View file

@ -2048,7 +2048,7 @@ sub check_invalid_option_combinations() {
sub init_globals() {
# Defaults:
$Global::version = 20190724;
$Global::version = 20190822;
$Global::progname = 'parallel';
$Global::infinity = 2**31;
$Global::debug = 0;

View file

@ -105,7 +105,7 @@ B<Bash, Csh, or Tcsh aliases>: Use B<env_parallel>.
B<Zsh, Fish, Ksh, and Pdksh functions and aliases>: Use B<env_parallel>.
=item B<{}> (alpha testing)
=item B<{}> (beta testing)
Input line. This replacement string will be replaced by a full line
read from the input source. The input source is normally stdin
@ -279,7 +279,7 @@ perl quote a string
=item Z<> B<uq()> (or B<uq>)
(alpha testing)
(beta testing)
do not quote current replacement string
=item Z<> B<total_jobs()>
@ -824,7 +824,7 @@ B<--group> is the default. Can be reversed with B<-u>.
See also: B<--line-buffer> B<--ungroup>
=item B<--group-by> I<val> (beta testing)
=item B<--group-by> I<val>
Group input by value. Combined with B<--pipe>/B<--pipepart>
B<--group-by> groups lines with the same value into a record.
@ -1244,9 +1244,9 @@ Similar to B<--memfree>.
=back
=item B<--line-buffer> (alpha testing)
=item B<--line-buffer> (beta testing)
=item B<--lb> (alpha testing)
=item B<--lb> (beta testing)
Buffer output on line basis. B<--group> will keep the output together
for a whole job. B<--ungroup> allows output to mixup with half a line
@ -1574,20 +1574,20 @@ on remote computers).
Print the number of physical CPU cores and exit.
=item B<--number-of-cores> (alpha testing)
=item B<--number-of-cores> (beta testing)
Print the number of physical CPU cores and exit (used by GNU B<parallel> itself
to determine the number of physical CPU cores on remote computers).
=item B<--number-of-sockets> (alpha testing)
=item B<--number-of-sockets> (beta testing)
Print the number of filled CPU sockets and exit (used by GNU
B<parallel> itself to determine the number of filled CPU sockets on
remote computers).
=item B<--number-of-threads> (alpha testing)
=item B<--number-of-threads> (beta testing)
Print the number of hyperthreaded CPU cores and exit (used by GNU
B<parallel> itself to determine the number of hyperthreaded CPU cores
@ -1633,9 +1633,9 @@ B<,,>:
See also: B<--rpl> B<{= perl expression =}>
=item B<--profile> I<profilename> (alpha testing)
=item B<--profile> I<profilename> (beta testing)
=item B<-J> I<profilename> (alpha testing)
=item B<-J> I<profilename> (beta testing)
Use profile I<profilename> for options. This is useful if you want to
have multiple profiles. You could have one profile for running jobs in
@ -2511,7 +2511,7 @@ to GNU B<parallel> giving each child its own process group, which is
then killed. Process groups are dependant on the tty.
=item B<--tag> (alpha testing)
=item B<--tag> (beta testing)
Tag lines with arguments. Each output line will be prepended with the
arguments and TAB (\t). When combined with B<--onall> or B<--nonall>
@ -2520,7 +2520,7 @@ the lines will be prepended with the sshlogin instead.
B<--tag> is ignored when using B<-u>.
=item B<--tagstring> I<str> (alpha testing)
=item B<--tagstring> I<str> (beta testing)
Tag lines with a string. Each output line will be prepended with
I<str> and TAB (\t). I<str> can contain replacement strings such as
@ -4773,7 +4773,7 @@ B<--ssh>. It can also be set on a per server basis (see
B<--sshlogin>).
=item $PARALLEL_SSHLOGIN (alpha testing)
=item $PARALLEL_SSHLOGIN (beta testing)
The environment variable $PARALLEL_SSHLOGIN is set by GNU B<parallel>
and is visible to the jobs started from GNU B<parallel>. The value is

View file

@ -62,6 +62,7 @@ B<Execution>
E4. Number of running jobs can depend on number of cpus
E5. Finish running jobs, but do not start new jobs after first failure
E6. Number of running jobs can be adjusted while running
E7. Only spawn new jobs if load is less than a limit
B<Remote execution>
R1. Jobs can be run on remote computers
@ -91,18 +92,10 @@ parallel:
I1 I2 I3 I4 I5 I6 I7
M1 M2 M3 M4 M5 M6
O1 O2 O3 O4 O5 O6 O7 O8 O9
E1 E2 E3 E4 E5 E6
E1 E2 E3 E4 E5 E6 E7
R1 R2 R3 R4 R5 R6 R7 R8 R9
S1 S2
xargs:
I1 I2 - - - - -
- M2 M3 - - -
- O2 O3 - O5 O6
E1 - - - - -
- - - - - x - - -
- -
find -exec:
- - - x - x -
- M2 M3 - - - -
@ -119,21 +112,6 @@ E1 - - - E5 -
- - - - - - - - -
- -
ppss:
I1 I2 - - - - I7
M1 - M3 - - M6
O1 - - x - -
E1 E2 ?E3 E4 - -
R1 R2 R3 R4 - - ?R7 ? ?
- -
pexec:
I1 I2 - I4 I5 - -
M1 - M3 - - M6
O1 O2 O3 - O5 O6
E1 - - E4 - E6
R1 - - - - R6 - - -
S1 -
xjobs, prll, dxargs, mdm/middelman, xapply, paexec, ladon, jobflow,
ClusterSSH: TODO - Please file a bug-report if you know what features
@ -142,6 +120,14 @@ they support (See REPORTING BUGS).
=head2 DIFFERENCES BETWEEN xargs AND GNU Parallel
Summary table (see legend above):
I1 I2 - - - - -
- M2 M3 - - -
- O2 O3 - O5 O6
E1 - - - - - -
- - - - - x - - -
- -
B<xargs> offers some of the same possibilities as GNU B<parallel>.
B<xargs> deals badly with special characters (such as space, \, ' and
@ -255,6 +241,14 @@ https://www.gnu.org/software/make/ (Last checked: 2019-01)
=head2 DIFFERENCES BETWEEN ppss AND GNU Parallel
Summary table (see legend above):
I1 I2 - - - - I7
M1 - M3 - - M6
O1 - - x - -
E1 E2 ?E3 E4 - - -
R1 R2 R3 R4 - - ?R7 ? ?
- -
B<ppss> is also a tool for running jobs in parallel.
The output of B<ppss> is status information and thus not useful for
@ -331,6 +325,14 @@ https://github.com/louwrentius/PPSS
=head2 DIFFERENCES BETWEEN pexec AND GNU Parallel
Summary table (see legend above):
I1 I2 - I4 I5 - -
M1 - M3 - - M6
O1 O2 O3 - O5 O6
E1 - - E4 - E6 -
R1 - - - - R6 - - -
S1 -
B<pexec> is also a tool for running jobs in parallel.
=head3 EXAMPLES FROM pexec MANUAL
@ -2197,6 +2199,33 @@ be cleaned before piping it to the next command.
https://github.com/amritb/with-this.git (Last checked: 2019-03)
=head2 DIFFERENCES BETWEEN Tollef's parallel (moreutils) AND GNU Parallel
Summary table (see legend above):
- - - I4 - - I7
- - M3 - - M6
- O2 O3 - O5 O6 - x x
E1 - - - - - E7
- x x x x x x x x
- -
=head3 EXAMPLES FROM Tollef's parallel MANUAL
B<Tollef> parallel sh -c "echo hi; sleep 2; echo bye" -- 1 2 3
B<GNU> parallel "echo hi; sleep 2; echo bye" ::: 1 2 3
B<Tollef> parallel -j 3 ufraw -o processed -- *.NEF
B<GNU> parallel -j 3 ufraw -o processed ::: *.NEF
B<Tollef> parallel -j 3 -- ls df "echo hi"
B<GNU> parallel -j 3 ::: ls df "echo hi"
(Last checked: 2019-08)
=head2 Todo
Url for spread

View file

@ -2,6 +2,8 @@
=encoding utf8
options as wrapper scripts
=head1 Design of GNU Parallel
This document describes design decisions made in the development of
@ -20,13 +22,28 @@ a single file: No need to mess around with environment variables like
PERL5LIB.
=head2 Interpreted language
=head2 Choice of programming language
GNU B<parallel> is designed to be able to run on old systems. That
means that it cannot depend on a compiler being installed - and
especially not a compiler for a language that is younger than 20 years
old.
The goal is that you can use GNU B<parallel> on any system, even if
you are not allowed to install additional software.
Of all the systems I have experienced, I have yet to see a system that
had GCC installed that did not have Perl. The same goes for Rust, Go,
Haskell, and other younger languages. I have, however, seen systems
with Perl without any of the mentioned compilers.
Most modern systems also have either Python2 or Python3 installed, but
you still cannot be certain which version, and since Python2 cannot
run under Python3, Python is not an option.
Perl has the added benefit that implementing the {= perlexpr =}
replacement string was fairly easy.
=head2 Old Perl style
@ -1115,6 +1132,26 @@ the whole output of a single job and save it as csv/tsv or SQL.
=back
=head2 Argument separators ::: :::: :::+ ::::+
The argument separator B<:::> was chosen because I have never seen B<:::>
used in any command. The natural choice B<--> would be a bad idea since
it is not unlikely that the template command will contain B<-->. I have
seen B<::> used in programming languanges to separate classes, and I
did not want the user to be confused that the separator had anything
to do with classes.
B<:::> also makes a visual separation, which is good if there are
multiple B<:::>.
When B<:::> was chosen, B<::::> came as a fairly natural extension.
Linking input sources meant having to decide for some way to indicate
linking of B<:::> and B<::::>. B<:::+> and B<::::+> was chosen, so
that they were similar to B<:::> and B<::::>.
=head2 Perl replacement strings, {= =}, and --rpl
The shorthands for replacement strings make a command look more
@ -1131,14 +1168,14 @@ again, the user may want to make his own shorthand for it. This is
what B<--rpl> is for. It works so well, that even GNU B<parallel>'s
own shorthands are implemented using B<--rpl>.
In Perl code the bigrams {= and =} rarely exist. They look like a
In Perl code the bigrams B<{=> and B<=}> rarely exist. They look like a
matching pair and can be entered on all keyboards. This made them good
candidates for enclosing the Perl expression in the replacement
strings. Another candidate ,, and ,, was rejected because they do not
look like a matching pair. B<--parens> was made, so that the users can
still use ,, and ,, if they like: B<--parens ,,,,>
Internally, however, the {= and =} are replaced by \257< and
Internally, however, the B<{=> and B<=}> are replaced by \257< and
\257>. This is to make it simpler to make regular expressions. You
only need to look one character ahead, and never have to look behind.

View file

@ -574,7 +574,7 @@ $Global::Initfile && unlink $Global::Initfile;
exit ($err);
sub parse_options {
$Global::version = 20190724;
$Global::version = 20190822;
$Global::progname = 'sql';
# This must be done first as this may exec myself

View file

@ -10,7 +10,7 @@ MAXTIME=50 RETRIES=3 MAXPROC=100 MAXINNERPROC=3
< dragonfly
< vax
< minix
< hurd
32,33d20
< beaglebone
< cubieboard2
### Copy commands to servers
@ -36,7 +36,7 @@ bin/parallel redhat copy redhat bin/parallel parallel
bin/parallel netbsd copy netbsd bin/parallel parallel
bin/parallel openbsd copy openbsd bin/parallel parallel
bin/parallel freebsd copy freebsd bin/parallel parallel
bin/parallel debian copy debian bin/parallel parallel
bin/parallel hurd copy hurd bin/parallel parallel
bin/parallel minix copy minix bin/parallel parallel
bin/env_parallel qnx copy qnx bin/env_parallel env_parallel
bin/env_parallel pidora copy pidora bin/env_parallel env_parallel
@ -60,7 +60,7 @@ bin/env_parallel redhat copy redhat bin/env_parallel env_parallel
bin/env_parallel netbsd copy netbsd bin/env_parallel env_parallel
bin/env_parallel openbsd copy openbsd bin/env_parallel env_parallel
bin/env_parallel freebsd copy freebsd bin/env_parallel env_parallel
bin/env_parallel debian copy debian bin/env_parallel env_parallel
bin/env_parallel hurd copy hurd bin/env_parallel env_parallel
bin/env_parallel minix copy minix bin/env_parallel env_parallel
bin/env_parallel.ash qnx copy qnx bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash pidora copy pidora bin/env_parallel.ash env_parallel.ash
@ -84,7 +84,7 @@ bin/env_parallel.ash redhat copy redhat bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash netbsd copy netbsd bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash openbsd copy openbsd bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash freebsd copy freebsd bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash debian copy debian bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash hurd copy hurd bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash minix copy minix bin/env_parallel.ash env_parallel.ash
bin/env_parallel.bash qnx copy qnx bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash pidora copy pidora bin/env_parallel.bash env_parallel.bash
@ -108,7 +108,7 @@ bin/env_parallel.bash redhat copy redhat bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash netbsd copy netbsd bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash openbsd copy openbsd bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash freebsd copy freebsd bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash debian copy debian bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash hurd copy hurd bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash minix copy minix bin/env_parallel.bash env_parallel.bash
bin/env_parallel.csh qnx copy qnx bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh pidora copy pidora bin/env_parallel.csh env_parallel.csh
@ -132,7 +132,7 @@ bin/env_parallel.csh redhat copy redhat bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh netbsd copy netbsd bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh openbsd copy openbsd bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh freebsd copy freebsd bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh debian copy debian bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh hurd copy hurd bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh minix copy minix bin/env_parallel.csh env_parallel.csh
bin/env_parallel.dash qnx copy qnx bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash pidora copy pidora bin/env_parallel.dash env_parallel.dash
@ -156,7 +156,7 @@ bin/env_parallel.dash redhat copy redhat bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash netbsd copy netbsd bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash openbsd copy openbsd bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash freebsd copy freebsd bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash debian copy debian bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash hurd copy hurd bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash minix copy minix bin/env_parallel.dash env_parallel.dash
bin/env_parallel.fish qnx copy qnx bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish pidora copy pidora bin/env_parallel.fish env_parallel.fish
@ -180,7 +180,7 @@ bin/env_parallel.fish redhat copy redhat bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish netbsd copy netbsd bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish openbsd copy openbsd bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish freebsd copy freebsd bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish debian copy debian bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish hurd copy hurd bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish minix copy minix bin/env_parallel.fish env_parallel.fish
bin/env_parallel.ksh qnx copy qnx bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh pidora copy pidora bin/env_parallel.ksh env_parallel.ksh
@ -204,7 +204,7 @@ bin/env_parallel.ksh redhat copy redhat bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh netbsd copy netbsd bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh openbsd copy openbsd bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh freebsd copy freebsd bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh debian copy debian bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh hurd copy hurd bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh minix copy minix bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.mksh qnx copy qnx bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh pidora copy pidora bin/env_parallel.mksh env_parallel.mksh
@ -228,7 +228,7 @@ bin/env_parallel.mksh redhat copy redhat bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh netbsd copy netbsd bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh openbsd copy openbsd bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh freebsd copy freebsd bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh debian copy debian bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh hurd copy hurd bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh minix copy minix bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.pdksh qnx copy qnx bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh pidora copy pidora bin/env_parallel.pdksh env_parallel.pdksh
@ -252,7 +252,7 @@ bin/env_parallel.pdksh redhat copy redhat bin/env_parallel.pdksh env_parallel.pd
bin/env_parallel.pdksh netbsd copy netbsd bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh openbsd copy openbsd bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh freebsd copy freebsd bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh debian copy debian bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh hurd copy hurd bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh minix copy minix bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.sh qnx copy qnx bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh pidora copy pidora bin/env_parallel.sh env_parallel.sh
@ -276,7 +276,7 @@ bin/env_parallel.sh redhat copy redhat bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh netbsd copy netbsd bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh openbsd copy openbsd bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh freebsd copy freebsd bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh debian copy debian bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh hurd copy hurd bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh minix copy minix bin/env_parallel.sh env_parallel.sh
bin/env_parallel.tcsh qnx copy qnx bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh pidora copy pidora bin/env_parallel.tcsh env_parallel.tcsh
@ -300,7 +300,7 @@ bin/env_parallel.tcsh redhat copy redhat bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh netbsd copy netbsd bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh openbsd copy openbsd bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh freebsd copy freebsd bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh debian copy debian bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh hurd copy hurd bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh minix copy minix bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.zsh qnx copy qnx bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh pidora copy pidora bin/env_parallel.zsh env_parallel.zsh
@ -324,7 +324,7 @@ bin/env_parallel.zsh redhat copy redhat bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh netbsd copy netbsd bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh openbsd copy openbsd bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh freebsd copy freebsd bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh debian copy debian bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh hurd copy hurd bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh minix copy minix bin/env_parallel.zsh env_parallel.zsh
bin/parcat qnx copy qnx bin/parcat parcat
bin/parcat pidora copy pidora bin/parcat parcat
@ -348,7 +348,7 @@ bin/parcat redhat copy redhat bin/parcat parcat
bin/parcat netbsd copy netbsd bin/parcat parcat
bin/parcat openbsd copy openbsd bin/parcat parcat
bin/parcat freebsd copy freebsd bin/parcat parcat
bin/parcat debian copy debian bin/parcat parcat
bin/parcat hurd copy hurd bin/parcat parcat
bin/parcat minix copy minix bin/parcat parcat
Done copying
@ -365,6 +365,7 @@ debian Works on debian
debian-ppc Works on debian-ppc
freebsd Works on freebsd.polarhome.com
hpux Works on hpux64
hurd Works on hurd
macosx Works on macosx.polarhome.com
mandriva Works on mandriva.polarhome.com
miros Works on miros.polarhome.com
@ -405,6 +406,8 @@ hpux 1
hpux 1
hpux-ia64 1
hpux-ia64 1
hurd 1
hurd 1
macosx 1
macosx 2
mandriva 1
@ -451,6 +454,8 @@ debian-ppc 1
debian-ppc 1
freebsd 1
freebsd 1
hurd 1
hurd 1
hpux 1
hpux 1
hpux-ia64 2
@ -511,6 +516,8 @@ debian-ppc Error in tempfile() using template /XXXXXXXX.arg: Could not create te
debian-ppc OK readonly tmp
freebsd Error in tempfile() using template /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at ~/bin/parallel line 0000.
freebsd OK readonly tmp
hurd Error in tempfile() using template /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at ~/bin/parallel line 0000.
hurd OK readonly tmp
hpux Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at ~/bin/parallel line 0000
hpux OK readonly tmp
hpux-ia64 Error in tempfile() using /XXXXXXXX.arg: Parent directory (/) is not writable
@ -580,6 +587,8 @@ debian-ppc bash only A
debian-ppc test funcA
freebsd Syntax error: "(" unexpected (expecting word)
freebsd test funcA
hurd bash only A
hurd test funcA
hpux bash only A
hpux test funcA
hpux-ia64 bash only A
@ -650,6 +659,8 @@ debian-ppc test funcB
debian-ppc bash only B
freebsd test funcB
freebsd bash only B
hurd test funcB
hurd bash only B
hpux test funcB
hpux bash only B
hpux-ia64 test funcB
@ -754,6 +765,17 @@ freebsd ~/.profile
freebsd ~/.cshrc
freebsd ~/.tcshrc
freebsd install-OK
hurd Installed env_parallel in:
hurd ~/.bashrc
hurd ~/.shrc
hurd ~/.zshenv
hurd ~/.config/fish/config.fish
hurd ~/.kshrc
hurd ~/.mkshrc
hurd ~/.profile
hurd ~/.cshrc
hurd ~/.tcshrc
hurd install-OK
hpux Installed env_parallel in:
hpux ~/.bashrc
hpux ~/.shrc
@ -978,6 +1000,7 @@ centos env_parallel run-OK
debian env_parallel run-OK
debian-ppc env_parallel run-OK
freebsd env_parallel run-OK
hurd env_parallel run-OK
hpux env_parallel run-OK
hpux-ia64 env_parallel run-OK
macosx env_parallel run-OK
@ -1018,6 +1041,7 @@ centos reading from process substitution OK
debian reading from process substitution OK
debian-ppc reading from process substitution OK
freebsd Syntax error: "(" unexpected (expecting word)
hurd reading from process substitution OK
hpux reading from process substitution OK
hpux-ia64 reading from process substitution OK
macosx reading from process substitution OK
@ -1067,6 +1091,8 @@ debian-ppc ### Test if empty command name in process list causes problems
debian-ppc OK_with_empty_cmd
freebsd ### Test if empty command name in process list causes problems
freebsd OK_with_empty_cmd
hurd ### Test if empty command name in process list causes problems
hurd OK_with_empty_cmd
hpux ### Test if empty command name in process list causes problems
hpux OK_with_empty_cmd
hpux-ia64 ### Test if empty command name in process list causes problems
@ -1123,6 +1149,7 @@ centos 1 2 1 2 3 1 2 3 4
debian 1 2 1 2 3 1 2 3 4
debian-ppc 1 2 1 2 3 1 2 3 4
freebsd eval: 1: Syntax error: word unexpected (expecting ")")
hurd 1 2 1 2 3 1 2 3 4
hpux
hpux-ia64 1 2 1 2 3 1 2 3 4
macosx 1 2 1 2 3 1 2 3 4
@ -1151,6 +1178,7 @@ centos 2 2 3 2 3 4
debian 2 2 3 2 3 4
debian-ppc 2 2 3 2 3 4
freebsd eval: 1: Syntax error: word unexpected (expecting ")")
hurd 2 2 3 2 3 4
hpux
hpux-ia64 1 2 1 2 1 2
macosx 2 2 3 2 3 4
@ -1194,6 +1222,7 @@ centos 1 2,1 2 3,1 2 3 4
debian 1 2,1 2 3,1 2 3 4
debian-ppc 1 2,1 2 3,1 2 3 4
freebsd 1 2,1 2 3,1 2 3 4
hurd 1 2,1 2 3,1 2 3 4
hpux ,,
hpux-ia64 1 2,1 2 3,1 2 3 4
macosx 1 2,1 2 3,1 2 3 4
@ -1224,6 +1253,7 @@ debian-ppc 2,2 3,2 3 4
freebsd 2,2 3,2 3 4
hpux ,,
hpux-ia64 1 2,1 2,1 2
hurd 2,2 3,2 3 4
macosx 2,2 3,2 3 4
mandriva 2,2 3,2 3 4
miros 1 2,1 2,1 2