parallel: tmux uses $TMUX, so rename it to: $PARALLEL_TMUX.

This commit is contained in:
Ole Tange 2016-10-30 17:07:59 +01:00
parent f9f52c083e
commit 55eaf48197
13 changed files with 101 additions and 89 deletions

View file

@ -4,7 +4,7 @@
Check that documentation is updated (compare to web):
Fixet for 20161022
Fixet for 20161122
git diff last-release-commit
Unmodified beta since last version => production
Unmodified alpha since last version => beta
@ -219,18 +219,24 @@ cc:Tim Cuthbertson <tim3d.junk@gmail.com>,
Ryoichiro Suzuki <ryoichiro.suzuki@gmail.com>,
Jesse Alama <jesse.alama@gmail.com>
Subject: GNU Parallel 20161022 ('Matthew') released <<[stable]>>
Subject: GNU Parallel 20161122 ('Hillary') released <<[stable]>>
GNU Parallel 20161022 ('Matthew') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/
GNU Parallel 20161122 ('Hillary') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/
<<No new functionality was introduced so this is a good candidate for a stable release.>>
Haiku of the month:
Speed is good for you
Multi speed is better still
Use GNU Parallel
-- Ole Tange
New in this release:
http://g-liu.com/blog/2016/10/tutorial-parallel-web-scraping-with-casperjs-and-gnu-parallel/
* <<Possibly http://link.springer.com/chapter/10.1007%2F978-3-319-22053-6_46>>
* <<Possibly http://link.springer.com/article/10.1007/s12021-015-9290-5>>
@ -263,14 +269,6 @@ for Big Data Applications https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumb
* <<Possible: http://link.springer.com/article/10.1007/s12021-015-9290-5 http://link.springer.com/protocol/10.1007/978-1-4939-3578-9_14>>
* First command no longer gets stdin as it causes unpredictable issues.
* GNU Parallel was cited in: Efficiently parallelized modeling of tightly focused, large bandwidth laser pulses https://arxiv.org/pdf/1609.08146v1.pdf
* How to crunch lots of geodata in parallel http://blog.faraday.io/how-to-crunch-lots-of-geodata-in-parallel/
* GNU parallel is my new toaster http://amedee.me/gnu-parallel-is-my-new-toaster/index.html
* Bug fixes and man page updates.
GNU Parallel - For people who live life in the parallel lane.

View file

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

View file

