echo '### Test bug #45619: "--halt" erroneous error exit code (should give 0)'; seq 10 | parallel --halt now,fail=1 true; echo $? ### Test bug #45619: "--halt" erroneous error exit code (should give 0) 0 echo '**' ** echo '### Test exit val - true'; echo true | parallel; echo $? ### Test exit val - true 0 echo '**' ** echo '### Test exit val - false'; echo false | parallel; echo $? ### Test exit val - false 1 echo '**' ** echo '### Test bug #43284: {%} and {#} with --xapply'; parallel --xapply 'echo {1} {#} {%} {2}' ::: a ::: b; parallel -N2 'echo {%}' ::: a b ### Test bug #43284: {%} and {#} with --xapply a 1 1 b 1 echo '**' ** echo '### bug #47501: --xapply for some input sources' ### bug #47501: --xapply for some input sources # Wrapping does not work yet parallel -k echo ::: a b c aWRAP :::+ aa bb cc ::: A B :::+ AA BB AAwrap a aa A AA a aa B BB b bb A AA b bb B BB c cc A AA c cc B BB echo '**' ** echo '### Test bug #43376: {%} and {#} with --pipe' ### Test bug #43376: {%} and {#} with --pipe echo foo | parallel -q --pipe -k echo {#} 1 echo foo | parallel --pipe -k echo {%} 1 echo foo | parallel -q --pipe -k echo {%} 1 echo foo | parallel --pipe -k echo {#} 1 echo '**' ** echo '### {= and =} in different groups separated by space' ### {= and =} in different groups separated by space parallel echo {= s/a/b/ =} ::: a b parallel echo {= s/a/b/=} ::: a b parallel echo {= s/a/b/=}{= s/a/b/=} ::: a bb parallel echo {= s/a/b/=}{=s/a/b/=} ::: a bb parallel echo {= s/a/b/=}{= {= s/a/b/=} ::: a b{= b parallel echo {= s/a/b/=}{={=s/a/b/=} ::: a b{=b parallel echo {= s/a/b/ =} {={==} ::: a b {=a parallel echo {={= =} ::: a {=a parallel echo {= {= =} ::: a {= a parallel echo {= {= =} =} ::: a {= a =} echo '**' ** echo '### {} as part of the command' ### {} as part of the command echo p /bin/ls | parallel l{= s/p/s/ =} /bin/ls echo /bin/ls-p | parallel --colsep '-' l{=2 s/p/s/ =} {1} /bin/ls echo s /bin/ls | parallel l{} /bin/ls echo /bin/ls | parallel ls {} /bin/ls echo ls /bin/ls | parallel {} /bin/ls echo ls /bin/ls | parallel /bin/ls echo '**' ** echo '### bug #43817: Some JP char cause problems in positional replacement strings' ### bug #43817: Some JP char cause problems in positional replacement strings parallel -k echo ::: '�<�>' '�<1 $_=2�>' 'ワ' �<�> �<1 $_=2�> ワ parallel -k echo {1} ::: '�<�>' '�<1 $_=2�>' 'ワ' �<�> �<1 $_=2�> ワ parallel -Xj1 echo ::: '�<�>' '�<1 $_=2�>' 'ワ' �<�> �<1 $_=2�> ワ parallel -Xj1 echo {1} ::: '�<�>' '�<1 $_=2�>' 'ワ' �<�> echo '**' ** echo '### --rpl % that is a substring of longer --rpl %D' ### --rpl % that is a substring of longer --rpl %D parallel --rpl '{+.} s:.*\.::' --rpl '%' --rpl '%D $_=::shell_quote(::dirname($_));' --rpl '%B s:.*/::;s:\.[^/.]+$::;' --rpl '%E s:.*\.::' 'echo {}=%;echo %D={//};echo %B={/.};echo %E={+.};echo %D/%B.%E={}' ::: a.b/c.d/e.f a.b/c.d/e.f=a.b/c.d/e.f a.b/c.d=a.b/c.d e=e f=f a.b/c.d/e.f=a.b/c.d/e.f echo '**' ** echo '### Disk full' ### Disk full cat /dev/zero >$SMALLDISK/out; parallel --tmpdir $SMALLDISK echo ::: OK; rm $SMALLDISK/out cat: write error: No space left on device parallel: Error: Output is incomplete. parallel: Error: Cannot append to buffer file in /mnt/ram. parallel: Error: Is the disk full? parallel: Error: Change $TMPDIR with --tmpdir or use --compress. Warning: unable to close filehandle properly: No space left on device during global destruction. echo '**' ** echo '### bug #44614: --pipepart --header off by one' ### bug #44614: --pipepart --header off by one seq 10 >/tmp/parallel_44616; parallel --pipepart -a /tmp/parallel_44616 -k --block 5 'echo foo; cat'; parallel --pipepart -a /tmp/parallel_44616 -k --block 2 --regexp --recend 3'\n' 'echo foo; cat'; rm /tmp/parallel_44616 foo 1 2 3 foo 4 5 6 foo 7 8 9 foo 10 foo 1 2 3 foo 4 5 6 7 8 9 10 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 '**' ** echo '### bug #44995: parallel echo {#} ::: 1 2 ::: 1 2' ### bug #44995: parallel echo {#} ::: 1 2 ::: 1 2 parallel -k echo {#} ::: 1 2 ::: 1 2 1 2 3 4 echo '**' ** echo '### bug #45769: --round-robin --pipepart gives wrong results' ### bug #45769: --round-robin --pipepart gives wrong results seq 10000 >/tmp/seq10000; parallel -j2 --pipepart -a /tmp/seq10000 --block 14 --round-robin wc | wc -l; rm /tmp/seq10000 2 echo '**' ** echo '### bug #45842: Do not evaluate {= =} twice' ### bug #45842: Do not evaluate {= =} twice parallel -k echo '{= $_=++$::G =}' ::: {1001..1004} 1 2 3 4 parallel -k echo '{=1 $_=++$::G =}' ::: {1001..1004} 1 2 3 4 parallel -k echo '{= $_=++$::G =}' ::: {1001..1004} ::: {a..c} 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 parallel -k echo '{=1 $_=++$::G =}' ::: {1001..1004} ::: {a..c} 1 2 3 4 5 6 7 8 9 10 11 12 echo '**' ** echo '### bug #45939: {2} in {= =} fails' ### bug #45939: {2} in {= =} fails parallel echo '{= s/O{2}//=}' ::: OOOK OK parallel echo '{2}-{=1 s/O{2}//=}' ::: OOOK ::: OK OK-OK echo '**' ** echo '### bug #45998: --pipe to function broken' ### bug #45998: --pipe to function broken myfunc() { echo $1; cat; }; export -f myfunc; echo pipefunc OK | parallel --pipe myfunc {#}; echo pipefunc and more OK | parallel --pipe 'myfunc {#};echo and more OK' 1 pipefunc OK 1 pipefunc and more OK and more OK echo '**' ** echo 'bug #46016: --joblog should not log when --dryrun' bug #46016: --joblog should not log when --dryrun parallel --dryrun --joblog - echo ::: Only_this echo Only_this echo '**' ** echo 'bug #46232: {%} with --bar/--eta/--shuf or --halt xx% broken' bug #46232: {%} with --bar/--eta/--shuf or --halt xx% broken parallel --bar -kj2 --delay 0.1 echo {%} ::: a b ::: c d e 2>/dev/null 1 2 1 2 1 2 parallel --halt now,fail=10% -kj2 --delay 0.1 echo {%} ::: a b ::: c d e 1 2 1 2 1 2 parallel --eta -kj2 --delay 0.1 echo {%} ::: a b ::: c d e 2>/dev/null 1 2 1 2 1 2 parallel --shuf -kj2 --delay 0.1 echo {%} ::: a b ::: c d e 2>/dev/null 1 2 1 2 1 2 echo '**' ** echo 'bug #46231: {%} with --pipepart broken. Should give 1+2' bug #46231: {%} with --pipepart broken. Should give 1+2 seq 10000 > /tmp/num10000; parallel -k --pipepart -ka /tmp/num10000 --block 10k -j2 --delay 0.05 echo {%}; rm /tmp/num10000 1 2 1 2 1 echo '**' ** echo '{##} bug #45841: Replacement string for total no of jobs' {##} bug #45841: Replacement string for total no of jobs parallel -k --plus echo {##} ::: {a..j}; parallel -k 'echo {= $::G++ > 3 and ($_=$Global::JobQueue->total_jobs());=}' ::: {1..10} 10 10 10 10 10 10 10 10 10 10 1 2 3 4 10 10 10 10 10 10 parallel -k -N7 --plus echo {#} {##} ::: {1..14} 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 parallel -k -N7 --plus echo {#} {##} ::: {1..15} 1 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 parallel -k -S 8/: -X --plus echo {#} {##} ::: {1..15} 1 15 15 2 14 14 3 14 14 4 14 14 5 14 14 6 14 14 7 14 14 8 14 echo '**' ** echo 'bug #47002: --tagstring with -d \n\n' bug #47002: --tagstring with -d \n\n (seq 3;echo;seq 4) | parallel -k -d '\n\n' --tagstring {%} echo ABC';'echo 1 ABC 1 1 1 2 1 3 2 ABC 2 1 2 2 2 3 2 4 2 echo '**' ** echo 'bug #47086: [PATCH] Initialize total_completed from joblog' bug #47086: [PATCH] Initialize total_completed from joblog rm -f /tmp/parallel-47086; parallel -j1 --joblog /tmp/parallel-47086 --halt now,fail=1 echo '{= $_=$Global::total_completed =};exit {}' ::: 0 0 0 1 0 0; parallel -j1 --joblog /tmp/parallel-47086 --halt now,fail=1 --resume echo '{= $_=$Global::total_completed =};exit {}' ::: 0 0 0 1 0 0 0 1 2 3 4 5 parallel: This job failed: echo 3;exit 1 echo '**' ** echo 'bug #47290: xargs: Warning: a NUL character occurred in the input' bug #47290: xargs: Warning: a NUL character occurred in the input perl -e 'print "foo\0not printed"' | parallel echo foo\0not printed parallel: Warning: A NUL character in the input was replaced with \0. parallel: Warning: NUL cannot be passed through in the argument list. parallel: Warning: Did you mean to use the --null option? echo '**' ** echo xargs compatibility xargs compatibility echo '### Test -L -l and --max-lines' ### Test -L -l and --max-lines (echo a_b;echo c) | parallel -km -L2 echo a_b c (echo a_b;echo c) | parallel -k -L2 echo a_b c (echo a_b;echo c) | xargs -L2 echo a_b c echo '### xargs -L1 echo' ### xargs -L1 echo (echo a_b;echo c) | parallel -km -L1 echo a_b c (echo a_b;echo c) | parallel -k -L1 echo a_b c (echo a_b;echo c) | xargs -L1 echo a_b c echo 'Lines ending in space should continue on next line' Lines ending in space should continue on next line echo '### xargs -L1 echo' ### xargs -L1 echo (echo a_b' ';echo c;echo d) | parallel -km -L1 echo a_b c d (echo a_b' ';echo c;echo d) | parallel -k -L1 echo a_b c d (echo a_b' ';echo c;echo d) | xargs -L1 echo a_b c d echo '### xargs -L2 echo' ### xargs -L2 echo (echo a_b' ';echo c;echo d;echo e) | parallel -km -L2 echo a_b c d e (echo a_b' ';echo c;echo d;echo e) | parallel -k -L2 echo a_b c d e (echo a_b' ';echo c;echo d;echo e) | xargs -L2 echo a_b c d e echo '### xargs -l echo' ### xargs -l echo (echo a_b' ';echo c;echo d;echo e) | parallel -l -km echo # This behaves wrong a_b c d e (echo a_b' ';echo c;echo d;echo e) | parallel -l -k echo # This behaves wrong a_b c d e (echo a_b' ';echo c;echo d;echo e) | xargs -l echo a_b c d e echo '### xargs -l2 echo' ### xargs -l2 echo (echo a_b' ';echo c;echo d;echo e) | parallel -km -l2 echo a_b c d e (echo a_b' ';echo c;echo d;echo e) | parallel -k -l2 echo a_b c d e (echo a_b' ';echo c;echo d;echo e) | xargs -l2 echo a_b c d e echo '### xargs -l1 echo' ### xargs -l1 echo (echo a_b' ';echo c;echo d;echo e) | parallel -km -l1 echo a_b c d e (echo a_b' ';echo c;echo d;echo e) | parallel -k -l1 echo a_b c d e (echo a_b' ';echo c;echo d;echo e) | xargs -l1 echo a_b c d e echo '### xargs --max-lines=2 echo' ### xargs --max-lines=2 echo (echo a_b' ';echo c;echo d;echo e) | parallel -km --max-lines 2 echo a_b c d e (echo a_b' ';echo c;echo d;echo e) | parallel -k --max-lines 2 echo a_b c d e (echo a_b' ';echo c;echo d;echo e) | xargs --max-lines=2 echo a_b c d e echo '### xargs --max-lines echo' ### xargs --max-lines echo (echo a_b' ';echo c;echo d;echo e) | parallel --max-lines -km echo # This behaves wrong a_b c d e (echo a_b' ';echo c;echo d;echo e) | parallel --max-lines -k echo # This behaves wrong a_b c d e (echo a_b' ';echo c;echo d;echo e) | xargs --max-lines echo a_b c d e echo '### test too long args' ### test too long args perl -e 'print "z"x1000000' | parallel echo 2>&1 parallel: Error: Command line too long (1000005 >= 131049) at input 0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz... perl -e 'print "z"x1000000' | xargs echo 2>&1 xargs: argument line too long (seq 1 10; perl -e 'print "z"x1000000'; seq 12 15) | stdsort parallel -j1 -km -s 10 echo 1 2 3 4 5 6 7 8 9 10 parallel: Error: Command line too long (1000007 >= 10) at input 0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz... (seq 1 10; perl -e 'print "z"x1000000'; seq 12 15) | stdsort xargs -s 10 echo 1 2 3 4 5 6 7 8 9 10 xargs: argument line too long (seq 1 10; perl -e 'print "z"x1000000'; seq 12 15) | stdsort parallel -j1 -kX -s 10 echo 1 2 3 4 5 6 7 8 9 10 parallel: Error: Command line too long (1000007 >= 10) at input 0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz... echo '### Test -x' ### Test -x (seq 1 10; echo 12345; seq 12 15) | stdsort parallel -j1 -km -s 10 -x echo 1 2 3 4 5 6 7 8 9 10 parallel: Error: Command line too long (10 >= 10) at input 0: 12345 (seq 1 10; echo 12345; seq 12 15) | stdsort parallel -j1 -kX -s 10 -x echo 1 2 3 4 5 6 7 8 9 10 parallel: Error: Command line too long (10 >= 10) at input 0: 12345 (seq 1 10; echo 12345; seq 12 15) | stdsort xargs -s 10 -x echo 1 2 3 4 5 6 7 8 xargs: argument line too long (seq 1 10; echo 1234; seq 12 15) | stdsort parallel -j1 -km -s 10 -x echo 1 2 12 1234 13 14 15 3 4 5 6 7 8 9 10 (seq 1 10; echo 1234; seq 12 15) | stdsort parallel -j1 -kX -s 10 -x echo 1 2 12 1234 13 14 15 3 4 5 6 7 8 9 10 (seq 1 10; echo 1234; seq 12 15) | stdsort xargs -s 10 -x echo 1 2 12 1234 13 14 15 3 4 5 6 7 8 9 10 echo '### Test -a and --arg-file: Read input from file instead of stdin' ### Test -a and --arg-file: Read input from file instead of stdin seq 1 10 >/tmp/parallel_$$-1; parallel -k -a /tmp/parallel_$$-1 echo; rm /tmp/parallel_$$-1 1 2 3 4 5 6 7 8 9 10 seq 1 10 >/tmp/parallel_$$-2; parallel -k --arg-file /tmp/parallel_$$-2 echo; rm /tmp/parallel_$$-2 1 2 3 4 5 6 7 8 9 10 echo '### Test -i and --replace: Replace with argument' ### Test -i and --replace: Replace with argument (echo a; echo END; echo b) | parallel -k -i -eEND echo repl{}ce replace (echo a; echo END; echo b) | parallel -k --replace -eEND echo repl{}ce replace (echo a; echo END; echo b) | parallel -k -i+ -eEND echo repl+ce replace (echo e; echo END; echo b) | parallel -k -i'*' -eEND echo r'*'plac'*' replace (echo a; echo END; echo b) | parallel -k --replace + -eEND echo repl+ce replace (echo a; echo END; echo b) | parallel -k --replace== -eEND echo repl=ce replace (echo a; echo END; echo b) | parallel -k --replace = -eEND echo repl=ce replace (echo a; echo END; echo b) | parallel -k --replace=^ -eEND echo repl^ce replace (echo a; echo END; echo b) | parallel -k -I^ -eEND echo repl^ce replace echo '### Test -E: Artificial end-of-file' ### Test -E: Artificial end-of-file (echo include this; echo END; echo not this) | parallel -k -E END echo include this (echo include this; echo END; echo not this) | parallel -k -EEND echo include this echo '### Test -e and --eof: Artificial end-of-file' ### Test -e and --eof: Artificial end-of-file (echo include this; echo END; echo not this) | parallel -k -e END echo include this (echo include this; echo END; echo not this) | parallel -k -eEND echo include this (echo include this; echo END; echo not this) | parallel -k --eof=END echo include this (echo include this; echo END; echo not this) | parallel -k --eof END echo include this echo '### Test -n and --max-args: Max number of args per line (only with -X and -m)' ### Test -n and --max-args: Max number of args per line (only with -X and -m) (echo line 1;echo line 2;echo line 3) | parallel -k -n1 -m echo line 1 line 2 line 3 (echo line 1;echo line 1;echo line 2) | parallel -k -n2 -m echo line 1 line 1 line 2 (echo line 1;echo line 2;echo line 3) | parallel -k -n1 -X echo line 1 line 2 line 3 (echo line 1;echo line 1;echo line 2) | parallel -k -n2 -X echo line 1 line 1 line 2 (echo line 1;echo line 2;echo line 3) | parallel -k -n1 echo line 1 line 2 line 3 (echo line 1;echo line 1;echo line 2) | parallel -k -n2 echo line 1 line 1 line 2 (echo line 1;echo line 2;echo line 3) | parallel -k --max-args=1 -X echo line 1 line 2 line 3 (echo line 1;echo line 2;echo line 3) | parallel -k --max-args 1 -X echo line 1 line 2 line 3 (echo line 1;echo line 1;echo line 2) | parallel -k --max-args=2 -X echo line 1 line 1 line 2 (echo line 1;echo line 1;echo line 2) | parallel -k --max-args 2 -X echo line 1 line 1 line 2 (echo line 1;echo line 2;echo line 3) | parallel -k --max-args 1 echo line 1 line 2 line 3 (echo line 1;echo line 1;echo line 2) | parallel -k --max-args 2 echo line 1 line 1 line 2 echo '### Test --max-procs and -P: Number of processes' ### Test --max-procs and -P: Number of processes seq 1 10 | parallel -k --max-procs +0 echo max proc max proc 1 max proc 2 max proc 3 max proc 4 max proc 5 max proc 6 max proc 7 max proc 8 max proc 9 max proc 10 seq 1 10 | parallel -k -P 200% echo 200% proc 200% proc 1 200% proc 2 200% proc 3 200% proc 4 200% proc 5 200% proc 6 200% proc 7 200% proc 8 200% proc 9 200% proc 10 echo '### Test --delimiter and -d: Delimiter instead of newline' ### Test --delimiter and -d: Delimiter instead of newline echo '# Yes there is supposed to be an extra newline for -d N' # Yes there is supposed to be an extra newline for -d N echo line 1Nline 2Nline 3 | parallel -k -d N echo This is This is line 1 This is line 2 This is line 3 echo line 1Nline 2Nline 3 | parallel -k --delimiter N echo This is This is line 1 This is line 2 This is line 3 printf "delimiter NUL line 1\0line 2\0line 3" | parallel -k -d '\0' echo delimiter NUL line 1 line 2 line 3 printf "delimiter TAB line 1\tline 2\tline 3" | parallel -k --delimiter '\t' echo delimiter TAB line 1 line 2 line 3 echo '### Test --max-chars and -s: Max number of chars in a line' ### Test --max-chars and -s: Max number of chars in a line (echo line 1;echo line 1;echo line 2) | parallel -k --max-chars 25 -X echo line 1 line 1 line 2 (echo line 1;echo line 1;echo line 2) | parallel -k -s 25 -X echo line 1 line 1 line 2 echo '### Test --no-run-if-empty and -r: This should give no output' ### Test --no-run-if-empty and -r: This should give no output echo " " | parallel -r echo echo " " | parallel --no-run-if-empty echo echo '### Test --help and -h: Help output (just check we get the same amount of lines)' ### Test --help and -h: Help output (just check we get the same amount of lines) echo Output from -h and --help Output from -h and --help parallel -h | wc -l 37 parallel --help | wc -l 37 echo '### Test --version: Version output (just check we get the same amount of lines)' ### Test --version: Version output (just check we get the same amount of lines) parallel --version | wc -l 10 echo '### Test --verbose and -t' ### Test --verbose and -t (echo b; echo c; echo f) | parallel -k -t echo {}ar 2>&1 >/dev/null echo bar echo car echo far (echo b; echo c; echo f) | parallel -k --verbose echo {}ar 2>&1 >/dev/null echo bar echo car echo far echo '### Test --show-limits' ### Test --show-limits (echo b; echo c; echo f) | parallel -k --show-limits echo {}ar Maximal size of command: 131049 Maximal used size of command: 131049 Execution of will continue now, and it will try to read its input and run commands; if this is not what you wanted to happen, please press CTRL-D or CTRL-C bar car far (echo b; echo c; echo f) | parallel -j1 -kX --show-limits -s 100 echo {}ar Maximal size of command: 131049 Maximal used size of command: 100 Execution of will continue now, and it will try to read its input and run commands; if this is not what you wanted to happen, please press CTRL-D or CTRL-C bar car far echo '### Test empty line as input' ### Test empty line as input echo | parallel echo empty input line empty input line echo '### Tests if (cat | sh) works' ### Tests if (cat | sh) works perl -e 'for(1..25) {print "echo a $_; echo b $_\n"}' | parallel 2>&1 | sort a 1 a 10 a 11 a 12 a 13 a 14 a 15 a 16 a 17 a 18 a 19 a 2 a 20 a 21 a 22 a 23 a 24 a 25 a 3 a 4 a 5 a 6 a 7 a 8 a 9 b 1 b 10 b 11 b 12 b 13 b 14 b 15 b 16 b 17 b 18 b 19 b 2 b 20 b 21 b 22 b 23 b 24 b 25 b 3 b 4 b 5 b 6 b 7 b 8 b 9 echo '### Test if xargs-mode works' ### Test if xargs-mode works perl -e 'for(1..25) {print "a $_\nb $_\n"}' | parallel echo 2>&1 | sort a 1 a 10 a 11 a 12 a 13 a 14 a 15 a 16 a 17 a 18 a 19 a 2 a 20 a 21 a 22 a 23 a 24 a 25 a 3 a 4 a 5 a 6 a 7 a 8 a 9 b 1 b 10 b 11 b 12 b 13 b 14 b 15 b 16 b 17 b 18 b 19 b 2 b 20 b 21 b 22 b 23 b 24 b 25 b 3 b 4 b 5 b 6 b 7 b 8 b 9 echo '### Test -q' ### Test -q parallel -kq perl -e '$ARGV[0]=~/^\S+\s+\S+$/ and print $ARGV[0],"\n"' ::: "a b" c "d e f" g "h i" a b h i echo '### Test -q {#}' ### Test -q {#} parallel -kq echo {#} ::: a b 1 2 parallel -kq echo {\#} ::: a b 1 2 parallel -kq echo {\\#} ::: a b {\#} a {\#} b echo '### Test long commands do not take up all memory' ### Test long commands do not take up all memory seq 1 100 | parallel -j0 -qv perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 2>/dev/null | sort 1 10 100 11 12 13 14 15 16 17 18 19 2 20 21 22 23 24 25 26 27 28 29 3 30 31 32 33 34 35 36 37 38 39 4 40 41 42 43 44 45 46 47 48 49 5 50 51 52 53 54 55 56 57 58 59 6 60 61 62 63 64 65 66 67 68 69 7 70 71 72 73 74 75 76 77 78 79 8 80 81 82 83 84 85 86 87 88 89 9 90 91 92 93 94 95 96 97 98 99 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 1 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 10 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 100 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 11 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 12 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 13 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 14 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 15 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 16 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 17 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 18 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 19 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 2 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 20 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 21 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 22 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 23 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 24 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 25 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 26 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 27 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 28 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 29 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 3 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 30 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 31 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 32 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 33 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 34 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 35 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 36 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 37 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 38 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 39 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 4 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 40 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 41 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 42 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 43 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 44 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 45 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 46 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 47 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 48 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 49 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 5 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 50 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 51 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 52 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 53 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 54 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 55 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 56 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 57 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 58 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 59 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 6 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 60 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 61 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 62 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 63 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 64 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 65 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 66 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 67 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 68 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 69 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 7 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 70 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 71 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 72 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 73 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 74 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 75 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 76 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 77 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 78 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 79 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 8 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 80 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 81 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 82 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 83 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 84 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 85 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 86 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 87 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 88 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 89 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 9 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 90 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 91 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 92 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 93 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 94 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 95 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 96 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 97 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 98 perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 99 echo '### Test 0-arguments' ### Test 0-arguments seq 1 2 | parallel -k -n0 echo n0 n0 n0 seq 1 2 | parallel -k -L0 echo L0 L0 L0 seq 1 2 | parallel -k -N0 echo N0 N0 N0 echo '### Because of --tollef -l, then -l0 == -l1, sorry' ### Because of --tollef -l, then -l0 == -l1, sorry seq 1 2 | parallel -k -l0 echo l0 l0 1 l0 2 echo '### Test replace {}' ### Test replace {} seq 1 2 | parallel -k -N0 echo replace {} curlies replace curlies replace curlies echo '### Test arguments on commandline' ### Test arguments on commandline parallel -k -N0 echo args on cmdline ::: 1 2 args on cmdline args on cmdline echo '### Test --nice locally' ### Test --nice locally parallel --nice 1 -vv 'PAR=a bash -c "echo \$PAR {}"' ::: b PAR=a bash -c "echo \$PAR b" a b echo '### Test distribute arguments at EOF to 2 jobslots' ### Test distribute arguments at EOF to 2 jobslots seq 1 92 | parallel -j2 -kX -s 100 echo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 echo '### Test distribute arguments at EOF to 5 jobslots' ### Test distribute arguments at EOF to 5 jobslots seq 1 92 | parallel -j5 -kX -s 100 echo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 echo '### Test distribute arguments at EOF to infinity jobslots' ### Test distribute arguments at EOF to infinity jobslots seq 1 92 | parallel -j0 -kX -s 100 echo 2>/dev/null 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 echo '### Test -N is not broken by distribution - single line' ### Test -N is not broken by distribution - single line seq 9 | parallel -N 10 echo 1 2 3 4 5 6 7 8 9 echo '### Test -N is not broken by distribution - two lines' ### Test -N is not broken by distribution - two lines seq 19 | parallel -k -N 10 echo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 echo '### Test -N context replace' ### Test -N context replace seq 19 | parallel -k -N 10 echo a{}b a1b a2b a3b a4b a5b a6b a7b a8b a9b a10b a11b a12b a13b a14b a15b a16b a17b a18b a19b echo '### Test -L context replace' ### Test -L context replace seq 19 | parallel -k -L 10 echo a{}b a1b a2b a3b a4b a5b a6b a7b a8b a9b a10b a11b a12b a13b a14b a15b a16b a17b a18b a19b echo '**' ** echo '### Test {} multiple times in different commands' ### Test {} multiple times in different commands seq 10 | parallel -v -Xj1 echo {} \; echo {} echo 1 2 3 4 5 6 7 8 9 10 ; echo 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 echo '### Test of -X {1}-{2} with multiple input sources' ### Test of -X {1}-{2} with multiple input sources parallel -j1 -kX echo {1}-{2} ::: a ::: b a-b parallel -j2 -kX echo {1}-{2} ::: a b ::: c d a-c b-c parallel -j2 -kX echo {1}-{2} ::: a b c ::: d e f a-d b-f parallel -j0 -kX echo {1}-{2} ::: a b c ::: d e f a-d a-e a-f b-d b-e b-f c-d c-e c-f echo '### Test of -X {}-{.} with multiple input sources' ### Test of -X {}-{.} with multiple input sources parallel -j1 -kX echo {}-{.} ::: a ::: b a-a b-b parallel -j2 -kX echo {}-{.} ::: a b ::: c d a-a c-c a-a d-d b-b c-c b-b d-d parallel -j2 -kX echo {}-{.} ::: a b c ::: d e f a-a d-d a-a e-e a-a f-f b-b d-d b-b e-e b-b f-f c-c d-d c-c e-e c-c f-f parallel -j0 -kX echo {}-{.} ::: a b c ::: d e f a-a d-d a-a e-e a-a f-f b-b d-d b-b e-e b-b f-f c-c d-d c-c e-e c-c f-f echo '### Test of -r with --pipe - the first should give an empty line. The second should not.' ### Test of -r with --pipe - the first should give an empty line. The second should not. echo | parallel -j2 -N1 --pipe cat | wc -l 1 echo | parallel -r -j2 -N1 --pipe cat | wc -l 0 echo '### Test --tty' ### Test --tty seq 0.1 0.1 0.5 | parallel -j1 --tty tty\;sleep /dev/tty /dev/tty /dev/tty /dev/tty /dev/tty ### 1 .par file from --files expected 0 par_0_no_newline A single zero without \n should not be ignored par_0_no_newline 0 par_PARALLEL_ENV ### PARALLEL_ENV as variable par_PARALLEL_ENV OK as variable par_PARALLEL_ENV ### PARALLEL_ENV as file par_PARALLEL_ENV OK as file par_PARALLEL_ENV ### PARALLEL_ENV as fifo par_PARALLEL_ENV OK as fifo par_X_eta_div_zero ### bug #34422: parallel -X --eta crashes with div by zero par_X_eta_div_zero Computers / CPU cores / Max jobs to run par_X_eta_div_zero 0:local / 0 / 0 par_append_joblog ### can you append to a joblog using + par_append_joblog 1 par_append_joblog 1 par_append_joblog 3 /tmp/parallel_append_joblog par_basic_halt parallel: This job failed: par_basic_halt false par_basic_halt parallel: This job succeeded: par_basic_halt true par_basic_halt parallel: Error: --halt must have 'never', 'soon', or 'now'. par_basic_halt parallel: Error: --halt soon must be followed by ,success or ,fail. par_basic_halt parallel: Error: --halt now must be followed by ,success or ,fail. par_blocking_redir 0 0 0 par_blocking_redir 0 0 0 par_blocking_redir 1 9 54 par_blocking_redir 3 3 6 par_blocking_redir Test stderr par_blocking_redir Test stdout par_blocking_redir bug #52740: Bash redirection with process substitution blocks par_blocking_redir stderr par_blocking_redir stderr par_blocking_redir stdout par_blocking_redir stdout par_colsep_0 bug --colsep 0 par_colsep_0 OK par_colsep_0 OK par_csv col1"x3"-new par_csv line col2-new2 par_csv line col3-col 4 par_csv 2"x3" board-Value with ,-Column 3 par_csv_pipe Only pass full records to tail par_csv_pipe Too small block size par_csv_pipe parallel: Warning: A record was longer than 10000. Increasing to --blocksize 13001. par_csv_pipe parallel: Warning: A record was longer than 13001. Increasing to --blocksize 16903. par_csv_pipe 2000" par_csv_pipe 3000" par_csv_pipe 4000" par_csv_pipe 5000" par_csv_pipe 6000" par_csv_pipe 7000" par_csv_pipe 8000" par_csv_pipe 9000" par_csv_pipe 10000" par_csv_pipe 11000" par_csv_pipe More records in single block par_csv_pipe 9000" par_csv_pipe 11000" par_dryrun_append_joblog --dry-run should not append to joblog par_dryrun_append_joblog 1 par_dryrun_append_joblog 2 par_dryrun_append_joblog 3 par_dryrun_append_joblog echo 1 par_dryrun_append_joblog echo 2 par_dryrun_append_joblog echo 3 par_dryrun_append_joblog echo 4 par_dryrun_append_joblog 4 par_empty bug #: par_empty true par_empty_command bug #54647: parset ignores empty lines par_empty_command par_empty_command Empty: par_empty_command B: B par_empty_input_on_stdin https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=910470 par_empty_input_on_stdin This should give no output par_empty_line ### Test bug: empty line for | sh with -k par_empty_line a par_empty_line b par_expansion_in_colsep ### bug #36260: {n} expansion in --colsep files fails for empty fields if all following fields are also empty par_expansion_in_colsep AB par_extglob env_parallel par_file_ending_in_newline ### Hans found a bug giving unitialized variable par_file_ending_in_newline gzip /tmp/parallel_f1 par_file_ending_in_newline gzip '/tmp/parallel_f2 par_file_ending_in_newline ' par_halt_one_job # Halt soon if there is a single job par_halt_one_job should run 0 1 = job 1 2 par_halt_one_job 1 par_halt_one_job 2 par_halt_one_job parallel: This job failed: par_halt_one_job echo 2;exit 1 par_halt_one_job should run 1 = job 1 par_halt_one_job 1 par_halt_one_job parallel: This job failed: par_halt_one_job echo 1;exit 1 par_halt_one_job should run 0 1 = job 1 2 par_halt_one_job 1 par_halt_one_job 2 par_halt_one_job parallel: This job failed: par_halt_one_job echo 2;exit 1 par_halt_one_job parallel: Starting no more jobs. Waiting for 0 jobs to finish. par_halt_one_job should run 1 = job 1 par_halt_one_job 1 par_halt_one_job parallel: This job failed: par_halt_one_job echo 1;exit 1 par_halt_one_job parallel: Starting no more jobs. Waiting for 0 jobs to finish. par_inefficient_L bug #37325: Inefficiency of --pipe -L par_inefficient_L 276 276 996 par_inefficient_L FOO par_inefficient_L 248 248 992 par_inefficient_L FOO par_inefficient_L 248 248 992 par_inefficient_L FOO par_inefficient_L 244 244 993 par_inefficient_L FOO par_inefficient_L 200 200 1000 par_inefficient_L FOO par_inefficient_L 200 200 1000 par_inefficient_L FOO par_inefficient_L 200 200 1000 par_inefficient_L FOO par_inefficient_L 200 200 1000 par_inefficient_L FOO par_inefficient_L 184 184 920 par_inefficient_L FOO par_linebuffer_files ### bug #48658: --linebuffer --files par_linebuffer_files 10 par_link_files_as_only_arg bug #50685: single ::::+ does not work par_link_files_as_only_arg 1 1 1 par_link_files_as_only_arg 2 2 2 par_link_files_as_only_arg 3 3 3 par_locale_quoting ### quoting in different locales par_locale_quoting £`/tmp/test£` par_locale_quoting $LC_ALL £`/tmp/test£` par_locale_quoting echo $LC_ALL '£`/tmp/test£`' par_locale_quoting zh_HK.big5hkscs £`/tmp/test£` par_newline_in_command Command with newline and positional replacement strings par_newline_in_command O K par_no_command_given ### Test bugfix if no command given par_no_command_given 1 2 par_no_command_given /bin/bash: 3: command not found par_no_command_given parallel: Error: Command line too long (1000002 >= 10) at input 0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz... par_parcat_args_stdin bug #51690: parcat: read args from stdin par_parcat_args_stdin OK1 par_parcat_args_stdin OK2 par_parcat_rm bug #51691: parcat --rm remove fifo when opened par_parcat_rm OK1 par_parcat_rm OK file removed par_perlexpr_with_newline Perl expression spanning 2 lines par_pipe_N1_regexp bug #55131: --regexp --recstart hangs par_pipe_N1_regexp These should give the same par_pipe_N1_regexp JOB1 par_pipe_N1_regexp begin par_pipe_N1_regexp end par_pipe_N1_regexp END par_pipe_N1_regexp JOB2 par_pipe_N1_regexp begin par_pipe_N1_regexp aend par_pipe_N1_regexp END par_pipe_N1_regexp JOB3 par_pipe_N1_regexp begin par_pipe_N1_regexp bend par_pipe_N1_regexp END par_pipe_N1_regexp JOB4 par_pipe_N1_regexp begin par_pipe_N1_regexp cend par_pipe_N1_regexp END par_pipe_N1_regexp JOB1 par_pipe_N1_regexp begin par_pipe_N1_regexp end par_pipe_N1_regexp END par_pipe_N1_regexp JOB2 par_pipe_N1_regexp begin par_pipe_N1_regexp aend par_pipe_N1_regexp END par_pipe_N1_regexp JOB3 par_pipe_N1_regexp begin par_pipe_N1_regexp bend par_pipe_N1_regexp END par_pipe_N1_regexp JOB4 par_pipe_N1_regexp begin par_pipe_N1_regexp cend par_pipe_N1_regexp END par_pipe_no_command ### --pipe without command par_pipe_no_command parallel: Error: --pipe/--pipepart must have a command to pipe into (e.g. 'cat'). par_pipe_recend bug #54328: --pipe --recend blocks par_pipe_recend 00000000: 31 1 par_pipe_recend 00000000: 0a . par_pipe_recend 00000000: 32 2 par_pipe_recend 00000000: 0a . par_pipe_recend 00000000: 33 3 par_pipe_recend 00000000: 0a . par_pipe_recend 00000000: 31 1 par_pipe_recend 00000000: 0a . par_pipe_recend 00000000: 32 2 par_pipe_recend 00000000: 0a . par_pipe_recend 00000000: 33 3 par_pipe_recend 00000000: 0a . par_pipe_record_size_in_lines bug #34958: --pipe with record size measured in lines par_pipe_record_size_in_lines 1 par_pipe_record_size_in_lines 2 par_pipe_record_size_in_lines 3 par_pipe_record_size_in_lines 4 par_pipe_record_size_in_lines 5 par_pipe_record_size_in_lines 6 par_pipe_record_size_in_lines 7 par_pipe_record_size_in_lines 8 par_pipe_record_size_in_lines bug 34958-1 par_pipe_record_size_in_lines 9 par_pipe_record_size_in_lines 10 par_pipe_record_size_in_lines bug 34958-1 par_pipe_record_size_in_lines 1 par_pipe_record_size_in_lines 2 par_pipe_record_size_in_lines 3 par_pipe_record_size_in_lines 4 par_pipe_record_size_in_lines 5 par_pipe_record_size_in_lines 6 par_pipe_record_size_in_lines 7 par_pipe_record_size_in_lines 8 par_pipe_record_size_in_lines bug 34958-2 par_pipe_record_size_in_lines 9 par_pipe_record_size_in_lines 10 par_pipe_record_size_in_lines bug 34958-2 par_pipe_tag_v pipe with --tag -v par_pipe_tag_v foo cat par_pipe_tag_v foo 1 par_pipe_tag_v foo 2 par_pipe_tag_v foo 3 par_pipe_tag_v foo /tmp/tmpfile.par par_pipepart_block_bigger_2G ### Test that --pipepart can have blocks > 2GB par_pipepart_block_bigger_2G 1 1 4 par_pipepart_recend_recstart bug #52343: --recend/--recstart does wrong thing with --pipepart par_pipepart_recend_recstart a par_pipepart_recend_recstart 1 par_pipepart_recend_recstart 2 par_pipepart_recend_recstart 3 par_pipepart_recend_recstart 4 par_pipepart_recend_recstart 5 par_pipepart_recend_recstart a par_pipepart_recend_recstart 6 par_pipepart_recend_recstart 7 par_pipepart_recend_recstart 8 par_pipepart_recend_recstart 9 par_pipepart_recend_recstart 10 par_pipepart_recend_recstart parallel: Warning: A record was longer than 1. Increasing to --blocksize 3. par_pipepart_recend_recstart parallel: Warning: A record was longer than 3. Increasing to --blocksize 5. par_pipepart_recend_recstart parallel: Warning: A record was longer than 5. Increasing to --blocksize 8. par_pipepart_recend_recstart parallel: Warning: A record was longer than 8. Increasing to --blocksize 12. par_pipepart_recend_recstart a par_pipepart_recend_recstart 1 par_pipepart_recend_recstart 2 par_pipepart_recend_recstart 3 par_pipepart_recend_recstart 4 par_pipepart_recend_recstart 5 par_pipepart_recend_recstart a par_pipepart_recend_recstart 6 par_pipepart_recend_recstart 7 par_pipepart_recend_recstart 8 par_pipepart_recend_recstart 9 par_pipepart_recend_recstart 10 par_python_children ### bug #49970: Python child process dies if --env is used par_results ### --results test.csv par_results a par_results b par_results c par_retries_replacement_string 11 par_retries_replacement_string 22 par_retries_replacement_string 22 par_retries_replacement_string 33 par_retries_replacement_string 33 par_retries_replacement_string 33 par_slow_pipe_regexp ### bug #53718: --pipe --regexp -N blocks par_slow_pipe_regexp This should take a few ms, but took more than 2 hours par_slow_pipe_regexp 980 981 5881 par_slow_pipe_regexp 25021 25021 150125 par_slow_pipe_regexp ### These should give same output par_slow_pipe_regexp 6e72d7f86f6a423b9a7fa97630587815 - par_slow_pipe_regexp 6e72d7f86f6a423b9a7fa97630587815 - par_space_envvar ### bug: --gnu was ignored if env var started with space: PARALLEL=' --gnu' par_space_envvar echo 'space in envvar OK' par_space_envvar space in envvar OK par_tagstring_pipe bug #50228: --pipe --tagstring broken par_tagstring_pipe 1 1000 1000 3893 par_tagstring_pipe 2 1000 1000 5000 par_tagstring_pipe 3 1000 1000 5000 par_tee 1 a 1 par_tee 1 a 1000000 1000000 6888896 par_tee 1 b 2 par_tee 1 b 1000000 1000000 6888896 par_tee 2 a 3 par_tee 2 a 1000000 1000000 6888896 par_tee 2 b 4 par_tee 2 b 1000000 1000000 6888896 par_tee 3 a 5 par_tee 3 a 1000000 1000000 6888896 par_tee 3 b 6 par_tee 3 b 1000000 1000000 6888896 par_tee 4 a 7 par_tee 4 a 1000000 1000000 6888896 par_tee 4 b 8 par_tee 4 b 1000000 1000000 6888896 par_tee 5 a 9 par_tee 5 a 1000000 1000000 6888896 par_tee 5 b 10 par_tee 5 b 1000000 1000000 6888896 par_tee 1 -l 181902 par_tee 1 -c 1228633 par_tee 2 -l 181902 par_tee 2 -c 1228633 par_tee 3 -l 122854 par_tee 3 -c 815297 par_tee 4 -l 122853 par_tee 4 -c 815290 par_tee 5 -l 122853 par_tee 5 -c 815290 par_tee_too_many_args ### Fail if there are more arguments than --jobs par_tee_too_many_args 1 1 par_tee_too_many_args 1 10 par_tee_too_many_args 1 11 par_tee_too_many_args 2 2 par_tee_too_many_args 3 3 par_tee_too_many_args 4 4 par_tee_too_many_args parallel: Error: --tee requres --jobs to be higher. Try --jobs 0. par_testquote ash "#&/ par_testquote ash ()*=?' par_testquote bash "#&/ par_testquote bash ()*=?' par_testquote csh "#&/ par_testquote csh ()*=?' par_testquote dash "#&/ par_testquote dash ()*=?' par_testquote fdsh "#&/ par_testquote fdsh ()*=?' par_testquote fish "#&/ par_testquote fish ()*=?' par_testquote fizsh "#&/ par_testquote fizsh ()*=?' par_testquote ksh "#&/ par_testquote ksh ()*=?' par_testquote ksh93 "#&/ par_testquote ksh93 ()*=?' par_testquote mksh "#&/ par_testquote mksh ()*=?' par_testquote posh "#&/ par_testquote posh ()*=?' par_testquote rbash "#&/ par_testquote rbash ()*=?' par_testquote rc "#&/ par_testquote rc ()*=?' par_testquote rzsh "#&/ par_testquote rzsh ()*=?' par_testquote sash "#&/ par_testquote sash ()*=?' par_testquote sh "#&/ par_testquote sh ()*=?' par_testquote static-sh "#&/ par_testquote static-sh ()*=?' par_testquote tcsh "#&/ par_testquote tcsh ()*=?' par_testquote yash "#&/ par_testquote yash ()*=?' par_testquote zsh "#&/ par_testquote zsh ()*=?' par_tricolonplus ### bug #48745: :::+ bug par_tricolonplus 11 1 21 a aa par_tricolonplus 11 1 21 b bb par_tricolonplus 11 1 21 c cc par_tricolonplus 22 2 22 a aa par_tricolonplus 22 2 22 b bb par_tricolonplus 22 2 22 c cc par_tricolonplus 33 3 23 a aa par_tricolonplus 33 3 23 b bb par_tricolonplus 33 3 23 c cc par_tricolonplus 1 21 a aa par_tricolonplus 1 21 a bb par_tricolonplus 1 21 a cc par_tricolonplus 1 22 b aa par_tricolonplus 1 22 b bb par_tricolonplus 1 22 b cc par_tricolonplus 1 23 c aa par_tricolonplus 1 23 c bb par_tricolonplus 1 23 c cc par_tricolonplus 2 21 a aa par_tricolonplus 2 21 a bb par_tricolonplus 2 21 a cc par_tricolonplus 2 22 b aa par_tricolonplus 2 22 b bb par_tricolonplus 2 22 b cc par_tricolonplus 2 23 c aa par_tricolonplus 2 23 c bb par_tricolonplus 2 23 c cc par_tricolonplus 3 21 a aa par_tricolonplus 3 21 a bb par_tricolonplus 3 21 a cc par_tricolonplus 3 22 b aa par_tricolonplus 3 22 b bb par_tricolonplus 3 22 b cc par_tricolonplus 3 23 c aa par_tricolonplus 3 23 c bb par_tricolonplus 3 23 c cc par_tricolonplus 1 21 a aa par_tricolonplus 1 21 a bb par_tricolonplus 1 21 a cc par_tricolonplus 1 22 b aa par_tricolonplus 1 22 b bb par_tricolonplus 1 22 b cc par_tricolonplus 1 23 c aa par_tricolonplus 1 23 c bb par_tricolonplus 1 23 c cc par_tricolonplus 2 21 a aa par_tricolonplus 2 21 a bb par_tricolonplus 2 21 a cc par_tricolonplus 2 22 b aa par_tricolonplus 2 22 b bb par_tricolonplus 2 22 b cc par_tricolonplus 2 23 c aa par_tricolonplus 2 23 c bb par_tricolonplus 2 23 c cc par_tricolonplus 3 21 a aa par_tricolonplus 3 21 a bb par_tricolonplus 3 21 a cc par_tricolonplus 3 22 b aa par_tricolonplus 3 22 b bb par_tricolonplus 3 22 b cc par_tricolonplus 3 23 c aa par_tricolonplus 3 23 c bb par_tricolonplus 3 23 c cc par_wd_3dot_local bug #45993: --wd ... should also work when run locally par_wd_3dot_local parallel: Error: Cannot change into non-executable dir /bi: No such file or directory par_wd_3dot_local /bin par_wd_3dot_local ~/privat/parallel/testsuite par_wd_3dot_local OK par_wd_3dot_local / par_wd_3dot_local ~/privat/parallel/testsuite par_wd_3dot_local OK par_wd_3dot_local /tmp par_wd_3dot_local ~/privat/parallel/testsuite par_wd_3dot_local OK par_wd_3dot_local ~/.parallel/tmp/hostname-0-0 par_wd_3dot_local ~/privat/parallel/testsuite par_wd_3dot_local OK par_wd_3dot_local ~/privat/parallel/testsuite par_wd_3dot_local ~/privat/parallel/testsuite par_wd_3dot_local OK