@ -1210,7 +1210,7 @@ sub check_invalid_option_combinations {
sub init_globals {
# Defaults:
$Global::version = 20161022;
$Global::version = 20161023;
$Global::progname = 'parallel';
$Global::infinity = 2**31;
$Global::debug = 0;
@ -7922,14 +7922,14 @@ sub print_dryrun_and_verbose {
}
my $tmux;
$ENV{'TMUX'} ||= "tmux";
$ENV{'PARALLEL_TMUX'} ||= "tmux";
if(not $tmuxsocket) {
$tmuxsocket = ::tmpname("tms");
::status("See output with: $ENV{'TMUX'} -S $tmuxsocket attach");
::status("See output with: $ENV{'PARALLEL_TMUX'} -S $tmuxsocket attach");
}
$tmux = "sh -c '".
$ENV{'TMUX'}." -S $tmuxsocket new-session -s p$$ -d \"sleep .2\" >/dev/null 2>&1';" .
$ENV{'TMUX'}." -S $tmuxsocket new-window -t p$$ -n $title";
$ENV{'PARALLEL_TMUX'}." -S $tmuxsocket new-session -s p$$ -d \"sleep .2\" >/dev/null 2>&1';" .
$ENV{'PARALLEL_TMUX'}." -S $tmuxsocket new-window -t p$$ -n $title";
::debug("tmux", "title len:", $l_tit, " act ", $l_act, " max ",
$Limits::Command::line_max_len, " tot ",
@ -9414,15 +9414,15 @@ sub tmux_length {
# $tmux_len = maximal length runable in tmux
my $len = shift;
if($opt::tmux) {
$ENV{'TMUX'} ||= "tmux";
if(not ::which($ENV{'TMUX'})) {
::error($ENV{'TMUX'}." not found in \$PATH.");
$ENV{'PARALLEL_TMUX'} ||= "tmux";
if(not ::which($ENV{'PARALLEL_TMUX'})) {
::error($ENV{'PARALLEL_TMUX'}." not found in \$PATH.");
::wait_and_exit(255);
}
my @out;
for my $l (1, 2020, 16320, 100000, $len) {
my $tmpfile = ::tmpname("tms");
my $tmuxcmd = $ENV{'TMUX'}." -S $tmpfile new-session -d -n echo $l".
my $tmuxcmd = $ENV{'PARALLEL_TMUX'}." -S $tmpfile new-session -d -n echo $l".
("x"x$l). " && echo $l; rm -f $tmpfile";
push @out, ::qqx($tmuxcmd);
::rm($tmpfile);

View file

@ -3873,6 +3873,11 @@ B<Example:>
echo seq:'$'PARALLEL_SEQ arg1:{1} arg2:{2}
=item $PARALLEL_TMUX
Path to B<tmux>. If unset the B<tmux> in $PATH is used.
=item $TMPDIR
Directory for temporary files. See: B<--tmpdir>.
@ -4964,9 +4969,10 @@ be small and simple, so try to remove as many options as possible. A
combination of B<yes>, B<seq>, B<cat>, B<echo>, and B<sleep> can
reproduce most errors. If your example requires large files, see if
you can make them by something like B<seq 1000000> > B<file> or B<yes
| head -n 10000000> > B<file>. If your example requires remote
execution, see if you can use B<localhost> - maybe using another
login.
| head -n 10000000> > B<file>.
If your example requires remote execution, see if you can use
B<localhost> - maybe using another login.
=item *
@ -4986,6 +4992,7 @@ If you suspect the error is dependent on your environment or
distribution, please see if you can reproduce the error on one of
these VirtualBox images:
http://sourceforge.net/projects/virtualboximage/files/
http://www.osboxes.org/virtualbox-images/
Specifying the name of your distribution is not enough as you may have
installed software that is not in the VirtualBox images.

View file

@ -860,7 +860,11 @@ Output (the order may be different):
GNU B<parallel> can also \-quote full lines. Simply run this:
parallel --shellquote
parallel: Warning: Input is read from the terminal. Only experts do this on purpose. Press CTRL-D to exit.
parallel: Warning: Input is read from the terminal. You either know what you
parallel: Warning: are doing (in which case: YOU ARE AWESOME!) or you forgot
parallel: Warning: ::: or :::: or to pipe data into parallel. If so
parallel: Warning: consider going through the tutorial: man parallel_tutorial
parallel: Warning: Press CTRL-D to exit.
perl -e 'print "@ARGV\n"'
[CTRL-D]

View file

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

View file

@ -115,8 +115,8 @@ echo '### bug #44614: --pipepart --header off by one'
parallel --pipepart -a /tmp/parallel_44616 -k --block 2 --regexp --recend 3'\n' 'echo foo; cat';
rm /tmp/parallel_44616
echo '### TMUX not found'
TMUX=not-existing parallel --tmux echo ::: 1
echo '### PARALLEL_TMUX not found'
PARALLEL_TMUX=not-existing parallel --tmux echo ::: 1
echo '**'

View file

@ -12,38 +12,38 @@ par_tmux() {
export -f par_tmux
cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj3 --timeout 60 --retries 2 -k --joblog /tmp/jl-`basename $0` -L1
echo '### tmux1.9'
seq 000 100 | TMUX=tmux1.9 par_tmux
seq 100 200 | TMUX=tmux1.9 par_tmux
seq 200 300 | TMUX=tmux1.9 par_tmux
seq 300 400 | TMUX=tmux1.9 par_tmux
seq 400 500 | TMUX=tmux1.9 par_tmux
seq 500 600 | TMUX=tmux1.9 par_tmux
seq 600 700 | TMUX=tmux1.9 par_tmux
seq 700 800 | TMUX=tmux1.9 par_tmux
seq 800 900 | TMUX=tmux1.9 par_tmux
seq 900 1000 | TMUX=tmux1.9 par_tmux
seq 1000 1006 | TMUX=tmux1.9 par_tmux
seq 000 100 | PARALLEL_TMUX=tmux1.9 par_tmux
seq 100 200 | PARALLEL_TMUX=tmux1.9 par_tmux
seq 200 300 | PARALLEL_TMUX=tmux1.9 par_tmux
seq 300 400 | PARALLEL_TMUX=tmux1.9 par_tmux
seq 400 500 | PARALLEL_TMUX=tmux1.9 par_tmux
seq 500 600 | PARALLEL_TMUX=tmux1.9 par_tmux
seq 600 700 | PARALLEL_TMUX=tmux1.9 par_tmux
seq 700 800 | PARALLEL_TMUX=tmux1.9 par_tmux
seq 800 900 | PARALLEL_TMUX=tmux1.9 par_tmux
seq 900 1000 | PARALLEL_TMUX=tmux1.9 par_tmux
seq 1000 1006 | PARALLEL_TMUX=tmux1.9 par_tmux
echo '### tmux1.9 fails'
echo 1007 | TMUX=tmux1.9 par_tmux
echo 1008 | TMUX=tmux1.9 par_tmux
echo 1009 | TMUX=tmux1.9 par_tmux
echo 1007 | PARALLEL_TMUX=tmux1.9 par_tmux
echo 1008 | PARALLEL_TMUX=tmux1.9 par_tmux
echo 1009 | PARALLEL_TMUX=tmux1.9 par_tmux
echo '### tmux1.8'
seq 1 50 | TMUX=tmux1.8 par_tmux
seq 51 100 | TMUX=tmux1.8 par_tmux
seq 101 113 | TMUX=tmux1.8 par_tmux
seq 1 50 | PARALLEL_TMUX=tmux1.8 par_tmux
seq 51 100 | PARALLEL_TMUX=tmux1.8 par_tmux
seq 101 113 | PARALLEL_TMUX=tmux1.8 par_tmux
echo '### tmux1.8 fails'
echo 114 | TMUX=tmux1.8 par_tmux
echo 115 | TMUX=tmux1.8 par_tmux
echo 116 | TMUX=tmux1.8 par_tmux
echo 114 | PARALLEL_TMUX=tmux1.8 par_tmux
echo 115 | PARALLEL_TMUX=tmux1.8 par_tmux
echo 116 | PARALLEL_TMUX=tmux1.8 par_tmux
echo '### tmux1.8 0..255 ascii'
perl -e 'print map { ($_, map { pack("c*",$_) } grep { $_>=1 && $_!=10 } $_-110..$_),"\n" } 0..255' |
TMUX=tmux1.8 stdout parallel --tmux --timeout 3 echo | par_tmux_filter; echo $?
PARALLEL_TMUX=tmux1.8 stdout parallel --tmux --timeout 3 echo | par_tmux_filter; echo $?
echo '### tmux1.9 0..255 ascii'
perl -e 'print map { ($_, map { pack("c*",$_) } grep { $_>=1 && $_!=10 } 0..$_),"\n" } 0..255' |
TMUX=tmux1.9 stdout parallel --tmux --timeout 3 echo | par_tmux_filter; echo $?
PARALLEL_TMUX=tmux1.9 stdout parallel --tmux --timeout 3 echo | par_tmux_filter; echo $?
echo '### Test output ascii'
rm -f /tmp/paralocal7-ascii*;
@ -51,10 +51,10 @@ echo '### Test output ascii'
sort /tmp/paralocal7-ascii* | md5sum
echo '### Test critical lengths. Must not block'
seq 70 130 | TMUX=tmux1.8 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter
seq 70 130 | TMUX=tmux1.9 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter
seq 280 425 | TMUX=tmux1.8 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter
seq 280 425 | TMUX=tmux1.9 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter
seq 70 130 | PARALLEL_TMUX=tmux1.8 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter
seq 70 130 | PARALLEL_TMUX=tmux1.9 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter
seq 280 425 | PARALLEL_TMUX=tmux1.8 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter
seq 280 425 | PARALLEL_TMUX=tmux1.9 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter
EOF

View file

@ -147,9 +147,9 @@ foo
8
9
10
echo '### TMUX not found'
### TMUX not found
TMUX=not-existing parallel --tmux echo ::: 1
echo '### PARALLEL_TMUX not found'
### PARALLEL_TMUX not found
PARALLEL_TMUX=not-existing parallel --tmux echo ::: 1
parallel: Error: not-existing not found in $PATH.
echo '**'
**

View file

@ -3,8 +3,8 @@ par_mem_leak ### test for mem leak
par_mem_leak no mem leak detected
par_outside_file_handle_limit 2>&1
par_outside_file_handle_limit ### Test Force outside the file handle limit, 2009-02-17 Gave fork error
par_outside_file_handle_limit parallel: Warning: Only enough file handles to run 251 jobs in parallel.
par_outside_file_handle_limit parallel: Warning: Running 'parallel -j0 -N 251 --pipe parallel -j0' or
par_outside_file_handle_limit parallel: Warning: Only enough file handles to run 252 jobs in parallel.
par_outside_file_handle_limit parallel: Warning: Running 'parallel -j0 -N 252 --pipe parallel -j0' or
par_outside_file_handle_limit parallel: Warning: raising ulimit -n or /etc/security/limits.conf may help.
par_outside_file_handle_limit Start
par_outside_file_handle_limit end

View file

@ -1,7 +1,7 @@
echo '### bug #46214: Using --pipepart doesnt spawn multiple jobs in version 20150922'
### bug #46214: Using --pipepart doesnt spawn multiple jobs in version 20150922
seq 1000000 > /tmp/num1000000; stdout parallel --pipepart --progress -a /tmp/num1000000 --block 10k -j0 true |grep 1:local
1:local / 8 / 251
1:local / 8 / 252
echo '**'
**
testhalt() { echo '### testhalt --halt '$1; (yes 0 | head -n 10; seq 10) | stdout parallel -kj4 --halt $1 'sleep {= $_=$_*0.3+1 =}; exit {}'; echo $?; (seq 10; yes 0 | head -n 10) | stdout parallel -kj4 --halt $1 'sleep {= $_=$_*0.3+1 =}; exit {}'; echo $?; }; export -f testhalt; parallel -kj0 testhalt ::: now,fail=0 now,fail=1 now,fail=2 now,fail=30% now,fail=70% soon,fail=0 soon,fail=1 soon,fail=2 soon,fail=30% soon,fail=70% now,success=0 now,success=1 now,success=2 now,success=30% now,success=70% soon,success=0 soon,success=1 soon,success=2 soon,success=30% now,success=70%

View file

@ -1,79 +1,79 @@
echo '### tmux1.9'
### tmux1.9
seq 000 100 | TMUX=tmux1.9 par_tmux
seq 000 100 | PARALLEL_TMUX=tmux1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 100 200 | TMUX=tmux1.9 par_tmux
seq 100 200 | PARALLEL_TMUX=tmux1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 200 300 | TMUX=tmux1.9 par_tmux
seq 200 300 | PARALLEL_TMUX=tmux1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 300 400 | TMUX=tmux1.9 par_tmux
seq 300 400 | PARALLEL_TMUX=tmux1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 400 500 | TMUX=tmux1.9 par_tmux
seq 400 500 | PARALLEL_TMUX=tmux1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 500 600 | TMUX=tmux1.9 par_tmux
seq 500 600 | PARALLEL_TMUX=tmux1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 600 700 | TMUX=tmux1.9 par_tmux
seq 600 700 | PARALLEL_TMUX=tmux1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 700 800 | TMUX=tmux1.9 par_tmux
seq 700 800 | PARALLEL_TMUX=tmux1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 800 900 | TMUX=tmux1.9 par_tmux
seq 800 900 | PARALLEL_TMUX=tmux1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 900 1000 | TMUX=tmux1.9 par_tmux
seq 900 1000 | PARALLEL_TMUX=tmux1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 1000 1006 | TMUX=tmux1.9 par_tmux
seq 1000 1006 | PARALLEL_TMUX=tmux1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
echo '### tmux1.9 fails'
### tmux1.9 fails
echo 1007 | TMUX=tmux1.9 par_tmux
echo 1007 | PARALLEL_TMUX=tmux1.9 par_tmux
parallel: Error: Command line too long (2023 >= 2023) at input 0: 1007
255
echo 1008 | TMUX=tmux1.9 par_tmux
echo 1008 | PARALLEL_TMUX=tmux1.9 par_tmux
parallel: Error: Command line too long (2025 >= 2023) at input 0: 1008
255
echo 1009 | TMUX=tmux1.9 par_tmux
echo 1009 | PARALLEL_TMUX=tmux1.9 par_tmux
parallel: Error: Command line too long (2027 >= 2023) at input 0: 1009
255
echo '### tmux1.8'
### tmux1.8
seq 1 50 | TMUX=tmux1.8 par_tmux
seq 1 50 | PARALLEL_TMUX=tmux1.8 par_tmux
See output with: tmux1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 51 100 | TMUX=tmux1.8 par_tmux
seq 51 100 | PARALLEL_TMUX=tmux1.8 par_tmux
See output with: tmux1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 101 113 | TMUX=tmux1.8 par_tmux
seq 101 113 | PARALLEL_TMUX=tmux1.8 par_tmux
See output with: tmux1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
echo '### tmux1.8 fails'
### tmux1.8 fails
echo 114 | TMUX=tmux1.8 par_tmux
echo 114 | PARALLEL_TMUX=tmux1.8 par_tmux
parallel: Error: Command line too long (236 >= 236) at input 0: 114
255
echo 115 | TMUX=tmux1.8 par_tmux
echo 115 | PARALLEL_TMUX=tmux1.8 par_tmux
parallel: Error: Command line too long (238 >= 236) at input 0: 115
255
echo 116 | TMUX=tmux1.8 par_tmux
echo 116 | PARALLEL_TMUX=tmux1.8 par_tmux
parallel: Error: Command line too long (240 >= 236) at input 0: 116
255
echo '### tmux1.8 0..255 ascii'
### tmux1.8 0..255 ascii
perl -e 'print map { ($_, map { pack("c*",$_) } grep { $_>=1 && $_!=10 } $_-110..$_),"\n" } 0..255' | TMUX=tmux1.8 stdout parallel --tmux --timeout 3 echo | par_tmux_filter; echo $?
perl -e 'print map { ($_, map { pack("c*",$_) } grep { $_>=1 && $_!=10 } $_-110..$_),"\n" } 0..255' | PARALLEL_TMUX=tmux1.8 stdout parallel --tmux --timeout 3 echo | par_tmux_filter; echo $?
See output with: tmux1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
echo '### tmux1.9 0..255 ascii'
### tmux1.9 0..255 ascii
perl -e 'print map { ($_, map { pack("c*",$_) } grep { $_>=1 && $_!=10 } 0..$_),"\n" } 0..255' | TMUX=tmux1.9 stdout parallel --tmux --timeout 3 echo | par_tmux_filter; echo $?
perl -e 'print map { ($_, map { pack("c*",$_) } grep { $_>=1 && $_!=10 } 0..$_),"\n" } 0..255' | PARALLEL_TMUX=tmux1.9 stdout parallel --tmux --timeout 3 echo | par_tmux_filter; echo $?
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
echo '### Test output ascii'
@ -83,12 +83,12 @@ See output with: tmux -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
053c7e8e945ef7641fc63bc309ac069d -
echo '### Test critical lengths. Must not block'
### Test critical lengths. Must not block
seq 70 130 | TMUX=tmux1.8 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter
seq 70 130 | PARALLEL_TMUX=tmux1.8 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter
See output with: tmux1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
parallel: Error: Command line too long (236 >= 236) at input 0: 114
seq 70 130 | TMUX=tmux1.9 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter
seq 70 130 | PARALLEL_TMUX=tmux1.9 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
seq 280 425 | TMUX=tmux1.8 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter
seq 280 425 | PARALLEL_TMUX=tmux1.8 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter
parallel: Error: Command line too long (288 >= 236) at input 0: 280
seq 280 425 | TMUX=tmux1.9 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter
seq 280 425 | PARALLEL_TMUX=tmux1.9 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach

View file

@ -337,12 +337,15 @@ foo
A
parallel perl -e 'print "@ARGV\n"' ::: This wont work
parallel: Warning: Input is read from the terminal. Only experts do this on purpose. Press CTRL-D to exit.
parallel: Warning: Input is read from the terminal. You either know what you
parallel: Warning: are doing (in which case: YOU ARE AWESOME!) or you forgot
parallel: Warning: ::: or :::: or to pipe data into parallel. If so
parallel: Warning: Press CTRL-D to exit.
perl -e 'print "@ARGV\n"'
[CTRL-D]
/bin/bash: line 1: parallel:: command not found
/bin/bash: line 3: [CTRL-D]: command not found
/bin/bash: -c: line 2: syntax error near unexpected token `('
/bin/bash: -c: line 2: ` parallel: Warning: are doing (in which case: YOU ARE AWESOME!) or you forgot'
parallel --trim r echo pre-{}-post ::: ' A '
pre- A-post