Compare commits

..

3 commits

Author SHA1 Message Date
Ole Tange 1daaf604c7 Released as 20240822 ('Southport') 2024-08-21 22:28:44 +02:00
Ole Tange 05ec7b93f4 parallel: --match from bug #64819: Regexp capture groups. 2024-08-21 22:28:37 +02:00
Ole Tange 67cfb6b79f parallel: Format replacement string. 2024-08-03 19:44:56 +02:00
63 changed files with 1663 additions and 1333 deletions

View file

@ -19,7 +19,7 @@ torresults:
torsync: torsync:
torsocks rsync -Hazv --exclude='*.{pdf,gz,bz2,html,deb}' --exclude authorized_keys --exclude .vagrant/ --exclude actual-results --delete ./ tortest:privat/parallel/ torsocks rsync -Hazv --exclude='*.{pdf,gz,bz2,html,deb}' --exclude authorized_keys --exclude .vagrant/ --exclude actual-results --exclude '*hwdep*' --delete ./ tortest:privat/parallel/
make tortest make tortest
web: web:

View file

@ -156,8 +156,8 @@ am__define_uniq_tagged_files = \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)` done | $(am__uniquify_input)`
DIST_SUBDIRS = $(SUBDIRS) DIST_SUBDIRS = $(SUBDIRS)
am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in COPYING \ am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in NEWS \
NEWS README TODO install-sh missing README TODO install-sh missing
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION) distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir) top_distdir = $(distdir)
@ -787,7 +787,7 @@ torresults:
torsocks rsync -Hazv --progress tortest:privat/parallel/testsuite/actual-results/ testsuite/actual-results/ torsocks rsync -Hazv --progress tortest:privat/parallel/testsuite/actual-results/ testsuite/actual-results/
torsync: torsync:
torsocks rsync -Hazv --exclude='*.{pdf,gz,bz2,html,deb}' --exclude authorized_keys --exclude .vagrant/ --exclude actual-results --delete ./ tortest:privat/parallel/ torsocks rsync -Hazv --exclude='*.{pdf,gz,bz2,html,deb}' --exclude authorized_keys --exclude .vagrant/ --exclude actual-results --exclude '*hwdep*' --delete ./ tortest:privat/parallel/
make tortest make tortest
web: web:

31
NEWS
View file

@ -1,3 +1,28 @@
20240822
New in this release:
* --match Match input source with regexp to set replacement fields.
* {:%fmt} Use printf formatting of replacement strings.
* Bug fixes and man page updates.
News about GNU Parallel:
* Powerful GNU parallel, more than a loop
https://www.linkedin.com/pulse/powerful-gnu-parallel-more-than-loop-zhenguo-zhang-18dxc
* How To Increase File Transfer Speed Using Parallel Rsync?
https://contentbase.com/blog/increase-file-transfer-speed-parallel-rsync/
* Converting WebP Images to PNG Using parallel and dwebp
https://bytefreaks.net/2024/07/27
* Turbocharging the Box CLI with GNU Parallel
https://medium.com/box-developer-blog/turbocharging-the-box-cli-with-gnu-parallel-ee44c48811c0
20240722 20240722
New in this release: New in this release:
@ -32,9 +57,11 @@ New in this release:
News about GNU Parallel: News about GNU Parallel:
* Howto - Parallel: lanciare comandi in simultanea https://github.com/linuxhubit/linuxhub.it/blob/main/_posts/2024-06-14-howto-parallel-per-lanciare-comandi-in-simultanea.md * Howto - Parallel: lanciare comandi in simultanea
https://github.com/linuxhubit/linuxhub.it/blob/main/_posts/2024-06-14-howto-parallel-per-lanciare-comandi-in-simultanea.md
* Implementing Concurrency in Shell Scripts https://dev.to/siddhantkcode/implementing-concurrency-in-shell-scripts-521o * Implementing Concurrency in Shell Scripts
https://dev.to/siddhantkcode/implementing-concurrency-in-shell-scripts-521o
20240522 20240522

24
README
View file

@ -57,11 +57,11 @@ document.
Full installation of GNU Parallel is as simple as: Full installation of GNU Parallel is as simple as:
wget https://ftpmirror.gnu.org/parallel/parallel-20240722.tar.bz2 wget https://ftpmirror.gnu.org/parallel/parallel-20240822.tar.bz2
wget https://ftpmirror.gnu.org/parallel/parallel-20240722.tar.bz2.sig wget https://ftpmirror.gnu.org/parallel/parallel-20240822.tar.bz2.sig
gpg parallel-20240722.tar.bz2.sig gpg parallel-20240822.tar.bz2.sig
bzip2 -dc parallel-20240722.tar.bz2 | tar xvf - bzip2 -dc parallel-20240822.tar.bz2 | tar xvf -
cd parallel-20240722 cd parallel-20240822
./configure && make && sudo make install ./configure && make && sudo make install
@ -70,11 +70,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 If you are not root you can add ~/bin to your path and install in
~/bin and ~/share: ~/bin and ~/share:
wget https://ftpmirror.gnu.org/parallel/parallel-20240722.tar.bz2 wget https://ftpmirror.gnu.org/parallel/parallel-20240822.tar.bz2
wget https://ftpmirror.gnu.org/parallel/parallel-20240722.tar.bz2.sig wget https://ftpmirror.gnu.org/parallel/parallel-20240822.tar.bz2.sig
gpg parallel-20240722.tar.bz2.sig gpg parallel-20240822.tar.bz2.sig
bzip2 -dc parallel-20240722.tar.bz2 | tar xvf - bzip2 -dc parallel-20240822.tar.bz2 | tar xvf -
cd parallel-20240722 cd parallel-20240822
./configure --prefix=$HOME && make && make install ./configure --prefix=$HOME && make && make install
Or if your system lacks 'make' you can simply copy src/parallel Or if your system lacks 'make' you can simply copy src/parallel
@ -122,8 +122,8 @@ will love you for it.
When using programs that use GNU Parallel to process data for When using programs that use GNU Parallel to process data for
publication please cite: publication please cite:
Tange, O. (2024, July 22). GNU Parallel 20240722 ('Assange'). Tange, O. (2024, August 22). GNU Parallel 20240822 ('Southport').
Zenodo. https://doi.org/10.5281/zenodo.12789352 Zenodo. https://doi.org/10.5281/zenodo.13357237
Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free
Software Foundation, Inc. Software Foundation, Inc.

20
configure vendored
View file

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

View file

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

View file

@ -4,6 +4,12 @@
Quote of the month: Quote of the month:
Recently executed a flawless live data migration of ~2.4pb using GNU parallel for scale and bash scripts.
-- @mechanicker@twitter Dhruva
by extreme do you mean extremely slow? you could do it at least 100x faster using awk + grep + gnu parallel
-- @ObssessedDev@twitter
gnu parallel is amazing gnu parallel is amazing
-- Tarun Agarwal @axrawal -- Tarun Agarwal @axrawal
@ -221,6 +227,10 @@ https://negfeedback.blogspot.com/2020/05/indispensable-command-line-tools.html
=== Used === === Used ===
honestly the coolest software i've ever seen gotta be gnu parallel or
ffmpeg, nothing like them
-- @scootykins scoot
parallel is frickin great for launching jobs on multiple parallel is frickin great for launching jobs on multiple
machines. Ansible and Jenkins and others may be good too but I was machines. Ansible and Jenkins and others may be good too but I was
able to jump right in with parallel. able to jump right in with parallel.

View file

@ -268,34 +268,34 @@ from:tange@gnu.org
to:parallel@gnu.org, bug-parallel@gnu.org to:parallel@gnu.org, bug-parallel@gnu.org
stable-bcc: Jesse Alama <jessealama@fastmail.fm> stable-bcc: Jesse Alama <jessealama@fastmail.fm>
Subject: GNU Parallel 20240722 ('Assange') released [stable] Subject: GNU Parallel 20240822 ('Southport') released
GNU Parallel 20240722 ('Assange') has been released. It is available for download at: lbry://@GnuParallel:4 GNU Parallel 20240822 ('Southport') has been released. It is available for download at: lbry://@GnuParallel:4
Quote of the month: Quote of the month:
parallel is frickin great for launching jobs on multiple honestly the coolest software i've ever seen gotta be gnu parallel or
machines. Ansible and Jenkins and others may be good too but I was ffmpeg, nothing like them
able to jump right in with parallel. -- @scootykins scoot
-- dwhite21787@reddit
New in this release: New in this release:
* No new features. This is a candidate for a stable release. * --match Match input source with regexp to set replacement fields.
* {:%fmt} Use printf formatting of replacement strings.
* Bug fixes and man page updates. * Bug fixes and man page updates.
News about GNU Parallel: News about GNU Parallel:
* Scientific Workflows at Scale using GNU Parallel https://web.cvent.com/event/f318e73c-2230-432a-a044-b75625020543/websitePage:afd80266-008e-414b-9f94-2fd9b4dd1924?session=fe79a785-ec60-414c-8d2b-c29208f53d4c&shareLink=true * Powerful GNU parallel, more than a loop https://www.linkedin.com/pulse/powerful-gnu-parallel-more-than-loop-zhenguo-zhang-18dxc
* Use GNU Parallel to render blender movies distributed by a bunch of nodes https://github.com/tfmoraes/blender_gnu_parallel_render * How To Increase File Transfer Speed Using Parallel Rsync? https://contentbase.com/blog/increase-file-transfer-speed-parallel-rsync/
* Lessons Learned from Scaling to Multi-Terabyte Datasets https://v2thegreat.com/2024/06/19/lessons-learned-from-scaling-to-multi-terabyte-datasets/ * Converting WebP Images to PNG Using parallel and dwebp https://bytefreaks.net/2024/07/27
* Efisiensi Maksimal: Cara Paralelisasi Perintah di CLI Linux https://medium.com/@nfrozi/efisiensi-maksimal-cara-paralelisasi-perintah-di-cli-linux-f4fda3afe2a0 * Turbocharging the Box CLI with GNU Parallel https://medium.com/box-developer-blog/turbocharging-the-box-cli-with-gnu-parallel-ee44c48811c0
* Introduction to GNU parallel https://datascience.101workbook.org/06-hpc/06-parallel/01-intro-to-gnu-parallel/#gsc.tab=0
GNU Parallel - For people who live life in the parallel lane. GNU Parallel - For people who live life in the parallel lane.

View file

@ -1,8 +1,8 @@
<directory name="parallel" rev="390" vrev="2" srcmd5="491dbee376ddabe7e9acf3e6dd268f7b"> <directory name="parallel" rev="392" vrev="3" srcmd5="b0ed240db642f9220a259b0d40632326">
<entry name="Makefile" md5="a165cdcca90c744dc5a5b17cde72ad8e" size="1182" mtime="1698101769" /> <entry name="Makefile" md5="a165cdcca90c744dc5a5b17cde72ad8e" size="1182" mtime="1698101769" />
<entry name="PKGBUILD" md5="16b2780a64ee18b0df1060680cec804c" size="714" mtime="1721531636" /> <entry name="PKGBUILD" md5="dbc43c26061f9b183f43ac780643b362" size="714" mtime="1724271991" />
<entry name="parallel-20240722.tar.bz2" md5="e6bdcd2fa790b2096665ed05850bbe53" size="2617438" mtime="1721531681" /> <entry name="parallel-20240822.tar.bz2" md5="150250ba8a27dc86cab7cb9b56bca9e5" size="2682765" mtime="1724271991" />
<entry name="parallel.spec" md5="d49c3a3bd1906e68ad98cf2377b3d8ea" size="6224" mtime="1721531682" /> <entry name="parallel.spec" md5="ff9ea031c93efd66356306d83723efcd" size="6224" mtime="1724271499" />
<entry name="parallel_20240722.dsc" md5="13bb25db4380d128d45b57f95d1422e0" size="556" mtime="1721531683" /> <entry name="parallel_20240822.dsc" md5="78549c2818624964438c8c3c6cc1fce4" size="556" mtime="1724271499" />
<entry name="parallel_20240722.tar.gz" md5="0229f60e3fe8aabc84dd7a908ff6bb11" size="2883193" mtime="1721531695" /> <entry name="parallel_20240822.tar.gz" md5="1c4351c72c29614d1c2fa1402715956b" size="2931682" mtime="1724271992" />
</directory> </directory>

View file

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

View file

@ -601,7 +601,7 @@ _parset_main() {
fi fi
if [ "$_parset_NAME" = "--version" ] ; then if [ "$_parset_NAME" = "--version" ] ; then
# shellcheck disable=SC2006 # shellcheck disable=SC2006
echo "parset 20240722 (GNU parallel `parallel --minversion 1`)" echo "parset 20240822 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2024 Ole Tange, http://ole.tange.dk and Free Software" echo "Copyright (C) 2007-2024 Ole Tange, http://ole.tange.dk and Free Software"
echo "Foundation, Inc." echo "Foundation, Inc."
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>" echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"

View file

@ -605,7 +605,7 @@ _parset_main() {
fi fi
if [ "$_parset_NAME" = "--version" ] ; then if [ "$_parset_NAME" = "--version" ] ; then
# shellcheck disable=SC2006 # shellcheck disable=SC2006
echo "parset 20240722 (GNU parallel `parallel --minversion 1`)" echo "parset 20240822 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2024 Ole Tange, http://ole.tange.dk and Free Software" echo "Copyright (C) 2007-2024 Ole Tange, http://ole.tange.dk and Free Software"
echo "Foundation, Inc." echo "Foundation, Inc."
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>" echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"

View file

@ -601,7 +601,7 @@ _parset_main() {
fi fi
if [ "$_parset_NAME" = "--version" ] ; then if [ "$_parset_NAME" = "--version" ] ; then
# shellcheck disable=SC2006 # shellcheck disable=SC2006
echo "parset 20240722 (GNU parallel `parallel --minversion 1`)" echo "parset 20240822 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2024 Ole Tange, http://ole.tange.dk and Free Software" echo "Copyright (C) 2007-2024 Ole Tange, http://ole.tange.dk and Free Software"
echo "Foundation, Inc." echo "Foundation, Inc."
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>" echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"

View file

@ -601,7 +601,7 @@ _parset_main() {
fi fi
if [ "$_parset_NAME" = "--version" ] ; then if [ "$_parset_NAME" = "--version" ] ; then
# shellcheck disable=SC2006 # shellcheck disable=SC2006
echo "parset 20240722 (GNU parallel `parallel --minversion 1`)" echo "parset 20240822 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2024 Ole Tange, http://ole.tange.dk and Free Software" echo "Copyright (C) 2007-2024 Ole Tange, http://ole.tange.dk and Free Software"
echo "Foundation, Inc." echo "Foundation, Inc."
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>" echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"

View file

@ -570,7 +570,7 @@ _parset_main() {
fi fi
if [ "$_parset_NAME" = "--version" ] ; then if [ "$_parset_NAME" = "--version" ] ; then
# shellcheck disable=SC2006 # shellcheck disable=SC2006
echo "parset 20240722 (GNU parallel `parallel --minversion 1`)" echo "parset 20240822 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2024 Ole Tange, http://ole.tange.dk and Free Software" echo "Copyright (C) 2007-2024 Ole Tange, http://ole.tange.dk and Free Software"
echo "Foundation, Inc." echo "Foundation, Inc."
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>" echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"

View file

@ -384,7 +384,7 @@ B<--session> is supported.
=back =back
=head2 fish (alpha testing) =head2 fish (beta testing)
=head3 Installation =head3 Installation

View file

@ -601,7 +601,7 @@ _parset_main() {
fi fi
if [ "$_parset_NAME" = "--version" ] ; then if [ "$_parset_NAME" = "--version" ] ; then
# shellcheck disable=SC2006 # shellcheck disable=SC2006
echo "parset 20240722 (GNU parallel `parallel --minversion 1`)" echo "parset 20240822 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2024 Ole Tange, http://ole.tange.dk and Free Software" echo "Copyright (C) 2007-2024 Ole Tange, http://ole.tange.dk and Free Software"
echo "Foundation, Inc." echo "Foundation, Inc."
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>" echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"

View file

@ -601,7 +601,7 @@ _parset_main() {
fi fi
if [ "$_parset_NAME" = "--version" ] ; then if [ "$_parset_NAME" = "--version" ] ; then
# shellcheck disable=SC2006 # shellcheck disable=SC2006
echo "parset 20240722 (GNU parallel `parallel --minversion 1`)" echo "parset 20240822 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2024 Ole Tange, http://ole.tange.dk and Free Software" echo "Copyright (C) 2007-2024 Ole Tange, http://ole.tange.dk and Free Software"
echo "Foundation, Inc." echo "Foundation, Inc."
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>" echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"

View file

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

View file

@ -65,7 +65,11 @@ sub set_input_source_header($$) {
@opt::filter) { @opt::filter) {
# Skip if undefined # Skip if undefined
$_ or next; $_ or next;
s:\{$s(|/|//|\.|/\.)\}:\{$id$1\}:g; s<\{$s(
(\.\d+)? # Sub position = {3.2}
(|/|//|\.|/\.) # Known replacement strings
(:%.*?)? # Formatting
)\}><\{$id$1\}>gx;
# {=header1 ... =} => {=1 ... =} # {=header1 ... =} => {=1 ... =}
s:$left $s (.*?) $right:$l$id$1$r:gx; s:$left $s (.*?) $right:$l$id$1$r:gx;
} }
@ -2039,6 +2043,7 @@ sub options_completion_hash() {
"[Use at most max-args arguments per command line]:max-args" "[Use at most max-args arguments per command line]:max-args"
=> \$opt::max_replace_args), => \$opt::max_replace_args),
"col-sep|colsep|C=s[Column separator]:regexp" => \$opt::colsep, "col-sep|colsep|C=s[Column separator]:regexp" => \$opt::colsep,
"match=s[Matching regexp]:regexp" => \@opt::match,
"csv[Treat input as CSV-format]"=> \$opt::csv, "csv[Treat input as CSV-format]"=> \$opt::csv,
("help|h[Print a summary of the options to GNU parallel and exit]" ("help|h[Print a summary of the options to GNU parallel and exit]"
=> \$opt::help), => \$opt::help),
@ -2793,7 +2798,7 @@ sub check_invalid_option_combinations() {
sub init_globals() { sub init_globals() {
# Defaults: # Defaults:
$Global::version = 20240722; $Global::version = 20240822;
$Global::progname = 'parallel'; $Global::progname = 'parallel';
$::name = "GNU Parallel"; $::name = "GNU Parallel";
$Global::infinity = 2**31; $Global::infinity = 2**31;
@ -3801,7 +3806,7 @@ sub pQ($) {
} }
sub unquote_printf() { sub unquote_printf() {
# Convert \t \n \r \000 \0 # Convert \t \n \r \xFF \000 \0
# Inputs: # Inputs:
# $string = string with \t \n \r \num \0 # $string = string with \t \n \r \num \0
# Returns: # Returns:
@ -3810,7 +3815,11 @@ sub unquote_printf() {
s/\\t/\t/g; s/\\t/\t/g;
s/\\n/\n/g; s/\\n/\n/g;
s/\\r/\r/g; s/\\r/\r/g;
# Hex: \xFF
s/\\x([0-9a-fA-F]+)/eval 'sprintf "\\x'.$1.'"'/ge;
# Octal: \007
s/\\(\d\d\d)/eval 'sprintf "\\'.$1.'"'/ge; s/\\(\d\d\d)/eval 'sprintf "\\'.$1.'"'/ge;
# Single digit octal: \7
s/\\(\d)/eval 'sprintf "\\'.$1.'"'/ge; s/\\(\d)/eval 'sprintf "\\'.$1.'"'/ge;
return $_; return $_;
} }
@ -5847,8 +5856,8 @@ sub usage() {
"If you use programs that use GNU Parallel to process data for an article in a", "If you use programs that use GNU Parallel to process data for an article in a",
"scientific publication, please cite:", "scientific publication, please cite:",
"", "",
" Tange, O. (2024, July 22). GNU Parallel 20240722 ('Assange').", " Tange, O. (2024, August 22). GNU Parallel 20240822 ('Southport').",
" Zenodo. https://doi.org/10.5281/zenodo.12789352", " Zenodo. https://doi.org/10.5281/zenodo.13357237",
"", "",
# Before changing these lines, please read # Before changing these lines, please read
# https://www.gnu.org/software/parallel/parallel_design.html#citation-notice # https://www.gnu.org/software/parallel/parallel_design.html#citation-notice
@ -5880,8 +5889,8 @@ sub citation_notice() {
"If you use programs that use GNU Parallel to process data for an article in a", "If you use programs that use GNU Parallel to process data for an article in a",
"scientific publication, please cite:", "scientific publication, please cite:",
"", "",
" Tange, O. (2024, July 22). GNU Parallel 20240722 ('Assange').", " Tange, O. (2024, August 22). GNU Parallel 20240822 ('Southport').",
" Zenodo. https://doi.org/10.5281/zenodo.12789352", " Zenodo. https://doi.org/10.5281/zenodo.13357237",
"", "",
# Before changing these line, please read # Before changing these line, please read
# https://www.gnu.org/software/parallel/parallel_design.html#citation-notice and # https://www.gnu.org/software/parallel/parallel_design.html#citation-notice and
@ -6007,20 +6016,20 @@ sub citation() {
"If you use programs that use GNU Parallel to process data for an article in a", "If you use programs that use GNU Parallel to process data for an article in a",
"scientific publication, please cite:", "scientific publication, please cite:",
"", "",
"\@software{tange_2024_12789352,", "\@software{tange_2024_13357237,",
" author = {Tange, Ole},", " author = {Tange, Ole},",
" title = {GNU Parallel 20240722 ('Assange')},", " title = {GNU Parallel 20240822 ('Southport')},",
" month = Jul,", " month = Aug,",
" year = 2023,", " year = 2023,",
" note = {{GNU Parallel is a general parallelizer to run", " note = {{GNU Parallel is a general parallelizer to run",
" multiple serial command line programs in parallel", " multiple serial command line programs in parallel",
" without changing them.}},", " without changing them.}},",
" publisher = {Zenodo},", " publisher = {Zenodo},",
" doi = {10.5281/zenodo.12789352},", " doi = {10.5281/zenodo.13357237},",
" url = {https://doi.org/10.5281/zenodo.12789352}", " url = {https://doi.org/10.5281/zenodo.13357237}",
"}", "}",
"", "",
"(Feel free to use \\nocite{tange_2024_12789352})", "(Feel free to use \\nocite{tange_2024_13357237})",
"", "",
# Before changing these lines, please read # Before changing these lines, please read
# https://www.gnu.org/software/parallel/parallel_design.html#citation-notice and # https://www.gnu.org/software/parallel/parallel_design.html#citation-notice and
@ -13282,6 +13291,289 @@ sub skip($) {
package CommandLineQueue; package CommandLineQueue;
sub new($) { sub new($) {
sub merge_rpl_parts(@) {
# '{=' 'perlexpr' '=}' => '{= perlexpr =}'
# Input:
# @in = the @command as given by the user
# Uses:
# $Global::parensleft
# $Global::parensright
# Returns:
# @command with parts merged to keep {= and =} as one
my @in = @_;
my @out;
my $l = quotemeta($Global::parensleft);
my $r = quotemeta($Global::parensright);
while(@in) {
my $s = shift @in;
$_ = $s;
# Remove matching (right most) parens
while(s/(.*)$l.*?$r/$1/os) {}
if(/$l/o) {
# Missing right parens
while(@in) {
$s .= " ".shift @in;
$_ = $s;
while(s/(.*)$l.*?$r/$1/os) {}
if(not /$l/o) {
last;
}
}
}
push @out, $s;
}
return @out;
}
sub escape_177($) {
# Escape \177 => \177\176
my $s = shift;
$Global::escape_string_present += $s =~ s/\177/\177\176/g;
return $s;
}
sub replace_parens($) {
# Needs to match rightmost left parens (Perl defaults to leftmost)
# to deal with: {={==} and {={==}=}
# Replace {= -> \177< and =} -> \177>
#
# Complex way to do:
# s/{=(.*)=}/\177<$1\177>/g
# which would not work
my $s = shift;
$s =~ s[\Q$Global::parensleft\E # Match {=
# Match . unless the next string is {= or =}
# needed to force matching the shortest {= =}
((?:(?! \Q$Global::parensleft\E|\Q$Global::parensright\E ).)*?)
\Q$Global::parensright\E ] # Match =}
{\177<$1\177>}gxs;
# Now {= perlexpr =} => \177< perlexpr \177>
return $s;
}
sub replace_rpl_def($) {
my $s = shift;
# Replace rpl-definitions with the corresponding perl code
for my $rpl (sort { length $b <=> length $a } keys %Global::rpl) {
# Replace long --rpl's before short ones, as a short may be a
# substring of a long:
# --rpl '% s/a/b/' --rpl '%% s/b/a/'
#
# Replace the shorthand string (--rpl)
# with the {= perl expr =}
#
# Avoid searching for shorthand strings inside existing {= perl expr =}
#
# Replace $$1 in {= perl expr =} with groupings in shorthand string
#
# parallel --rpl '{/(\.\S+)/(\.\S+)} s/$$1/$$2_REPLACE/g;' \
# echo {/.gz/.lz} ::: UU.tar.gz
#
# {/.gz/.lz} =>
# \177<
# $_pAr_gRp1 = ".gz";
# $_pAr_gRp2 = ".lz";
# s/${_pAr_gRp1}/${_pAr_gRp2}_REPLACE/g;
# \177>
# {/.gz/.lz:%8.2s} =>
# \177<
# $_pAr_gRp1 = ".gz";
# $_pAr_gRp2 = ".lz";
# s/${_pAr_gRp1}/${_pAr_gRp2}_REPLACE/g;;
# $_ = sprintf("%8.2f",$_);
# \177>
#
sub replacer_rpl {
my $rpl = shift;
my $rv = $Global::rpl{$rpl};
return replacer($rv,@_);
}
sub replacer {
my $rv = shift;
my $unchanged = shift;
my $position = shift;
my $grp_regexp = shift;
my $grp_string = shift;
my $formatstring = shift;
$grp_string =~ /^${grp_regexp}$/ or
::die_bug("Match failed: '$grp_regexp' on $grp_string");
# Dummy entry to start $grp[n] at 1.
my @grp = (1);
if($] >= 5.010) {
@grp = (1, @{^CAPTURE});
} else {
for(my $i = 1; defined $grp[$#grp]; $i++) {
push @grp, eval '$'.$i;
}
}
# replace $$1 with ${_pAr_gRp1}, $$2 with ${_pAr_gRp2}
# in the code to be executed
$rv =~ s/\$\$ (\d+)/\$\{_pAr_gRp$1\}/gx;
# prepend with $_pAr_gRp1 = perlquote($1),
my $set_args = "";
for(my $i = 1;defined $grp[$i]; $i++) {
$set_args .= "\$_pAr_gRp$i = \"" .
::perl_quote_scalar($grp[$i]) . "\";";
}
# :%8.2f => %8.2f
$formatstring =~ s/^://;
my $formatcode = "";
if(length $formatstring > 0) {
$formatcode = ";\$_ = sprintf('$formatstring',\$_);";
}
if($position =~ s/\.(\d+)//) {
# {2.3} => There must be a corresponding --match
my $field = $1;
my $re = $opt::match[$position-1];
if($re=~/^\+(\d+)/) {
# multiple --match: Reuse --match $1
$re = $opt::match[$1-1];
}
if(not defined $re) {
::error("{$position.$field} requires ".
"corresponding --match");
::wait_and_exit(255);
}
if($re =~ /\001/) {
::error("\\001 is not supported in --match");
::wait_and_exit(255);
}
$rv = "m\001$re\001 or ".
"::warning(\"'\$_' did not match '$re'\"); ".
"\$_ = \$$field; $rv";
}
::debug("rpl","match: $rv ¤ $unchanged ¤ $position ¤ ".
"$set_args ¤ $rv ¤ $grp_regexp ¤ $formatstring\n");
return($unchanged . "\177<" . $position . $set_args .
$rv . $formatcode. "\177>");
}
if($rpl =~ /^\{/) {
my ($prefix,$grp_regexp,$postfix) =
# Ignore { and }
$rpl =~ /^ \{ # {
( [^(]* ) # Prefix (no '{' ) - e.g. %%
( \(.*\) )? # Group capture regexp - e.g (.*)
( [^)]* ) # Postfix (no '}' ) - e.g. end
\} $ # }
/xs;
my $format_regexp = ":%.*?";
q{
# Regexp using named captures - kept for documentation
# It is easier to understand than the backward compatible version
# Look for: { position prefix group format postfix }
while($s =~
s{(?<unchanged> (?: ^|\177> ) (?: [^\177]*|[\177][^<>] )*?)
\{
(?<position> -?\d+(?:\.\d+)? \s*)?
\Q$prefix\E
(?<grp>$grp_regexp)
\Q$postfix\E
(?<format> $format_regexp)
\}
}
{
replacer_rpl($rpl, $+{unchanged},
$+{position}, $grp_regexp,
$+{grp}, $+{format});
}gsex){};
# Look for: { position prefix group postfix }
while($s =~
s{(?<unchanged> (?: ^|\177> ) (?: [^\177]*|[\177][^<>] )*?)
\{
(?<position> -?\d+(?:\.\d+)? \s*)?
\Q$prefix\E
(?<grp>$grp_regexp)
\Q$postfix\E
\}
}
{
replacer_rpl($rpl, $+{unchanged},
$+{position}, $grp_regexp,
$+{grp});
}gsex){}
};
{
# This a rewrite of the above to perl 5.8
# (does not use $+{...} which was introduced in 5.010
# Look for: { position prefix group format postfix }
while($s =~
s{( (?: ^|\177> ) (?: [^\177]*|[\177][^<>] )*?)
\{
(-?\d+(?:\.\d+)? \s*)?
\Q$prefix\E
($grp_regexp)
\Q$postfix\E
($format_regexp)
\}
}
{
replacer_rpl($rpl, $1, $2, $grp_regexp, $3, $+);
}gsex){}
# Look for: { position prefix group postfix }
# (Same above - except "format")
while($s =~
s{( (?: ^|\177> ) (?: [^\177]*|[\177][^<>] )*?)
\{
(-?\d+(?:\.\d+)? \s*)?
\Q$prefix\E
($grp_regexp)
\Q$postfix\E
\}
}
{
replacer_rpl($rpl, $1, $2, $grp_regexp, $3);
}gsex){}
}
} else {
my ($prefix,$grp_regexp,$postfix) =
$rpl =~ /^( [^(]* ) # Prefix - e.g. {%%
( \(.*\) )? # Group capture regexp - e.g (.*)
( [^)]* )$ # Postfix - e.g }
/xs;
q {
# Regexp using named captures - kept for documentation
# Look for: prefix group postfix
while($s =~
s{(?<unchanged> (?: ^|\177> ) (?: [^\177]*|[\177][^<>] )*?)
(?<position>)
\Q$prefix\E \s*
(?<grp>$grp_regexp)
\Q$postfix\E
}
{
replacer_rpl($rpl, $+{unchanged}, $+{position},
$grp_regexp, $+{grp});
}gsex){};
};
{
# This a rewrite of the above to perl 5.8
# (does not use $+{...} which was introduced in 5.010
# Look for: prefix group postfix
while($s =~
s{( (?: ^|\177> ) (?: [^\177]*|[\177][^<>] )*?)
()
\Q$prefix\E \s*
($grp_regexp)
\Q$postfix\E
}
{
replacer_rpl($rpl, $1, $2, $grp_regexp, $3);
}gsex){};
}
}
}
# Perl positional replacement fields {=1.2 perlexpr =}
while($s =~
s{ \177< # {=
(-?\d+(?:\.\d+)\s*) # position
(([^\177]+|\177\177)*) # perl expr
\177> # =}
}
{ replacer($2, '', $1,''); }gsex){};
return $s;
}
my $class = shift; my $class = shift;
my $commandref = shift; my $commandref = shift;
my $read_from = shift; my $read_from = shift;
@ -13296,6 +13588,7 @@ sub new($) {
my ($replacecount_ref, $len_ref); my ($replacecount_ref, $len_ref);
my @command = @$commandref; my @command = @$commandref;
my $seq = 1; my $seq = 1;
# Replace replacement strings with {= perl expr =} # Replace replacement strings with {= perl expr =}
# '{=' 'perlexpr' '=}' => '{= perlexpr =}' # '{=' 'perlexpr' '=}' => '{= perlexpr =}'
@command = merge_rpl_parts(@command); @command = merge_rpl_parts(@command);
@ -13312,104 +13605,13 @@ sub new($) {
# Skip if undefined # Skip if undefined
defined($_) or next; defined($_) or next;
# Escape \177 => \177\176 # Escape \177 => \177\176
$Global::escape_string_present += s/\177/\177\176/g; $_ = escape_177($_);
# Needs to match rightmost left parens (Perl defaults to leftmost) # {= perl expr =} => \177< perl expr \177>
# to deal with: {={==} and {={==}=} $_ = replace_parens($_);
# Replace {= -> \177< and =} -> \177> # Replace rpl-definitions with the corresponding perl code
# $_ = replace_rpl_def($_);
# Complex way to do:
# s/{=(.*)=}/\177<$1\177>/g
# which would not work
s[\Q$Global::parensleft\E # Match {=
# Match . unless the next string is {= or =}
# needed to force matching the shortest {= =}
((?:(?! \Q$Global::parensleft\E|\Q$Global::parensright\E ).)*?)
\Q$Global::parensright\E ] # Match =}
{\177<$1\177>}gxs;
for my $rpl (sort { length $b <=> length $a } keys %Global::rpl) {
# Replace long --rpl's before short ones, as a short may be a
# substring of a long:
# --rpl '% s/a/b/' --rpl '%% s/b/a/'
#
# Replace the shorthand string (--rpl)
# with the {= perl expr =}
#
# Avoid searching for shorthand strings inside existing {= perl expr =}
#
# Replace $$1 in {= perl expr =} with groupings in shorthand string
#
# --rpl '{/(\.\S+)/(\.\S+)} s/$$1/$$2/g;'
# echo {/.tar/.gz} ::: UU.tar.gz
my ($prefix,$grp_regexp,$postfix) =
$rpl =~ /^( [^(]* ) # Prefix - e.g. {%%
( \(.*\) )? # Group capture regexp - e.g (.*)
( [^)]* )$ # Postfix - e.g }
/xs;
$grp_regexp ||= '';
my $rplval = $Global::rpl{$rpl};
while(s{( (?: ^|\177> ) (?: [^\177]*|[\177][^<>] )*? )
# Don't replace after \177 unless \177>
\Q$prefix\E $grp_regexp \Q$postfix\E}
{
# The start remains the same
my $unchanged = $1;
# Dummy entry to start at 1.
my @grp = (1);
# $2 = first ()-group in $grp_regexp
# Put $2 in $grp[1], Put $3 in $grp[2]
# so first ()-group in $grp_regexp is $grp[1];
for(my $i = 2; defined $grp[$#grp]; $i++) {
push @grp, eval '$'.$i;
}
my $rv = $rplval;
# replace $$1 with $_pAr_gRp1, $$2 with $_pAr_gRp2
# in the code to be executed
$rv =~ s/\$\$ (\d+)/\$_pAr_gRp$1/gx;
# prepend with $_pAr_gRp1 = perlquote($1),
my $set_args = "";
for(my $i = 1;defined $grp[$i]; $i++) {
$set_args .= "\$_pAr_gRp$i = \"" .
::perl_quote_scalar($grp[$i]) . "\";";
}
$unchanged . "\177<" . $set_args . $rv . "\177>"
}gxes) {
}
# Do the same for the positional replacement strings
$posrpl = $rpl;
if($posrpl =~ s/^\{//) {
# Only do this if the shorthand start with {
$prefix=~s/^\{//;
# Don't replace after \177 unless \177>
while(s{( (?: ^|\177> ) (?: [^\177]*|[\177][^<>] )*? )
\{(-?\d+) \s* \Q$prefix\E $grp_regexp \Q$postfix\E}
{
# The start remains the same
my $unchanged = $1;
my $position = $2;
# Dummy entry to start at 1.
my @grp = (1);
# $3 = first ()-group in $grp_regexp
# Put $3 in $grp[1], Put $4 in $grp[2]
# so first ()-group in $grp_regexp is $grp[1];
for(my $i = 3; defined $grp[$#grp]; $i++) {
push @grp, eval '$'.$i;
}
my $rv = $rplval;
# replace $$1 with $_pAr_gRp1, $$2 with $_pAr_gRp2
# in the code to be executed
$rv =~ s/\$\$ (\d+)/\$_pAr_gRp$1/gx;
# prepend with $_pAr_gRp1 = perlquote($1),
my $set_args = "";
for(my $i = 1;defined $grp[$i]; $i++) {
$set_args .= "\$_pAr_gRp$i = \"" .
::perl_quote_scalar($grp[$i]) . "\";";
}
$unchanged . "\177<" . $position . $set_args . $rv . "\177>"
}gxes) {
}
}
}
} }
# Add {} if no replacement strings in @command # Add {} if no replacement strings in @command
($replacecount_ref, $len_ref, @command) = ($replacecount_ref, $len_ref, @command) =
replacement_counts_and_lengths($transfer_files, $return_files, replacement_counts_and_lengths($transfer_files, $return_files,
@ -13445,40 +13647,7 @@ sub new($) {
}, ref($class) || $class; }, ref($class) || $class;
} }
sub merge_rpl_parts($) {
# '{=' 'perlexpr' '=}' => '{= perlexpr =}'
# Input:
# @in = the @command as given by the user
# Uses:
# $Global::parensleft
# $Global::parensright
# Returns:
# @command with parts merged to keep {= and =} as one
my @in = @_;
my @out;
my $l = quotemeta($Global::parensleft);
my $r = quotemeta($Global::parensright);
while(@in) {
my $s = shift @in;
$_ = $s;
# Remove matching (right most) parens
while(s/(.*)$l.*?$r/$1/os) {}
if(/$l/o) {
# Missing right parens
while(@in) {
$s .= " ".shift @in;
$_ = $s;
while(s/(.*)$l.*?$r/$1/os) {}
if(not /$l/o) {
last;
}
}
}
push @out, $s;
}
return @out;
}
sub replacement_counts_and_lengths($$@) { sub replacement_counts_and_lengths($$@) {
# Count the number of different replacement strings. # Count the number of different replacement strings.

View file

@ -134,7 +134,7 @@ B<Bash, Csh, or Tcsh aliases>: Use B<env_parallel>.
B<Zsh, Fish, Ksh, and Pdksh functions and aliases>: Use B<env_parallel>. B<Zsh, Fish, Ksh, and Pdksh functions and aliases>: Use B<env_parallel>.
=item B<{}> =item B<{}> (alpha testing)
Input line. Input line.
@ -155,7 +155,7 @@ See also: B<--plus> B<{.}> B<{/}> B<{//}> B<{/.}> B<{#}> B<{%}>
B<{>I<n>B<}> B<{=>I<perl expression>B<=}> B<{>I<n>B<}> B<{=>I<perl expression>B<=}>
=item B<{.}> =item B<{.}> (alpha testing)
Input line without extension. Input line without extension.
@ -173,7 +173,7 @@ The replacement string B<{.}> can be changed with B<--extensionreplace>
See also: B<{}> B<--extensionreplace> See also: B<{}> B<--extensionreplace>
=item B<{/}> =item B<{/}> (alpha testing)
Basename of input line. Basename of input line.
@ -183,7 +183,7 @@ directory part removed.
See also: B<{}> B<--basenamereplace> See also: B<{}> B<--basenamereplace>
=item B<{//}> =item B<{//}> (alpha testing)
Dirname of input line. Dirname of input line.
@ -193,7 +193,7 @@ line. See B<dirname>(1).
See also: B<{}> B<--dirnamereplace> See also: B<{}> B<--dirnamereplace>
=item B<{/.}> =item B<{/.}> (alpha testing)
Basename of input line without extension. Basename of input line without extension.
@ -204,7 +204,7 @@ B<{/}> and B<{.}>.
See also: B<{}> B<--basenameextensionreplace> See also: B<{}> B<--basenameextensionreplace>
=item B<{#}> =item B<{#}> (alpha testing)
Sequence number of the job to run. Sequence number of the job to run.
@ -214,7 +214,7 @@ job being run. It contains the same number as $PARALLEL_SEQ.
See also: B<{}> B<--seqreplace> See also: B<{}> B<--seqreplace>
=item B<{%}> =item B<{%}> (alpha testing)
Job slot number. Job slot number.
@ -249,7 +249,7 @@ Notice how {%} and $PARALLEL_JOBSLOT differ in the retry run of C and D.
See also: B<{}> B<--jobs> B<--slotreplace> See also: B<{}> B<--jobs> B<--slotreplace>
=item B<{>I<n>B<}> =item B<{>I<n>B<}> (alpha testing)
Argument from input source I<n> or the I<n>'th argument. Argument from input source I<n> or the I<n>'th argument.
@ -263,7 +263,7 @@ See also: B<{}> B<{>I<n>.B<}> B<{>I<n>/B<}> B<{>I<n>//B<}>
B<{>I<n>/.B<}> B<--colsep> B<{>I<n>/.B<}> B<--colsep>
=item B<{>I<n>.B<}> =item B<{>I<n>.B<}> (alpha testing)
Argument from input source I<n> or the I<n>'th argument without Argument from input source I<n> or the I<n>'th argument without
extension. extension.
@ -278,7 +278,7 @@ extension removed.
See also: B<{>I<n>B<}> B<{.}> See also: B<{>I<n>B<}> B<{.}>
=item B<{>I<n>/B<}> =item B<{>I<n>/B<}> (alpha testing)
Basename of argument from input source I<n> or the I<n>'th argument. Basename of argument from input source I<n> or the I<n>'th argument.
@ -292,7 +292,7 @@ directory (if any) removed.
See also: B<{>I<n>B<}> B<{/}> See also: B<{>I<n>B<}> B<{/}>
=item B<{>I<n>//B<}> =item B<{>I<n>//B<}> (alpha testing)
Dirname of argument from input source I<n> or the I<n>'th argument. Dirname of argument from input source I<n> or the I<n>'th argument.
@ -305,7 +305,7 @@ the I<n>'th argument (when used with B<-N>). See B<dirname>(1).
See also: B<{>I<n>B<}> B<{//}> See also: B<{>I<n>B<}> B<{//}>
=item B<{>I<n>/.B<}> =item B<{>I<n>/.B<}> (alpha testing)
Basename of argument from input source I<n> or the I<n>'th argument Basename of argument from input source I<n> or the I<n>'th argument
without extension. without extension.
@ -321,7 +321,7 @@ directory (if any) and extension removed.
See also: B<{>I<n>B<}> B<{/.}> See also: B<{>I<n>B<}> B<{/.}>
=item B<{=>I<perl expression>B<=}> =item B<{=>I<perl expression>B<=}> (alpha testing)
Replace with calculated I<perl expression>. Replace with calculated I<perl expression>.
@ -438,7 +438,7 @@ See also: B<--rpl> B<--parens> B<{}> B<{=>I<n> I<perl expression>B<=}>
B<--filter> B<--filter>
=item B<{=>I<n> I<perl expression>B<=}> =item B<{=>I<n> I<perl expression>B<=}> (alpha testing)
Positional equivalent to B<{=>I<perl expression>B<=}>. Positional equivalent to B<{=>I<perl expression>B<=}>.
@ -447,6 +447,27 @@ To understand positional replacement strings see B<{>I<n>B<}>.
See also: B<{=>I<perl expression>B<=}> B<{>I<n>B<}> See also: B<{=>I<perl expression>B<=}> B<{>I<n>B<}>
=item B<{>I<rpl>:I<format>B<}> (alpha testing)
Format replacement string.
Use I<format> to format I<rpl>. I<format> is a format string used in
B<printf>. I<rpl> is a replacement string.
Examples:
{#:%04d} - Job number ({#}) with 4 digits prepended with 0
{%:%02d} - Job slot ({%}) with 2 digits prepended with 0
{:%6s} - Input line ({}) right aligned 6 chars wide
{/:%12s} - Basename ({/}) right aligned 12 chars wide
{2:%8.2f} - Second input source ({2}) 8 chars wide, 2 decimals
Format strings also works on replacement strings defined via B<--rpl>
that start with '{'.
See also: B<{}> B<{>I<n>B<}> B<--rpl>
=item B<:::> I<arguments> =item B<:::> I<arguments>
Use arguments on the command line as input source. Use arguments on the command line as input source.
@ -840,7 +861,7 @@ B<--trim n>.
I<regexp> is a Perl Regular Expression: I<regexp> is a Perl Regular Expression:
https://perldoc.perl.org/perlre.html https://perldoc.perl.org/perlre.html
See also: B<--csv> B<{>I<n>B<}> B<--trim> B<--link> See also: B<--csv> B<{>I<n>B<}> B<--trim> B<--link> B<--match>
=item B<--combineexec> I<name> =item B<--combineexec> I<name>
@ -921,7 +942,7 @@ See also: B<--compress>
Treat input as CSV-format. Treat input as CSV-format.
B<--colsep> sets the field delimiter. It works very much like B<--colsep> sets the field delimiter. B<--csv> works very much like
B<--colsep> except it deals correctly with quoting. Compare: B<--colsep> except it deals correctly with quoting. Compare:
echo '"1 big, 2 small","2""x4"" plank",12.34' | echo '"1 big, 2 small","2""x4"" plank",12.34' |
@ -936,9 +957,9 @@ Even quoted newlines are parsed correctly:
echo 'Line 2 in field 1";value 2') | echo 'Line 2 in field 1";value 2') |
parallel --csv --colsep ';' echo Field 1: {1} Field 2: {2} parallel --csv --colsep ';' echo Field 1: {1} Field 2: {2}
When used with B<--pipe> only pass full CSV-records. When used with B<--pipe> it will only pass full CSV-records.
See also: B<--pipe> B<--link> B<{>I<n>B<}> B<--colsep> B<--header> See also: B<--pipe> B<--link> B<{>I<n>B<}> B<--colsep> B<--header> B<--match>
=item B<--ctag> (obsolete: use B<--color> B<--tag>) =item B<--ctag> (obsolete: use B<--color> B<--tag>)
@ -979,10 +1000,10 @@ See also: TIME POSTFIXES B<--retries> B<--ssh-delay>
=item B<-d> I<delim> =item B<-d> I<delim>
Input items are terminated by I<delim>. Input records are terminated by I<delim>.
The specified delimiter may be characters, C-style character escapes The specified delimiter may be characters, C-style character escapes
such as \n, or octal or hexadecimal escape codes. Octal and such as \n, or octal (\012) or hexadecimal (\x0A) escape codes. Octal and
hexadecimal escape codes are understood as for the printf command. hexadecimal escape codes are understood as for the printf command.
See also: B<--colsep> See also: B<--colsep>
@ -1775,6 +1796,38 @@ If in doubt use B<-X> as that will most likely do what is needed.
See also: B<-X> B<--xargs> See also: B<-X> B<--xargs>
=item B<--match> I<regexp> (alpha testing)
Match input source with regexp to set replacement fields.
With B<--match> you can often avoid pre-processing your input with
B<awk> or similar to extract the relevant fields.
You can access each capture group i.e. the parenthesis in regexp
'(...)' with a replacement field. The replacement fields are named
B<{m.n}> where m is the input source and n is the capture group
number:
parallel --match '(.*),(.*)_(.*)' echo {1.2} {1.3} {1.1} \
::: Gold,Heart_of
parallel --match '(.*),' --match '([a-z]+)' echo {1.1}{2.1} \
::: Milli,bar ::: 10ways
To reuse a B<--match> simply use B<+n> where n is the input
source. E.g. B<+2> for the second:
parallel --match +2 --match '([A-Za-z]+)' echo {1.1} {2.1} \
::: /Improbability/ ::: 10drive
To only set B<--match> for input source 2, make a dummy B<--match> for
input source 1:
parallel --match '' --match '([a-z]+)' echo {1} {2.1} \
::: Telephone ::: 10sanitizer
See also: B<{>I<n>B<}> B<--colsep>
=item B<--memfree> I<size> =item B<--memfree> I<size>
Minimum memory free when starting another job. Minimum memory free when starting another job.
@ -2738,10 +2791,10 @@ the replacement string and adding a regular expression between the
parenthesis. The matching string will be inserted as $$1: parenthesis. The matching string will be inserted as $$1:
parallel --rpl '{%(.*?)} s/$$1//' echo {%.tar.gz} ::: my.tar.gz parallel --rpl '{%(.*?)} s/$$1//' echo {%.tar.gz} ::: my.tar.gz
parallel --rpl '{:%(.+?)} s:$$1(\.[^/]+)*$::' \ parallel --rpl '{:+(.+?)} s:$$1(\.[^/]+)*$::' \
echo {:%_file} ::: my_file.tar.gz echo {:+_file} ::: my_file.tar.gz
parallel -n3 --rpl '{/:%(.*?)} s:.*/(.*)$$1(\.[^/]+)*$:$1:' \ parallel -n3 --rpl '{/:+(.*?)} s:.*/(.*)$$1(\.[^/]+)*$:$1:' \
echo job {#}: {2} {2.} {3/:%_1} ::: a/b.c c/d.e f/g_1.h.i echo job {#}: {2} {2.} {3/:+_1} ::: a/b.c c/d.e f/g_1.h.i
You can even use multiple matches: You can even use multiple matches:

View file

@ -788,8 +788,10 @@ mixes. Combined with B<paexec_reorder> output order can be the same as
input order. In certain situations B<paexec> will eat the last newline input order. In certain situations B<paexec> will eat the last newline
of standard output. of standard output.
There seems to be no way to make 4 jobs run on a remote server with 4 There seems to be no way to have the number og jobs depend on the
cores and 16 jobs on a remote server with 16 cores. number of CPU threads in a mixed server setup: E.g run 4 jobs on a
remote server with 4 cores and 16 jobs on a remote server with 16
cores.
=head3 EXAMPLES FROM man paexec =head3 EXAMPLES FROM man paexec
@ -1504,10 +1506,67 @@ user uses Rust parallel it will overwrite this file.
If /tmp/parallel runs full during the run, Rust parallel does not If /tmp/parallel runs full during the run, Rust parallel does not
report this, but finishes with success - thereby risking data loss. report this, but finishes with success - thereby risking data loss.
https://github.com/mmstick/parallel https://github.com/mmstick/parallel
(Last checked: 2016-08) (Last checked: 2016-08)
=head2 DIFFERENCES BETWEEN parallelion AND GNU Parallel
Summary (see legend above):
=over
=item - (I2) - I4 - - -
=item M1 - M3 - - M6
=item - O2 O3 - O5 (O6) - x x
=item E1 - - (E4) E5 - - E8 ?
=item - - - - - - - - -
=item - -
=back
I2: I was unable to cannot get B<parallelion> to read from a file.
O6: There is extra output if a job fails.
E4: The default number of parallel jobs is the number of cpu threads.
-- is needed to force args not be parsed as options:
parallelion 'echo {}' -- Runs without -v
parallelion 'echo {}' Runs with -v
The commands are run through B<ion> shell.
Ctrl-C does not stop processing.
The B<--log> is similar to syslog - not a table.
The progressbar is nice.
B<parallelion> is fast: 0.1 ms/job. Similar to B<parallel-bash>.
=head3 EXAMPLES FROM parallelion
1$ parallelion -progress 'echo {}' {1..1000}
1$ parallel --bar echo {} ::: {1..1000}
2$ parallelion -progress 'echo {}' $(seq 1 999)
2$ seq 1 999 | parallel --bar echo
https://gitlab.redox-os.org/redox-os/parallel
(Last checked: 2024-08)
=head2 DIFFERENCES BETWEEN Rush AND GNU Parallel =head2 DIFFERENCES BETWEEN Rush AND GNU Parallel
B<rush> (https://github.com/shenwei356/rush) is written in Go and B<rush> (https://github.com/shenwei356/rush) is written in Go and
@ -1972,6 +2031,8 @@ https://github.com/gdm85/coshell
=head2 DIFFERENCES BETWEEN spread AND GNU Parallel =head2 DIFFERENCES BETWEEN spread AND GNU Parallel
Summary (see legend above):
=over =over
=item - - - I4 - - I7 =item - - - I4 - - I7
@ -3591,7 +3652,7 @@ not, all the long jobs may end up in the same queue, so you may see:
time parallel -P4 sleep {} time parallel -P4 sleep {}
(7 seconds) (7 seconds)
$ printf "%b\n" 1 1 1 4 1 1 1 4 1 1 1 4 | $ printf "%b\n" 1 1 1 4 1 1 1 4 1 1 1 4 |
time ./parallel-bash.bash -p 4 -c sleep {} time parallel-bash -p 4 -c sleep {}
(12 seconds) (12 seconds)
Because it uses bash lists, the total number of jobs is limited to Because it uses bash lists, the total number of jobs is limited to

View file

@ -179,6 +179,11 @@ each file should be named the first letter of the file name.
parallel 'mkdir -p {=s/(.).*/$1/=}; mv {} {=s/(.).*/$1/=}' ::: * parallel 'mkdir -p {=s/(.).*/$1/=}; mv {} {=s/(.).*/$1/=}' ::: *
In practice you would probably not use a perl replacement string but
instead B<--match>:
parallel --match '(.)' 'mkdir -p {1.1} && mv {} {1.1}' ::: *
=head2 EXAMPLE: Composed command with multiple input sources =head2 EXAMPLE: Composed command with multiple input sources
@ -189,6 +194,97 @@ You have a dir with files named as 24 hours in 5 minute intervals:
::: {00..23} ::: {00..55..5} ::: {00..23} ::: {00..55..5}
=head2 EXAMPLE: Match parts of input source
Match first initial and last name:
parallel --match '(.).* (.*)' echo {1.1}. {1.2} \
::: "Arthur Dent" "Ford Prefect" "Tricia McMillan" "Zaphod Beeblebrox"
Re-arrange (stupid) US date format into (nice) ISO-8601:
parallel --match '(.*)/(.*)/(.*)' echo {1.3}-{1.1:%02d}-{1.2:%02d} \
::: 12/31/1969 1/19/2038 6/1/2002
Match url into domain and path:
parallel --match 'https://(.*?)/(.*)' echo Domain: {1.1} Path: {1.2} \
::: https://example.com/dir/page https://gnu.org/s/parallel
Get URLs into dirs named by 2nd level domain name,
e.g. https://www.gnu.org/s/parallel will be put into the dir gnu.org.
cat urls | parallel --match '//[^/]*?([^/.]+\.[^/.]+)/' \
'mkdir -p {1.1} && cd {1.1} && wget {}'
Match host.domain:port from a log file:
cat log |
parallel --match '\b([a-z0-9.]+):(\d+)\b' echo host:{1.1} port:{1.2}
Reorder comma-separated values:
parallel --match '(.*),(.*)' echo Second: {1.2}, First: {1.1} \
::: "Arthur,Babel fish" "Adams,Betelgeuse" "Arcturan,Bistro"
Capitalize word:
parallel --match '([a-z])([a-z]*) ([a-z])([a-z]*)' \
echo '{=1.1 $_=uc($_) =}{1.2} {=1.3 $_=uc($_) =}{1.4}' \
::: "pan galactic" "gargle blaster"
Make an international dialing prefix table:
dial=(
"DK(Denmark) 00,45"
"US(United States) 011,1"
"JP(Japan) 010,81"
"AU(Australia) 0011,61"
"CA(Canada) 011,1"
"RU(Russia) 810,7"
"TH(Thailand) 001,66"
"TW(Taiwan) 002,886"
)
parallel --match '(.*)\((.*)\) (.*),(.*)' --match +1 \
echo From {1.1}/{1.2} to {2.1}/{2.2} dial {1.3}-{2.4} \
::: "${dial[@]}" ::: "${dial[@]}"
Note how input source 2 reuses the B<--match> from input source 1.
=head2 EXAMPLE: Replacement fields from CSV file with headers
This is an advanced example. You have:
Date;Name;Location
3/8/1978;"Beeblebrox; Zaphod";"Betelgeuse V"
10/12/1979;"Dent; Arthur";Earth
1/5/1981;Slartibartfast;Magrathea
You want:
Z. Beeblebrox: 1978-03-08/BET
A. Dent: 1979-10-12/EAR
Slartibartfast: 1981-01-05/MAG
Run:
parallel --csv --colsep ';' --header : --match "(\d+)/(\d+)/(\d+)" \
--match "^([^;]+)(; (.))?" --match "(...)" \
echo '{=Name.3 s/(.)/$1. /;=}'{Name.1}: \
{Date.3}-{Date.1:%02d}-{Date.2:%02d}/'{=Location.1 $_=uc =}' \
:::: people.csv
B<--csv> parses the input as CSV with B<--colsep ;> as the separator -
dealing correctly with quoted strings. The input is split into 3
columns. B<--header :> makes the columns available as
B<{>I<columnname>B<}>. Each column has their corresponding B<--match>
so each field can be accessed as
B<{>I<columnname>.I<#>B<}>. B<s/(.)/$1. /> is a perl expression that
appends ". " if the name has an initial. B<:%02d> formats single
digits as two digits. B<uc> upper cases the argument.
=head2 EXAMPLE: Calling Bash functions =head2 EXAMPLE: Calling Bash functions
If the composed command is longer than a line, it becomes hard to If the composed command is longer than a line, it becomes hard to
@ -319,6 +415,10 @@ If the barcode does not contain '_R1', you can do:
parallel --plus myprocess {} {/_R1/_R2} ::: *_R1.fq.gz parallel --plus myprocess {} {/_R1/_R2} ::: *_R1.fq.gz
Or you can use B<--match>:
parallel --match '(.*)_R1(.*)' myprocess {} {1.1}_R2{1.2} ::: *_R1.fq.gz
=head2 EXAMPLE: Removing strings from the argument =head2 EXAMPLE: Removing strings from the argument
@ -341,6 +441,10 @@ To remove a string anywhere you can use regular expressions with
parallel --plus echo {/demo_/} ::: demo_mycode remove_demo_here parallel --plus echo {/demo_/} ::: demo_mycode remove_demo_here
You can often also use B<--match>:
parallel --match '(.*)demo_(.*)' echo {1.1}{1.2} ::: demo_mycode remove_demo_here
=head2 EXAMPLE: Download 24 images for each of the past 30 days =head2 EXAMPLE: Download 24 images for each of the past 30 days
@ -430,6 +534,7 @@ downloads 10 videos in parallel.
B<{=> and B<=}> mark a perl expression. B<pQ> perl-quotes the B<{=> and B<=}> mark a perl expression. B<pQ> perl-quotes the
string. B<date +%FT%T> is the date in ISO8601 with time. string. B<date +%FT%T> is the date in ISO8601 with time.
=head2 EXAMPLE: Save output in ISO8601 dirs =head2 EXAMPLE: Save output in ISO8601 dirs
Save output from B<ps aux> every second into dirs named Save output from B<ps aux> every second into dirs named
@ -446,7 +551,7 @@ and the rest a ' ' a perl expression is used to look at the 3rd input
source. If the value modulo 2 is 1: Use ":" otherwise use " ": source. If the value modulo 2 is 1: Use ":" otherwise use " ":
parallel -k echo {1}'{=3 $_=$_%2?":":" "=}'{2}{3} \ parallel -k echo {1}'{=3 $_=$_%2?":":" "=}'{2}{3} \
::: {0..12} ::: {0..5} ::: {0..9} ::: {0..23} ::: {0..5} ::: {0..9}
=head2 EXAMPLE: Aggregating content of files =head2 EXAMPLE: Aggregating content of files

View file

@ -137,7 +137,7 @@ GetOptions(
"help" => \$opt::dummy, "help" => \$opt::dummy,
) || exit(255); ) || exit(255);
$Global::progname = ($0 =~ m:(^|/)([^/]+)$:)[1]; $Global::progname = ($0 =~ m:(^|/)([^/]+)$:)[1];
$Global::version = 20240722; $Global::version = 20240822;
if($opt::version) { version(); exit 0; } if($opt::version) { version(); exit 0; }
# Remove -D and --parallel=N # Remove -D and --parallel=N
my @s = (grep { ! /^-D$|^--parallel=\S+$/ } my @s = (grep { ! /^-D$|^--parallel=\S+$/ }

View file

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

View file

@ -10,13 +10,20 @@ install_packages() {
INSTALL=${INSTALL:-"sudo apt -y install"} INSTALL=${INSTALL:-"sudo apt -y install"}
# The testsuite depends on this: # The testsuite depends on this:
test_pkgs="imagemagick expect autossh sshpass jq libpod-simple-perl" test_pkgs="imagemagick expect pv zenity"
test_pkgs="$test_pkgs pod2pdf gawk lua5.3 clisp php-cli nodejs" test_pkgs="$test_pkgs autossh sshpass lsh-client lsh-utils jq"
test_pkgs="$test_pkgs mono-csharp-shell libevent-dev tcl libtext-csv-perl" test_pkgs="$test_pkgs libpod-simple-perl libtext-csv-perl"
test_pkgs="$test_pkgs libtest-nowarnings-perl pod2pdf"
test_pkgs="$test_pkgs xemacs21"
test_pkgs="$test_pkgs gawk lua5.3 clisp php-cli nodejs guile-3.0 fsharp"
test_pkgs="$test_pkgs mono-csharp-shell octave openjdk-11-jdk-headless tcl"
test_pkgs="$test_pkgs racket libevent-dev python-is-python3"
test_pkgs="$test_pkgs xterm libc6-i386 libcrypt1:i386 virtualbox" test_pkgs="$test_pkgs xterm libc6-i386 libcrypt1:i386 virtualbox"
test_pkgs="$test_pkgs libtest-nowarnings-perl xemacs21 pv zenity" test_pkgs="$test_pkgs torsocks net-tools"
test_pkgs="$test_pkgs lsh-client lsh-utils torsocks net-tools python-is-python3" test_pkgs="$test_pkgs reiserfsprogs btrfs-progs exfatprogs f2fs-tools"
test_pkgs="$test_pkgs reiserfsprogs btrfs-progs exfatprogs f2fs-tools xfsprogs" test_pkgs="$test_pkgs xfsprogs"
test_snap_pkgs="groovy julia"
# Debian package # Debian package
packaging_pkgs="dpkg-dev build-essential debhelper osc cvs automake" packaging_pkgs="dpkg-dev build-essential debhelper osc cvs automake"
@ -30,14 +37,14 @@ install_packages() {
sql_pkgs="$sql_pkgs libdbd-mysql-perl rlwrap" sql_pkgs="$sql_pkgs libdbd-mysql-perl rlwrap"
# Compression # Compression
compression_pkgs="zstd clzip liblz4-tool lzop pigz pixz gzip plzip pbzip2" compression_pkgs="zstd clzip lz4 lzop pigz pixz gzip plzip pbzip2"
compression_pkgs="$compression_pkgs lzma xz-utils lzip bzip2 lbzip2 lrzip" compression_pkgs="$compression_pkgs lzma xz-utils lzip bzip2 lbzip2 lrzip"
compression_pkgs_missing="pxz" compression_pkgs_missing="pxz"
# Shells # Shells
# (csh = bsd-csh that is broken) # (csh = bsd-csh that is broken)
# (ksh93 gone) # (ash ksh93 gone)
shell_pkgs="ash dash fdclone fish fizsh ksh ksh93u+m mksh posh rc rush sash" shell_pkgs="dash fdclone fish fizsh ksh ksh93u+m mksh posh rc rush sash"
shell_pkgs="$shell_pkgs tcsh yash zsh busybox-static" shell_pkgs="$shell_pkgs tcsh yash zsh busybox-static"
# Databases # Databases
@ -59,6 +66,13 @@ install_packages() {
echo Packages missing echo Packages missing
return 1 return 1
fi fi
if sudo parallel -j1 snap install --classic ::: $test_snap_pkgs; then
# OK
true
else
echo Packages missing: $test_snap_pkgs
return 1
fi
if parallel -j1 --tag --halt now,success=1 $INSTALL ::: $alt_database ; then if parallel -j1 --tag --halt now,success=1 $INSTALL ::: $alt_database ; then
# OK # OK
true true
@ -85,7 +99,11 @@ install_sqlite2() {
cd /tmp/sqlite2 cd /tmp/sqlite2
git clone https://github.com/sqlite/sqlite git clone https://github.com/sqlite/sqlite
cd sqlite cd sqlite
git checkout a2cfd57491ca357eda2a206cbcd94c6e6c7d7d93 git checkout cc83b6e071ba69943f175a038d2625ae3d6abf47
# New GCC needs <stdlib.h>, so add that
perl -i -pe \
's/echo (.#include <stdio.h>)(.)/printf $1\\n#include <stdlib.h>\\n$2/' \
Makefile.in
./configure --prefix=/usr/local && make -j && sudo make install ./configure --prefix=/usr/local && make -j && sudo make install
} }
@ -131,7 +149,7 @@ install_oracle_client() {
echo 'export ORACLE_SID=XE' >> ~/.bashrc echo 'export ORACLE_SID=XE' >> ~/.bashrc
fi fi
# libaio # libaio
sudo apt install libaio1t64 sudo apt install libaio1 || sudo apt install libaio1t64
sudo ln -s libaio.so.1t64 /usr/lib/x86_64-linux-gnu/libaio.so.1 sudo ln -s libaio.so.1t64 /usr/lib/x86_64-linux-gnu/libaio.so.1
perl -MCPAN -e 'install DBD::Oracle' perl -MCPAN -e 'install DBD::Oracle'
# TODO set up vagrant oracle server # TODO set up vagrant oracle server
@ -139,6 +157,7 @@ install_oracle_client() {
( (
cd vagrant-projects/OracleDatabase/23.4.0-Free cd vagrant-projects/OracleDatabase/23.4.0-Free
echo export VM_ORACLE_PWD=`goodpasswd` >> ~/.passwords echo export VM_ORACLE_PWD=`goodpasswd` >> ~/.passwords
echo export 'ORACLE_PWD=$VM_ORACLE_PWD' >> ~/.passwords
. ~/.passwords . ~/.passwords
vagrant up vagrant up
) )
@ -275,7 +294,7 @@ add_server_to_hosts() {
} }
vagrant_up() { vagrant_up() {
parallel -j0 --ll --tag 'cd {};vagrant up' ::: vagrant/*/* parallel -j0 --ll --tag 'cd {//};vagrant up' ::: vagrant/*/*/Vagrantfile
# After this you should be able to 'vagrant ssh' # After this you should be able to 'vagrant ssh'
} }
@ -346,9 +365,9 @@ add_key_to_auth_key() {
cat ~/.ssh/*pub >> ~/.ssh/authorized_keys cat ~/.ssh/*pub >> ~/.ssh/authorized_keys
parallel --tag --timeout 20 sshaddvagrant ::: $vagrant_names parallel-server{1..4} parallel --tag --timeout 20 sshaddvagrant ::: $vagrant_names parallel-server{1..4}
parallel --tag --timeout 20 sshaddlocal ::: $ips lo localhost parallel --tag --timeout 20 sshaddlocal ::: $ips lo localhost
parallel --tag --timeout 5 ssh vagrant@{} echo OK ::: $vagrant_names parallel-server{1..4} parallel --tag --timeout 5 ssh vagrant@{} echo ssh vagrant@{} OK ::: $vagrant_names parallel-server{1..4}
parallel ssh vagrant@{} 'echo "PATH=\$PATH:\$HOME/bin" >> .bashrc' ::: $vagrant_names parallel ssh vagrant@{} 'echo "PATH=\$PATH:\$HOME/bin" >> .bashrc' ::: $vagrant_names
parallel --tag --timeout 5 ssh {} echo OK ::: $ips lo localhost parallel --tag --timeout 5 ssh {} echo ssh {} OK ::: $ips lo localhost
} }
install_rsync_on_vagrant() { install_rsync_on_vagrant() {
@ -503,8 +522,9 @@ lsh_setup() {
mkdir -p .lsh mkdir -p .lsh
rm -f ".lsh/yarrow-seed-file" rm -f ".lsh/yarrow-seed-file"
lsh-make-seed -o ".lsh/yarrow-seed-file" lsh-make-seed -o ".lsh/yarrow-seed-file"
lsh -c aes256-ctr --sloppy-host-authentication \ # TODO need to enter 'y' here
--capture-to ~/.lsh/host-acls -l $user server echo Added host-auth lsh --sloppy-host-authentication \
--capture-to ~/.lsh/host-acls -l $user $server echo Added host-auth
rm -f .lsh/identity .lsh/identity.pub rm -f .lsh/identity .lsh/identity.pub
lsh-keygen | lsh-writekey -c none lsh-keygen | lsh-writekey -c none
export_key_to_local_users() { export_key_to_local_users() {
@ -655,6 +675,8 @@ rsync_versions() {
autoreconf -fiv autoreconf -fiv
# strlcat strlcpy # strlcat strlcpy
perl -i -pe 's/void (strlc..)/void _$1/' util.c perl -i -pe 's/void (strlc..)/void _$1/' util.c
# Force FNM_CASEFOLD to be set
export CFLAGS='-Wno-incompatible-pointer-types -D_GNU_SOURCE=1'
configure_make_proto_install $1 configure_make_proto_install $1
} }
build-v3.0.0() { build-v3.0.0() {
@ -685,7 +707,7 @@ rsync_versions() {
install_tangetools() { install_tangetools() {
( (
git clone https://codeberg.org/tange/tangetools git clone https://git.data.coop/tange/tangetools
cd tangetools && cd tangetools &&
make && make &&
sudo make install sudo make install

View file

@ -74,7 +74,6 @@ start_centos3
ssh $SSHLOGIN1 cat .ssh/id_rsa.pub | ssh $SSHLOGIN2 'cat >>.ssh/authorized_keys' ssh $SSHLOGIN1 cat .ssh/id_rsa.pub | ssh $SSHLOGIN2 'cat >>.ssh/authorized_keys'
ssh $SSHLOGIN1 'cat .ssh/id_rsa.pub >>.ssh/authorized_keys; chmod 600 .ssh/authorized_keys' ssh $SSHLOGIN1 'cat .ssh/id_rsa.pub >>.ssh/authorized_keys; chmod 600 .ssh/authorized_keys'
ssh $SSHLOGIN1 'ssh -o StrictHostKeyChecking=no localhost true; ssh -o StrictHostKeyChecking=no '$SSHLOGIN2' true;' ssh $SSHLOGIN1 'ssh -o StrictHostKeyChecking=no localhost true; ssh -o StrictHostKeyChecking=no '$SSHLOGIN2' true;'
ssh $SSHLOGIN1 parallel echo {}: ssh $SSHLOGIN1 parallel ::: OK
) & ) &
. env_parallel.bash . env_parallel.bash
@ -105,3 +104,4 @@ env_parallel --env par_shellshock_bug --env LC_ALL --env SSHLOGIN2 \
-S $SSHLOGIN1 --tag '{} 2>&1' \ -S $SSHLOGIN1 --tag '{} 2>&1' \
::: $(compgen -A function | grep par_ | sort) \ ::: $(compgen -A function | grep par_ | sort) \
2> >(grep -Ev 'shopt: not found|declare: not found|No xauth data') 2> >(grep -Ev 'shopt: not found|declare: not found|No xauth data')
ssh $SSHLOGIN1 parallel echo {}: ssh $SSHLOGIN1 parallel ::: OK

View file

@ -5,7 +5,7 @@
# Jobs that depend on the hardware # Jobs that depend on the hardware
# (e.g number of CPU threads, terminal type) # (e.g number of CPU threads, terminal type)
par__environment_too_big_ash() { par__environment_too_big_dash() {
myscript=$(cat <<'_EOF' myscript=$(cat <<'_EOF'
echo 'bug #50815: env_parallel should warn if the environment is too big' echo 'bug #50815: env_parallel should warn if the environment is too big'
len_var=60 len_var=60
@ -17,7 +17,7 @@ par__environment_too_big_ash() {
len_fun_quote=1 len_fun_quote=1
len_fun_quote_remote=1 len_fun_quote_remote=1
. `which env_parallel.ash`; . `which env_parallel.dash`;
repeat() { repeat() {
# Repeat input string n*1000 times # Repeat input string n*1000 times
@ -72,7 +72,7 @@ par__environment_too_big_ash() {
bigfunc() { true; } bigfunc() { true; }
_EOF _EOF
) )
stdout ssh ash@lo "$myscript" | perl -pe 's/(\d)\d\d\d\d/${1}XXXX/g' stdout ssh dash@lo "$myscript" | perl -pe 's/(\d)\d\d\d\d/${1}XXXX/g'
} }
par__environment_too_big_dash() { par__environment_too_big_dash() {
@ -155,13 +155,13 @@ par__environment_too_big_zsh() {
. `which env_parallel.zsh`; . `which env_parallel.zsh`;
len_var=16 len_var=16
len_var_remote=$len_var-15 len_var_remote=$len_var
len_var_quote=$len_var len_var_quote=$len_var
len_var_quote_remote=$len_var-15 len_var_quote_remote=$len_var-15
len_fun=18 len_fun=18
len_fun_remote=$len_fun-10 len_fun_remote=$len_fun-10
len_fun_quote=$len_fun len_fun_quote=$len_fun
len_fun_quote_remote=$len_fun-10 len_fun_quote_remote=$len_fun-5
repeat_() { repeat_() {
# Repeat input string n*1000 times # Repeat input string n*1000 times

View file

@ -16,6 +16,25 @@ export -f stdsort
# Test amount of parallelization # Test amount of parallelization
# parallel --shuf --jl /tmp/myjl -j1 'export JOBS={1};'bash tests-to-run/parallel-local-0.3s.sh ::: {1..16} ::: {1..5} # parallel --shuf --jl /tmp/myjl -j1 'export JOBS={1};'bash tests-to-run/parallel-local-0.3s.sh ::: {1..16} ::: {1..5}
par_parcat_args_stdin() {
echo 'bug #51690: parcat: read args from stdin'
# parcat reads files line by line
# so this does not work if TMPDIR contains \n
TMPDIR='/tmp/Y/ </i'
mkdir -p "$TMPDIR"
tmp1=$(mktemp)
tmp2=$(mktemp)
echo OK1 > "$tmp1"
echo OK2 > "$tmp2"
(echo "$tmp1"; echo "$tmp2") | parcat | sort
rm "$tmp1" "$tmp2"
}
par_--rpl_group_bug() {
echo 'Bug in --rpl group: $$1_'
parallel --rpl '{a(.)b} s/$$1_c/o/g' echo {aDb} ::: GD_cD_cd
}
par_env_parallel_recordenv() { par_env_parallel_recordenv() {
echo 'bug #65127: env_parallel --record-env and --recordenv should do the same.' echo 'bug #65127: env_parallel --record-env and --recordenv should do the same.'
. env_parallel.bash . env_parallel.bash
@ -801,20 +820,6 @@ par_X_eta_div_zero() {
perl -ne '/../ and print' perl -ne '/../ and print'
} }
par_parcat_args_stdin() {
echo 'bug #51690: parcat: read args from stdin'
# parcat reads files line by line
# so this does not work if TMPDIR contains \n
TMPDIR='/tmp/Y/ </i'
mkdir -p "$TMPDIR"
tmp1=$(mktemp)
tmp2=$(mktemp)
echo OK1 > "$tmp1"
echo OK2 > "$tmp2"
(echo "$tmp1"; echo "$tmp2") | parcat | sort
rm "$tmp1" "$tmp2"
}
par_parcat_rm() { par_parcat_rm() {
echo 'bug #51691: parcat --rm remove fifo when opened' echo 'bug #51691: parcat --rm remove fifo when opened'
tmp1=$(mktemp) tmp1=$(mktemp)

View file

@ -8,7 +8,75 @@
# Each should be taking 10-30s and be possible to run in parallel # Each should be taking 10-30s and be possible to run in parallel
# I.e.: No race conditions, no logins # I.e.: No race conditions, no logins
par_tee_too_many_args() { par_--match() {
export PARALLEL=-k
echo Basic match
parallel --match '(.*)/([a-zA-Z]+)' echo {1.2} {1.1} \
::: works/This "works, too"/This
echo Simple CSV-parsing
echo https://gnu.org/s/parallel,myfile |
parallel --match '(.*),(.*)' echo url={1.1} filename={1.2}
echo Dummy --match for input source 1, real --match for input source 2
parallel --match '' --match '(.*)/([A-Z]+)' echo {2.1} {1} ::: works ::: This/SKIP
echo Reuse --match
parallel --match +2 --match '([A-Z]+)' echo {2.1} {1.1} \
::: ignoreOK ::: ignoreALL
echo With --header :
parallel --header : --match +2 --match '([A-Z]+)' echo {B.1} {A.1} \
::: A ignoreOK ::: B ignoreALL
echo Failure to match/Partial match
parallel --match '([a-z]+)' echo {1.1} ::: matches FAILS MATCHESpartly
echo Test error: missing --match
parallel --match 'dummy' echo {2.1} ::: should fail
echo 'Test error: \001 in match'
ctrl_a=$(perl -e 'printf "%c",1')
parallel --match "$ctrl_a" echo {1.1} ::: fail
echo From man parallel_examples
parallel --match '(.)' --dr 'mkdir -p {1.1} && mv {} {1.1}' ::: afile bfile adir
parallel --match '(.).* (.*)' echo {1.1}. {1.2} \
::: "Arthur Dent" "Ford Prefect" "Tricia McMillan" "Zaphod Beeblebrox"
parallel --match '(.*)/(.*)/(.*)' echo {1.3}-{1.1}-{1.2} \
::: 12/31/1969 01/19/2038 06/01/2002
parallel --match 'https://(.*?)/(.*)' echo Domain: {1.1} Path: {1.2} \
::: https://example.com/dir/page https://gnu.org/s/parallel
parallel --match '(.*),(.*)' echo Second: {1.2}, First: {1.1} \
::: "Arthur,Babel fish" "Adams,Betelgeuse" "Arcturan,Bistro"
parallel --match '([a-z])([a-z]*) ([a-z])([a-z]*)' \
echo '{=1.1 $_=uc($_) =}{1.2} {=1.3 $_=uc($_) =}{1.4}' \
::: "pan galactic" "gargle blaster"
dial=(
"DK(Denmark) 00,45"
"US(United States) 011,1"
"JP(Japan) 010,81"
"AU(Australia) 0011,61"
"CA(Canada) 011,1"
"RU(Russia) 810,7"
"TH(Thailand) 001,66"
"TW(Taiwan) 002,886"
)
parallel --match '(.*)\((.*)\) (.*),(.*)' --match +1 \
echo From {1.1}/{1.2} to {2.1}/{2.2} dial {1.3}-{2.4} \
::: "${dial[@]}" ::: "${dial[@]}"
echo Capture groups CSV-parsing - not implemented
echo https://gnu.org/s/parallel,myfile |
parallel --match '(?<url>.*),(?<file>.*)' echo url={url} filename={file}
echo Non posistional replacement fields - not implemented
parallel --match '(.*),(.*)_(.*)' echo {.2} {.3} {.1} ::: Gold,Heart_of
echo TODO Ignore case?
}
par__tee_too_many_args() {
echo '### Fail if there are more arguments than --jobs' echo '### Fail if there are more arguments than --jobs'
seq 11 | stdout parallel -k --tag --pipe -j4 --tee grep {} ::: {1..4} seq 11 | stdout parallel -k --tag --pipe -j4 --tee grep {} ::: {1..4}
tmp=`mktemp` tmp=`mktemp`
@ -48,7 +116,7 @@ par__load_from_PARALLEL() {
zcat | sort -n | md5sum zcat | sort -n | md5sum
} }
par_quote_special_results() { par__quote_special_results() {
echo "### Test --results on file systems with limited UTF8 support" echo "### Test --results on file systems with limited UTF8 support"
export LC_ALL=C export LC_ALL=C
doit() { doit() {
@ -217,7 +285,7 @@ par_opt_arg_eaten() {
printf '1\0002\0003\0004\0005\000' | stdout parallel -k -0 -i repl echo repl OK printf '1\0002\0003\0004\0005\000' | stdout parallel -k -0 -i repl echo repl OK
} }
par_nice() { par__nice() {
echo 'Check that --nice works' echo 'Check that --nice works'
# parallel-20160422 OK # parallel-20160422 OK
check_for_2_bzip2s() { check_for_2_bzip2s() {
@ -342,7 +410,7 @@ par_END() {
(echo include this; echo END; echo not this) | parallel -k --eof END echo (echo include this; echo END; echo not this) | parallel -k --eof END echo
} }
par_xargs_compat() { par__xargs_compat() {
echo xargs compatibility echo xargs compatibility
a_b-c() { echo a_b; echo c; } a_b-c() { echo a_b; echo c; }
a_b_-c-d() { echo a_b' '; echo c; echo d; } a_b_-c-d() { echo a_b' '; echo c; echo d; }
@ -597,7 +665,7 @@ par_shellquote() {
"$shell" -c perl\ -e\ \'print\ pack\(\"c\*\",1..255\)\'\ \|\ parallel\ -0\ --shellquote "$shell" -c perl\ -e\ \'print\ pack\(\"c\*\",1..255\)\'\ \|\ parallel\ -0\ --shellquote
} }
export -f doit export -f doit
parallel --tag -q -k doit {} ::: ash bash csh dash fish fizsh ksh2020 ksh93 lksh mksh posh rzsh sash sh static-sh tcsh yash zsh csh tcsh parallel --tag -q -k doit {} ::: bash csh dash fish fizsh ksh2020 ksh93 lksh mksh posh rzsh sash sh static-sh tcsh yash zsh csh tcsh
} }
par_tmp_full() { par_tmp_full() {

View file

@ -433,7 +433,7 @@ par_testquote() {
export -f testquote export -f testquote
# "sash script" does not work # "sash script" does not work
# "sash -f script" does, but is currently not supported by GNU Parallel # "sash -f script" does, but is currently not supported by GNU Parallel
parallel --tag -k testquote ::: ash bash csh dash fdsh fish fizsh ksh ksh93 mksh posh rbash rc rzsh "sash -f" sh static-sh tcsh yash zsh parallel --tag -k testquote ::: bash csh dash fdsh fish fizsh ksh ksh93 mksh posh rbash rc rzsh "sash -f" sh static-sh tcsh yash zsh
# "fdsh" is currently not supported by GNU Parallel: # "fdsh" is currently not supported by GNU Parallel:
# It gives ioctl(): Interrupted system call # It gives ioctl(): Interrupted system call
parallel --tag -k testquote ::: fdsh parallel --tag -k testquote ::: fdsh

View file

@ -290,7 +290,7 @@ par_exit_code() {
echo '# Ideally the command should return the same' echo '# Ideally the command should return the same'
echo '# with or without parallel' echo '# with or without parallel'
# These give the same exit code prepended with 'true;' or not # These give the same exit code prepended with 'true;' or not
OK="ash csh dash fish fizsh ksh2020 posh rc sash sh tcsh" OK="csh dash fish fizsh ksh2020 posh rc sash sh tcsh"
# These do not give the same exit code prepended with 'true;' or not # These do not give the same exit code prepended with 'true;' or not
BAD="bash ksh93 mksh static-sh yash zsh" BAD="bash ksh93 mksh static-sh yash zsh"
doit $OK $BAD doit $OK $BAD
@ -530,7 +530,7 @@ par_memfree() {
par_test_detected_shell() { par_test_detected_shell() {
echo '### bug #42913: Dont use $SHELL but the shell currently running' echo '### bug #42913: Dont use $SHELL but the shell currently running'
shells="ash bash csh dash fish fizsh ksh ksh93 mksh posh rbash rush rzsh sash sh static-sh tcsh yash zsh" shells="bash csh dash fish fizsh ksh ksh93 mksh posh rbash rush rzsh sash sh static-sh tcsh yash zsh"
test_unknown_shell() { test_unknown_shell() {
shell="$1" shell="$1"
tmp="/tmp/test_unknown_shell_$shell" tmp="/tmp/test_unknown_shell_$shell"

View file

@ -8,7 +8,31 @@
# Each should be taking 3-10s and be possible to run in parallel # Each should be taking 3-10s and be possible to run in parallel
# I.e.: No race conditions, no logins # I.e.: No race conditions, no logins
par_pty() { par_format_string() {
echo Format string + {}
parallel echo 12.346 98.765 == {:%.3f} ::: 12.34567 ::: 98.76543
echo Format string + {.}
parallel echo 12.000 98.000 == {.:%.3f} ::: 12.34567 ::: 98.76543
echo Format string + {2}
parallel echo 98.765 == {2:%.3f} ::: 12.34567 ::: 98.76543
echo Format string + {2.}
parallel echo 98.000 == {2.:%.3f} ::: 12.34567 ::: 98.76543
echo Format string + {2.}{}
parallel echo 98.00012.34567 98.76543 == {2.:%.3f}{} ::: 12.34567 ::: 98.76543
echo Dynamic replacement strings
echo {dyn} + format
parallel --rpl '{/(\d)/(.*)} s/$$1/$$2/g;' echo 12.44 98.77 == {/3/44:%8.2f} ::: 12.34567 ::: 98.76543
echo {Positional dyn} + format
parallel --rpl '{/(\d)/(.*)} s/$$1/$$2/g;' echo 12.44 98.77 98.765 == {/3/44:%8.2f} {2:%.3f} ::: 12.34567 ::: 98.76543
echo {dyn__postfix}
parallel --rpl '{/(\d)/(.*)__} s/$$1/$$2/g;' echo 12.444567 98.765444 == {/3/44__} ::: 12.34567 ::: 98.76543
echo {dyn__postfix} + format
parallel --rpl '{/(\d)/(.*)__} s/$$1/$$2/g;' echo 00012.44 == {/3/44__:%08.2f} ::: 12.34567
echo dyn without {}
parallel --rpl '/(\d)/(.*)} s/$$1/$$2/g;' echo 12.444567 98.765444 == /3/44} ::: 12.34567 ::: 98.76543
}
par_pty() {
parallel 'echo {} > {}' ::: 1 2 3 parallel 'echo {} > {}' ::: 1 2 3
echo 1 > files echo 1 > files
echo 'xargs Expect: 3 1' echo 'xargs Expect: 3 1'
@ -336,7 +360,7 @@ par__test_cpu_detection_topology() {
' '
} }
cpu20() { cpu20() {
echo '1-16-24-16 8*2 thr + 8*1 thr Intel Core i7-13700HX (user submit)' echo '1-16-24-16 8*2 thr + 8*1 thr Intel Core i7-13700HX (user submit - detected wrong)'
echo ' echo '
KLUv/QRovBQA1tU+IGBJ2wa2Edh2H/3+WsW1pqAixNFSp4VaZLdSOgQfA5ACMwA1ADcATO1J KLUv/QRovBQA1tU+IGBJ2wa2Edh2H/3+WsW1pqAixNFSp4VaZLdSOgQfA5ACMwA1ADcATO1J
9EsI6f//P65ZU+hjFfNJ/bjGHYG/E5T1fjgw67nF/3R4Jh4lRFYqGeWTyiMq/BEIRzMLcSll 9EsI6f//P65ZU+hjFfNJ/bjGHYG/E5T1fjgw67nF/3R4Jh4lRFYqGeWTyiMq/BEIRzMLcSll
@ -1000,7 +1024,7 @@ par__test_cpu_detection_cpuinfo() {
' | unpack ' | unpack
} }
cpu20() { cpu20() {
echo '1-16-24-16 8*2 thr + 8*1 thr Intel Core i7-13700HX (user submit)' echo '1-16-24-16 8*2 thr + 8*1 thr Intel Core i7-13700HX (user submit - detected wrong)'
echo ' echo '
KLUv/QRoXSEApjqgIyBtrAMBfUS1S7lyNhBkqR+VRby1HGkcIfAfpUMCoQwIwQaLnACNAJAA KLUv/QRoXSEApjqgIyBtrAMBfUS1S7lyNhBkqR+VRby1HGkcIfAfpUMCoQwIwQaLnACNAJAA
LX4Zn3Z86/pt/rpvlN4QgwxJGnClhXdPzld527SrNxLxc8heffK1xyxR1NLZEqah89q9Q9Ze LX4Zn3Z86/pt/rpvlN4QgwxJGnClhXdPzld527SrNxLxc8heffK1xyxR1NLZEqah89q9Q9Ze
@ -1306,7 +1330,7 @@ par__test_cpu_detection_lscpu() {
' | unpack ' | unpack
} }
cpu20() { cpu20() {
echo '1-16-24-16 8*2 thr + 8*1 thr Intel Core i7-13700HX (user submit)' echo '1-16-24-16 8*2 thr + 8*1 thr Intel Core i7-13700HX (user submit - detected wrong)'
echo ' echo '
KLUv/QRoxSAACkYADCkAb7g52NOaaG9pWWVp1EK7UMah1zodCwjsgmz4tfgH/PMzcUVV1Ypq KLUv/QRoxSAACkYADCkAb7g52NOaaG9pWWVp1EK7UMah1zodCwjsgmz4tfgH/PMzcUVV1Ypq
XsoAswCsALDiYJkWExTubWeGpVgcGJDHJOIB4lGeZGEwGAIeDEcjgwMIhuIWQu3JUsEBg1HA XsoAswCsALDiYJkWExTubWeGpVgcGJDHJOIB4lGeZGEwGAIeDEcjgwMIhuIWQu3JUsEBg1HA

View file

@ -4,6 +4,8 @@
# #
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
# On a 64G machine this uses 24G RAM + 5 min
make stopvm >/dev/null 2>/dev/null make stopvm >/dev/null 2>/dev/null
TMPDIR=${TMPDIR:-/tmp} TMPDIR=${TMPDIR:-/tmp}
mkdir -p $TMPDIR mkdir -p $TMPDIR

20
testsuite/tests-to-run/parallel-local-race02.sh Normal file → Executable file
View file

@ -6,6 +6,24 @@
# These fail regularly # These fail regularly
env_underscore() {
echo WHY DOES THIS FAIL?
echo '### --env _'
echo ignored_var >> ~/.parallel/ignored_vars
unset $(compgen -A function | grep par_)
ignored_var="ERROR IF COPIED"
export ignored_var
fUbAr="OK from fubar" parallel -S parallel@lo --env _ echo '$fUbAr $ignored_var' ::: test
echo 'In csh this may fail with ignored_var: Undefined variable.'
fUbAr="OK from fubar" parallel -S csh@lo --env _ echo '$fUbAr $ignored_var' ::: test
echo '### --env _ with explicit mentioning of normally ignored var $ignored_var'
ignored_var="should be copied"
fUbAr="OK from fubar" parallel -S parallel@lo --env ignored_var,_ echo '$fUbAr $ignored_var' ::: test
fUbAr="OK from fubar" parallel -S csh@lo --env ignored_var,_ echo '$fUbAr $ignored_var' ::: test
}
env_underscore
ctrlz_should_suspend_children() { ctrlz_should_suspend_children() {
echo 'bug #46120: Suspend should suspend (at least local) children' echo 'bug #46120: Suspend should suspend (at least local) children'
echo 'it should burn 1.9 CPU seconds, but no more than that' echo 'it should burn 1.9 CPU seconds, but no more than that'
@ -236,6 +254,6 @@ par_continuous_output() {
} }
export -f $(compgen -A function | grep par_) export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | sort | compgen -A function | G "$@" | grep par_ | sort |
# parallel --joblog /tmp/jl-`basename $0` -j10 --tag -k '{} 2>&1' # parallel --joblog /tmp/jl-`basename $0` -j10 --tag -k '{} 2>&1'
parallel -o --joblog /tmp/jl-`basename $0` -j1 --tag -k '{} 2>&1' parallel -o --joblog /tmp/jl-`basename $0` -j1 --tag -k '{} 2>&1'

View file

@ -201,7 +201,7 @@ do_dburl() {
perl -pe 's/ +/ /g' | perl -pe 's/ +/ /g' |
# SQLITE par_empty Error: near line 1: in prepare, no such table: TBL99999 (1) # SQLITE par_empty Error: near line 1: in prepare, no such table: TBL99999 (1)
# SQLITE par_empty Parse error near line 1: no such table: TBL99999 # SQLITE par_empty Parse error near line 1: no such table: TBL99999
perl -pe 's/Error: near line 1: in prepare, (.*) .../Parse error near line 1: /' perl -pe 's/Error: near line 1: in prepare, (.*)/Parse error near line 1: $1/'
} }
export -f do_dburl export -f do_dburl
parallel -vk --tag do_dburl ::: CSV INFLUX MYSQL PG SQLITE parallel -vk --tag do_dburl ::: CSV INFLUX MYSQL PG SQLITE

View file

@ -75,22 +75,6 @@ par_--nonall_results() {
rm -r "$tmp" rm -r "$tmp"
} }
par_env_underscore() {
echo '### --env _'
echo ignored_var >> ~/.parallel/ignored_vars
unset $(compgen -A function | grep par_)
ignored_var="should not be copied"
export ignored_var
fUbAr="OK FUBAR" parallel -S parallel@lo --env _ echo '$fUbAr $ignored_var' ::: test
echo 'In csh this may fail with ignored_var: Undefined variable.'
fUbAr="OK FUBAR" parallel -S csh@lo --env _ echo '$fUbAr $ignored_var' ::: test 2>&1
echo '### --env _ with explicit mentioning of normally ignored var $ignored_var'
ignored_var="should be copied"
fUbAr="OK FUBAR" parallel -S parallel@lo --env ignored_var,_ echo '$fUbAr $ignored_var' ::: test
fUbAr="OK FUBAR" parallel -S csh@lo --env ignored_var,_ echo '$fUbAr $ignored_var' ::: test 2>&1
}
par_warn_when_exporting_func() { par_warn_when_exporting_func() {
echo 'bug #40137: SHELL not bash: Warning when exporting funcs' echo 'bug #40137: SHELL not bash: Warning when exporting funcs'
myrun() { myrun() {
@ -100,7 +84,7 @@ par_warn_when_exporting_func() {
PARALLEL_SHELL=$1 parallel --env myfunc -S lo myfunc ::: OK PARALLEL_SHELL=$1 parallel --env myfunc -S lo myfunc ::: OK
} }
export -f myrun export -f myrun
parallel -k --tag myrun ::: /bin/{sh,bash} /usr/bin/{ash,csh,dash,ksh,tcsh,zsh} parallel -k --tag myrun ::: /bin/{sh,bash} /usr/bin/{csh,dash,ksh,tcsh,zsh}
} }
par_exporting_in_zsh() { par_exporting_in_zsh() {
@ -237,5 +221,5 @@ par_z_multiple_hosts_repeat_arg() {
export -f $(compgen -A function | grep par_) export -f $(compgen -A function | grep par_)
compgen -A function | G par_ "$@" | LC_ALL=C sort | compgen -A function | G par_ "$@" | LC_ALL=C sort |
parallel --timeout 250 -j6 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1' | parallel --timeout 250 -j75% --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1' |
perl -pe 's:/usr/bin:/bin:g;' perl -pe 's:/usr/bin:/bin:g;'

View file

@ -46,7 +46,8 @@ par_--ssh_autossh() {
stdout parallel -S csh@lo --trc {}.out touch {}.out ::: foo_autossh stdout parallel -S csh@lo --trc {}.out touch {}.out ::: foo_autossh
ls foo_autossh* ls foo_autossh*
rm foo_autossh* rm foo_autossh*
) | grep -Ev 'Warning: remote port forwarding failed for listen' ) | grep -Ev 'Warning: remote port forwarding failed for listen' |
perl -pe 's/Receiver=[0-9.]+/Receiver=9.9.9/g'
} }
par_fish_exit() { par_fish_exit() {

View file

@ -29,63 +29,6 @@ export -f retry
## par_*_man = tests from the man page ## par_*_man = tests from the man page
# #
par__man_ash() {
echo '### ash'
myscript=$(cat <<'_EOF'
echo "### From man env_parallel"
. `which env_parallel.ash`;
alias myecho='echo aliases with \= \& \" \!'" \'"
myecho work
env_parallel myecho ::: work
env_parallel -S server myecho ::: work
env_parallel --env myecho myecho ::: work
env_parallel --env myecho -S server myecho ::: work
alias multiline='echo multiline
echo aliases with \= \& \" \!'" \'"
multiline work
env_parallel multiline ::: work
env_parallel -S server multiline ::: work
env_parallel --env multiline multiline ::: work
env_parallel --env multiline -S server multiline ::: work
alias multiline="dummy"
# Functions are not supported in ash
myvar='variables with = & " !'" '"
echo "$myvar" work
env_parallel echo '"$myvar"' ::: work
env_parallel -S server echo '"$myvar"' ::: work
env_parallel --env myvar echo '"$myvar"' ::: work
env_parallel --env myvar -S server echo '"$myvar"' ::: work
multivar='multiline
variables with = & " !'" '"
echo "$multivar" work
env_parallel echo '"$multivar"' ::: work
env_parallel -S server echo '"$multivar"' ::: work
env_parallel --env multivar echo '"$multivar"' ::: work
env_parallel --env multivar -S server echo '"$multivar"' ::: work
# Arrays are not supported in ash
# Exporting of functions is not supported
# env_parallel --argsep --- env_parallel -k echo ::: multi level --- env_parallel
env_parallel ::: true false true false
echo exit value $? should be 2
env_parallel --no-such-option 2>&1 >/dev/null
# Sleep 1 to delay output to stderr to avoid race
echo exit value $? should be 255 `sleep 1`
_EOF
)
ssh ash@lo "$myscript"
}
par__man_bash() { par__man_bash() {
echo '### bash' echo '### bash'
@ -624,55 +567,6 @@ _EOF
ssh zsh@lo "$myscript" ssh zsh@lo "$myscript"
} }
par_--env_underscore_ash() {
echo '### ash'
myscript=$(cat <<'_EOF'
echo "### Testing of --env _"
alias not_copied_alias="echo BAD"
# not_copied_func() { echo BAD; };
not_copied_var=BAD
# not_copied_array=(BAD BAD BAD);
. `which env_parallel.ash`;
env_parallel --record-env;
alias myecho="echo \$myvar aliases";
# myfunc() { myecho functions $*; };
myvar="variables in";
# myarray=(and arrays in);
# env_parallel myfunc ::: work;
# env_parallel -S server myfunc ::: work;
env_parallel --env myvar,myecho myecho ::: work;
env_parallel --env myvar,myecho -S server myecho ::: work;
env_parallel --env _ myecho ::: work;
env_parallel --env _ -S server myecho ::: work;
env_parallel --env _ -S server not_copied_alias ::: error=OK;
# env_parallel --env _ -S server not_copied_func ::: error=OK;
env_parallel --env _ -S server echo \$not_copied_var ::: error=OK;
# env_parallel --env _ -S server echo \${not_copied_array[@]} ::: error=OK;
echo myvar >> ~/.parallel/ignored_vars;
env_parallel --env _ myecho ::: work;
env_parallel --env _ -S server myecho ::: work;
# echo myarray >> ~/.parallel/ignored_vars;
# env_parallel --env _ myfunc ::: work;
# env_parallel --env _ -S server myfunc ::: work;
echo myecho >> ~/.parallel/ignored_vars;
env_parallel --env _ myecho ::: work;
echo "OK if no myecho ^^^^^^^^^^^^^^^^^" >&2;
env_parallel --env _ -S server myecho ::: work;
echo "OK if no myecho ^^^^^^^^^^^^^^^^^" >&2;
# echo myfunc >> ~/.parallel/ignored_vars;
# env_parallel --env _ myfunc ::: work;
# echo "OK if no myfunc ^^^^^^^^^^^^^^^^^" >&2;
# env_parallel --env _ -S server myfunc ::: work;
# echo "OK if no myfunc ^^^^^^^^^^^^^^^^^" >&2;
_EOF
)
ssh ash@lo "$myscript"
}
par_--env_underscore_bash() { par_--env_underscore_bash() {
echo '### bash' echo '### bash'
myscript=$(cat <<'_EOF' myscript=$(cat <<'_EOF'
@ -1109,39 +1003,6 @@ _EOF
# + remote, locally # + remote, locally
# + variables, variables with funky content, arrays, assoc array, functions, aliases # + variables, variables with funky content, arrays, assoc array, functions, aliases
par_funky_ash() {
myscript=$(cat <<'_EOF'
. `which env_parallel.ash`;
myvar="myvar works"
funky=`perl -e "print pack \"c*\", 2..255"`
# Arrays not supported
# myarray=("" array_val2 3 "" 5 " space 6 ")
# typeset -A assocarr
# assocarr[a]=assoc_val_a
# assocarr[b]=assoc_val_b
alias alias_echo="echo 3 arg";
func_echo() {
echo $*;
echo "$myvar"
# echo "${myarray[5]}"
# echo ${assocarr[a]}
echo Funky-"$funky"-funky
}
env_parallel alias_echo ::: alias_works
# env_parallel func_echo ::: function_works
env_parallel -S ash@lo alias_echo ::: alias_works_over_ssh
# env_parallel -S ash@lo func_echo ::: function_works_over_ssh
echo
echo "$funky" | parallel --shellquote
_EOF
)
# Order is often different. Dunno why. So sort
ssh ash@lo "$myscript" 2>&1 | LC_ALL=C sort
}
par_funky_bash() { par_funky_bash() {
myscript=$(cat <<'_EOF' myscript=$(cat <<'_EOF'
. `which env_parallel.bash`; . `which env_parallel.bash`;
@ -1452,31 +1313,6 @@ _EOF
ssh zsh@lo "$myscript" 2>&1 | LC_ALL=C sort ssh zsh@lo "$myscript" 2>&1 | LC_ALL=C sort
} }
par_env_parallel_ash() {
myscript=$(cat <<'_EOF'
. `which env_parallel.ash`;
echo 'bug #50435: Remote fifo broke in 20150522'
# Due to $PARALLEL_TMP being transferred
OK=OK
echo data from stdin | env_parallel --pipe -S lo --fifo 'cat {} && echo $OK'
echo data from stdin | env_parallel --pipe -S lo --cat 'cat {} && echo $OK'
echo 'bug #52534: Tail of multiline alias is ignored'
alias myalias='echo alias line 1
echo alias line 2
echo alias line 3
'
alias myalias2='echo alias2 line 1
echo alias2 line 2
'
env_parallel myalias ::: myalias2
env_parallel -S lo myalias ::: myalias2
_EOF
)
# Order is often different. Dunno why. So sort
ssh ash@lo "$myscript" 2>&1 | LC_ALL=C sort
}
par_env_parallel_bash() { par_env_parallel_bash() {
myscript=$(cat <<'_EOF' myscript=$(cat <<'_EOF'
echo 'bug #50435: Remote fifo broke in 20150522' echo 'bug #50435: Remote fifo broke in 20150522'
@ -1670,10 +1506,6 @@ _EOF
ssh zsh@lo "$myscript" 2>&1 | LC_ALL=C sort ssh zsh@lo "$myscript" 2>&1 | LC_ALL=C sort
} }
par_environment_too_big_ash() {
echo moved to hwdep1.sh
}
par_environment_too_big_bash() { par_environment_too_big_bash() {
myscript=$(cat <<'_EOF' myscript=$(cat <<'_EOF'
echo 'bug #50815: env_parallel should warn if the environment is too big' echo 'bug #50815: env_parallel should warn if the environment is too big'
@ -1979,69 +1811,6 @@ par_environment_too_big_zsh() {
echo moved to hwdep1.sh echo moved to hwdep1.sh
} }
par_parset_ash() {
myscript=$(cat <<'_EOF'
echo 'parset'
. `which env_parallel.ash`
# Arrays not supported
# echo '### parset into array'
# parset arr1 echo ::: foo bar baz
# echo ${arr1[0]} ${arr1[1]} ${arr1[2]}
echo '### parset into vars with comma'
parset comma3,comma2,comma1 echo ::: baz bar foo
echo $comma1 $comma2 $comma3
echo '### parset into vars with space'
parset 'space3 space2 space1' echo ::: baz bar foo
echo $space1 $space2 $space3
echo '### parset with newlines'
parset 'newline3 newline2 newline1' seq ::: 3 2 1
echo "$newline1"
echo "$newline2"
echo "$newline3"
# Arrays not supported
# echo '### parset into indexed array vars'
# parset 'myarray[6],myarray[5],myarray[4]' echo ::: baz bar foo
# echo ${myarray[*]}
# echo ${myarray[4]} ${myarray[5]} ${myarray[6]}
echo '### env_parset'
myfun() {
myecho myfun "$@";
}
alias myecho='echo myecho "$myvar"'
myvar="myvar"
# Arrays not supported
# myarr=("myarr 0" "myarr 1" "myarr 2")
mynewline="`echo newline1;echo newline2;`"
# Arrays not supported
# env_parset arr1 myfun ::: foo bar baz
# echo "${arr1[0]} ${arr1[1]} ${arr1[2]}"
env_parset comma3,comma2,comma1 myecho ::: baz bar foo
echo "$comma1 $comma2 $comma3"
env_parset 'space3 space2 space1' myecho ::: baz bar foo
echo "$space1 $space2 $space3"
env_parset 'newline3 newline2 newline1' 'echo "$mynewline";seq' ::: 3 2 1
echo "$newline1"
echo "$newline2"
echo "$newline3"
# Arrays not supported
# env_parset 'myarray[6],myarray[5],myarray[4]' myfun ::: baz bar foo
# echo "${myarray[*]}"
# echo "${myarray[4]} ${myarray[5]} ${myarray[6]}"
parset a,b,c,d 'echo {};exit {}' ::: 0 1 1 0
echo Exit value 2 = $?
env_parset a,b,c,d 'echo {};exit {}' ::: 0 1 1 0
echo Exit value 2 = $?
_EOF
)
ssh ash@lo "$myscript"
}
par_parset_bash() { par_parset_bash() {
myscript=$(cat <<'_EOF' myscript=$(cat <<'_EOF'
echo 'parset' echo 'parset'
@ -2448,107 +2217,6 @@ _EOF
### env_parallel_session ### env_parallel_session
par_env_parallel_--session_ash() {
myscript=$(cat <<'_EOF'
. `which env_parallel.ash`
echo '### Test env_parallel --session'
level0var=l0var
# Arrays and functions not supported
# level0arr=(level0 array)
# level0func() { echo l0func; }
alias level0alias='echo l0alias'
env_parallel --session
level1var=l1var
# Arrays and functions not supported
# level1arr=(level1 array)
# level1func() { echo l1func; }
alias level1alias='echo l1alias'
echo '### level0 should be hidden, level1 should be transferred'
env_parallel -Slo 'echo $level0var; level0func; level0alias; echo ${level0arr[*]}' ::: fail
env_parallel 'echo $level0var; level0func; level0alias; echo ${level0arr[*]}' ::: fail
env_parallel -Slo 'echo $level1var; level1func; level1alias; echo ${level1arr[*]}' ::: OK
env_parallel 'echo $level1var; level1func; level1alias; echo ${level1arr[*]}' ::: OK
env_parallel --session
level2var=l2var
# Arrays and functions not supported
# level2arr=(level2 array)
# level2func() { echo l2func; }
alias level2alias='echo l2alias'
echo '### level0+1 should be hidden, level2 should be transferred'
env_parallel -Slo 'echo $level0var; level0func; level0alias; echo ${level0arr[*]}' ::: fail
env_parallel 'echo $level0var; level0func; level0alias; echo ${level0arr[*]}' ::: fail
env_parallel -Slo 'echo $level1var; level1func; level1alias; echo ${level1arr[*]}' ::: fail
env_parallel 'echo $level1var; level1func; level1alias; echo ${level1arr[*]}' ::: fail
env_parallel -Slo 'echo $level2var; level2func; level2alias; echo ${level2arr[*]}' ::: OK
env_parallel 'echo $level2var; level2func; level2alias; echo ${level2arr[*]}' ::: OK
env_parallel --endsession
echo '### level0 should be hidden, level1+2 should be transferred'
env_parallel -Slo 'echo $level0var; level0func; level0alias; echo ${level0arr[*]}' ::: fail
env_parallel 'echo $level0var; level0func; level0alias; echo ${level0arr[*]}' ::: fail
env_parallel -Slo 'echo $level1var; level1func; level1alias; echo ${level1arr[*]}' ::: OK
env_parallel 'echo $level1var; level1func; level1alias; echo ${level1arr[*]}' ::: OK
env_parallel -Slo 'echo $level2var; level2func; level2alias; echo ${level2arr[*]}' ::: OK
env_parallel 'echo $level2var; level2func; level2alias; echo ${level2arr[*]}' ::: OK
env_parallel --endsession
echo '### level0+1+2 should be transferred'
env_parallel -Slo 'echo $level0var; level0func; level0alias; echo ${level0arr[*]}' ::: OK
env_parallel 'echo $level0var; level0func; level0alias; echo ${level0arr[*]}' ::: OK
env_parallel -Slo 'echo $level1var; level1func; level1alias; echo ${level1arr[*]}' ::: OK
env_parallel 'echo $level1var; level1func; level1alias; echo ${level1arr[*]}' ::: OK
env_parallel -Slo 'echo $level2var; level2func; level2alias; echo ${level2arr[*]}' ::: OK
env_parallel 'echo $level2var; level2func; level2alias; echo ${level2arr[*]}' ::: OK
alias aliasbefore='echo before'
# Functions not supported
# varbefore='before'
# funcbefore() { echo 'before' "$@"; }
# Arrays not supported
# arraybefore=(array before)
env_parallel --session
# stuff defined
env_parallel aliasbefore ::: must_fail
env_parallel -S lo aliasbefore ::: must_fail
# Functions not supported
# env_parallel funcbefore ::: must_fail
# env_parallel -S lo funcbefore ::: must_fail
env_parallel echo '$varbefore' ::: no_before
env_parallel -S lo echo '$varbefore' ::: no_before
# Arrays not supported
# env_parallel echo '${arraybefore[*]}' ::: no_before
# env_parallel -S lo echo '${arraybefore[*]}' ::: no_before
alias aliasafter='echo after'
varafter='after'
# Functions not supported
# funcafter() { echo 'after' "$@"; }
# Arrays not supported
# arrayafter=(array after)
env_parallel aliasafter ::: aliasafter_OK
env_parallel -S lo aliasafter ::: aliasafter_OK
# Functions not supported
# env_parallel funcafter ::: funcafter_OK
# env_parallel -S lo funcafter ::: funcafter_OK
env_parallel echo '$varafter' ::: varafter_OK
env_parallel -S lo echo '$varafter' ::: varafter_OK
# Arrays not supported
# env_parallel echo '${arrayafter[*]}' ::: arrayafter_OK
# env_parallel -S lo echo '${arrayafter[*]}' ::: arrayafter_OK
unset PARALLEL_IGNORED_NAMES
_EOF
)
ssh ash@lo "$myscript"
}
par_env_parallel_--session_bash() { par_env_parallel_--session_bash() {
myscript=$(cat <<'_EOF' myscript=$(cat <<'_EOF'
echo '### Test env_parallel --session / --end-session' echo '### Test env_parallel --session / --end-session'

28
testsuite/tests-to-run/parallel-local-ssh9.sh Normal file → Executable file
View file

@ -4,30 +4,6 @@
# #
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
par_ash_embed() {
myscript=$(cat <<'_EOF'
echo '--embed'
parallel --embed | tac | perl -pe '
/^parallel/ and not $seen++ and s{^}{
echo \$b
parset a,b,c echo ::: ParsetOK ParsetOK ParsetOK
env_parallel echo ::: env_parallel_OK
env_parallel --env myvar echo {} --env \\\$myvar ::: env_parallel
myvar=OK
parallel echo ::: parallel_OK
PATH=/usr/sbin:/usr/bin:/sbin:/bin
# Do not look for parallel in /usr/local/bin
#. \`which env_parallel.ash\`
}
' | tac > parallel-embed
chmod +x parallel-embed
./parallel-embed
rm parallel-embed
_EOF
)
ssh ash@lo "$myscript"
}
par_bash_embed() { par_bash_embed() {
myscript=$(cat <<'_EOF' myscript=$(cat <<'_EOF'
echo '--embed' echo '--embed'
@ -159,8 +135,8 @@ par_env_parallel_big_env() {
env_parallel --session env_parallel --session
a=`rand | perl -pe 's/\0//g'| head -c 10000` a=`rand | perl -pe 's/\0//g'| head -c 10000`
env_parallel -Slo echo ::: OK 2>&1 env_parallel -Slo echo ::: OK 2>&1
a=`rand | perl -pe 's/\0//g'| head -c 20000` a=`rand | perl -pe 's/\0//g'| head -c 50000`
env_parallel -Slo echo should ::: fail 2>/dev/null || echo OK env_parallel -Slo echo THIS SHOULD ::: FAIL 2>/dev/null || echo OK
} }
par_no_route_to_host() { par_no_route_to_host() {

104
testsuite/tests-to-run/parallel-local21.sh Normal file → Executable file
View file

@ -234,6 +234,110 @@ EOF
rm "$script" rm "$script"
} }
par_shebang_wrap_groovy() {
script="$TMPDIR"/shebang_wrap_groovy
unset DISPLAY
cat <<'EOF' > "$script"
#!/usr/local/bin/parallel --shebang-wrap -k /snap/bin/groovy
println "Arguments: ${args.join(' ')}"
EOF
chmod 755 "$script"
"$script" arg1 arg2 "arg3.1 arg3.2"
rm "$script"
}
par_shebang_wrap_racket() {
script="$TMPDIR"/shebang_wrap_racket
unset DISPLAY
cat <<'EOF' > "$script"
#!/usr/local/bin/parallel --shebang-wrap -k /usr/bin/racket
#lang racket
;; Get the command-line arguments, skipping the script name
(define args (vector->list (current-command-line-arguments)))
;; Format the arguments as a string
(define formatted-args (string-join args " "))
;; Print the result
(printf "Arguments: ~a\n" formatted-args)
EOF
chmod 755 "$script"
"$script" arg1 arg2 "arg3.1 arg3.2"
rm "$script"
}
par_shebang_wrap_scheme() {
script="$TMPDIR"/shebang_wrap_scheme
unset DISPLAY
cat <<'EOF' > "$script"
#!/usr/local/bin/parallel --shebang-wrap -k /usr/bin/env guile
!#
(define (print-arguments args)
(display "Arguments: ")
(for-each (lambda (arg)
(display arg)
(display " "))
args)
(newline))
(print-arguments (cdr (command-line)))
EOF
chmod 755 "$script"
stdout "$script" arg1 arg2 "arg3.1 arg3.2" |
grep -v ';;;' | grep -v shebang_wrap_sche
rm "$script"
}
par_shebang_wrap_awk() {
script="$TMPDIR"/shebang_wrap_awk
unset DISPLAY
cat <<'EOF' > "$script"
#!/usr/local/bin/parallel --shebang-wrap -k /usr/bin/awk -f
BEGIN {
printf "Arguments: "
for (i = 1; i < ARGC; i++) {
printf "%s ", ARGV[i]
}
printf "\n"
}
EOF
chmod 755 "$script"
"$script" arg1 arg2 "arg3.1 arg3.2"
rm "$script"
}
par_shebang_wrap_fsharp() {
script="$TMPDIR"/shebang_wrap_fsharp.fsx
unset DISPLAY
cat <<'EOF' > "$script"
#!/usr/local/bin/parallel --shebang-wrap -k /usr/bin/fsharpi
let args = (System.Environment.GetCommandLineArgs()
|> Array.tail |> Array.tail |> Array.tail)
printfn "Arguments: %A" args
EOF
chmod 755 "$script"
"$script" arg1 arg2 "arg3.1 arg3.2"
rm "$script"
}
par_shebang_wrap_julia() {
script="$TMPDIR"/shebang_wrap_julia
unset DISPLAY
cat <<'EOF' > "$script"
#!/usr/local/bin/parallel --shebang-wrap -k /snap/bin/julia
println("Arguments: ", join(ARGS, " "))
EOF
chmod 755 "$script"
"$script" arg1 arg2 "arg3.1 arg3.2"
rm "$script"
}
par_shebang_wrap_clisp() { par_shebang_wrap_clisp() {
# clisp cannot handle dirs w/ shell wildcards # clisp cannot handle dirs w/ shell wildcards
TMPDIR=/tmp TMPDIR=/tmp

View file

@ -194,4 +194,4 @@ par_help() {
export -f $(compgen -A function | grep par_) export -f $(compgen -A function | grep par_)
compgen -A function | G par_ "$@" | LC_ALL=C sort | compgen -A function | G par_ "$@" | LC_ALL=C sort |
parallel --timeout 1000% -j0 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1' parallel --timeout 3000% -j0 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1'

View file

@ -14,7 +14,7 @@ par_sqlite() {
# create database & table # create database & table
sql $CMDSQL:///sqltest.$CMDSQL "CREATE TABLE foo(n INT, t TEXT);" sql $CMDSQL:///sqltest.$CMDSQL "CREATE TABLE foo(n INT, t TEXT);"
sql --list-tables $CMDSQL:///sqltest.$CMDSQL sql --list-tables $CMDSQL:///sqltest.$CMDSQL
file sqltest.$CMDSQL file sqltest.$CMDSQL | perl -pe 's/ version \d+//'
sql $CMDSQL:///sqltest.$CMDSQL "INSERT INTO foo VALUES(1,'Line 1');" sql $CMDSQL:///sqltest.$CMDSQL "INSERT INTO foo VALUES(1,'Line 1');"
sql $CMDSQL:///sqltest.$CMDSQL "INSERT INTO foo VALUES(2,'Line 2');" sql $CMDSQL:///sqltest.$CMDSQL "INSERT INTO foo VALUES(2,'Line 2');"
sql $CMDSQL:///sqltest.$CMDSQL "SELECT * FROM foo;" sql $CMDSQL:///sqltest.$CMDSQL "SELECT * FROM foo;"

2
testsuite/tests-to-run/sql03.sh Normal file → Executable file
View file

@ -111,7 +111,7 @@ par_listproc() {
echo "### Test --listproc" echo "### Test --listproc"
sql --listproc :oraunittest | sql --listproc :oraunittest |
perl -ne '/select 1 from dual|user_objects|user_tablespaces|connect_by_filtering/ and next; perl -ne '/select 1 from dual|user_objects|user_tablespaces|connect_by_filtering/ and next;
s/[21]\.\d+/1.99999/; s/[21 ]\.\d{5}/1.99999/;
s/ +/ /g; s/ +/ /g;
print' print'
sql --listproc $MYSQL_TEST_DBURL | sql --listproc $MYSQL_TEST_DBURL |

View file

@ -1,21 +1,3 @@
par__environment_too_big_ash bug #5XXXX: env_parallel should warn if the environment is too big
par__environment_too_big_ash OK_bigvar
par__environment_too_big_ash OK_bigvar_remote
par__environment_too_big_ash OK_bigvar_quote
par__environment_too_big_ash OK_bigvar_quote_remote
par__environment_too_big_ash OK_bigfunc
par__environment_too_big_ash OK_bigfunc_remote
par__environment_too_big_ash OK_bigfunc_quote
par__environment_too_big_ash OK_bigfunc_quote_remote
par__environment_too_big_ash Rest should fail - functions not supported in ash
par__environment_too_big_ash parallel: Error: Command line too long (7XXXX >= 6XXXX) at input 0: fail_bigvar
par__environment_too_big_ash parallel: Error: Command line too long (7XXXX >= 6XXXX) at input 0: fail_bigvar_remote
par__environment_too_big_ash parallel: Error: Command line too long (8XXXX >= 6XXXX) at input 0: fail_bigvar_quote
par__environment_too_big_ash parallel: Error: Command line too long (8XXXX >= 6XXXX) at input 0: fail_bigvar_quote_remote
par__environment_too_big_ash fail_bigfunc-not-supported
par__environment_too_big_ash fail_bigfunc_remote-not-supported
par__environment_too_big_ash fail_bigfunc_quote-not-supported
par__environment_too_big_ash fail_bigfunc_quote_remote-not-supported
par__environment_too_big_dash bug #5XXXX: env_parallel should warn if the environment is too big par__environment_too_big_dash bug #5XXXX: env_parallel should warn if the environment is too big
par__environment_too_big_dash OK_bigvar par__environment_too_big_dash OK_bigvar
par__environment_too_big_dash OK_bigvar_remote par__environment_too_big_dash OK_bigvar_remote
@ -44,19 +26,19 @@ par__environment_too_big_zsh OK_bigfunc_remote
par__environment_too_big_zsh OK_bigfunc_quote par__environment_too_big_zsh OK_bigfunc_quote
par__environment_too_big_zsh OK_bigfunc_quote_remote par__environment_too_big_zsh OK_bigfunc_quote_remote
par__environment_too_big_zsh Rest should fail par__environment_too_big_zsh Rest should fail
par__environment_too_big_zsh parallel: Error: Command line too long (6XXXX >= 5XXXX) at input 0: fail_bigvar par__environment_too_big_zsh parallel: Error: Command line too long (6XXXX >= 6XXXX) at input 0: fail_bigvar
par__environment_too_big_zsh parallel: Error: Command line too long (5XXXX >= 5XXXX) at input 0: fail_bigvar_remote par__environment_too_big_zsh parallel: Error: Command line too long (7XXXX >= 6XXXX) at input 0: fail_bigvar_remote
par__environment_too_big_zsh parallel: Error: Command line too long (6XXXX >= 5XXXX) at input 0: fail_bigvar_quote par__environment_too_big_zsh parallel: Error: Command line too long (6XXXX >= 6XXXX) at input 0: fail_bigvar_quote
par__environment_too_big_zsh parallel: Error: Command line too long (6XXXX >= 5XXXX) at input 0: fail_bigvar_quote_remote par__environment_too_big_zsh parallel: Error: Command line too long (6XXXX >= 6XXXX) at input 0: fail_bigvar_quote_remote
par__environment_too_big_zsh parallel: Error: Command line too long (6XXXX >= 5XXXX) at input 0: fail_bigfunc par__environment_too_big_zsh parallel: Error: Command line too long (6XXXX >= 6XXXX) at input 0: fail_bigfunc
par__environment_too_big_zsh parallel: Error: Command line too long (7XXXX >= 5XXXX) at input 0: fail_bigfunc_remote par__environment_too_big_zsh parallel: Error: Command line too long (7XXXX >= 6XXXX) at input 0: fail_bigfunc_remote
par__environment_too_big_zsh parallel: Error: Command line too long (6XXXX >= 5XXXX) at input 0: fail_bigfunc_quote par__environment_too_big_zsh parallel: Error: Command line too long (6XXXX >= 6XXXX) at input 0: fail_bigfunc_quote
par__environment_too_big_zsh parallel: Error: Command line too long (6XXXX >= 5XXXX) at input 0: fail_bigfunc_quote_remote par__environment_too_big_zsh parallel: Error: Command line too long (6XXXX >= 6XXXX) at input 0: fail_bigfunc_quote_remote
par__sockets_cores_threads ### Test --number-of-sockets/cores/threads par__sockets_cores_threads ### Test --number-of-sockets/cores/threads
par__sockets_cores_threads 1 par__sockets_cores_threads 1
par__sockets_cores_threads 2
par__sockets_cores_threads 4 par__sockets_cores_threads 4
par__sockets_cores_threads 2 par__sockets_cores_threads 8
par__sockets_cores_threads 4
par__sockets_cores_threads ### Test --use-sockets-instead-of-threads par__sockets_cores_threads ### Test --use-sockets-instead-of-threads
par__sockets_cores_threads threads done par__sockets_cores_threads threads done
par__sockets_cores_threads sockets done par__sockets_cores_threads sockets done
@ -69,13 +51,13 @@ par_progress Computer:jobs running/jobs completed/%of started jobs/Average secon
par_progress local:0/3/100%/9.9s  par_progress local:0/3/100%/9.9s 
par_progress par_progress
par_progress Computers / CPU cores / Max jobs to run par_progress Computers / CPU cores / Max jobs to run
par_progress 1:local / 2 / 2 par_progress 1:local / 4 / 4
par_progress par_progress
par_progress Computer:jobs running/jobs completed/%of started jobs/Average seconds to complete par_progress Computer:jobs running/jobs completed/%of started jobs/Average seconds to complete
par_progress local:0/3/100%/9.9s  par_progress local:0/3/100%/9.9s 
par_progress par_progress
par_progress Computers / CPU threads / Max jobs to run par_progress Computers / CPU threads / Max jobs to run
par_progress 1:local / 4 / 4 par_progress 1:local / 8 / 8
par_progress par_progress
par_progress Computer:jobs running/jobs completed/%of started jobs/Average seconds to complete par_progress Computer:jobs running/jobs completed/%of started jobs/Average seconds to complete
par_progress local:0/3/100%/9.9s  par_progress local:0/3/100%/9.9s 

View file

@ -1,3 +1,5 @@
par_--rpl_group_bug Bug in --rpl group: $$1_
par_--rpl_group_bug Good
par_-q_perl_program ### test08 -q and perl par_-q_perl_program ### test08 -q and perl
par_-q_perl_program b par_-q_perl_program b
par_-q_perl_program d par_-q_perl_program d
@ -982,10 +984,10 @@ par_sem_quote ### sem --quote should not add empty argument
par_sem_quote echo par_sem_quote echo
par_sem_quote par_sem_quote
par_shellcompletion ### --shellcompletion par_shellcompletion ### --shellcompletion
par_shellcompletion 1952015cc0c85c44d82d13e2673f4b28 - par_shellcompletion bf790ce8a53d1e7e5f8e78b063dc65bc -
par_shellcompletion 1952015cc0c85c44d82d13e2673f4b28 - par_shellcompletion bf790ce8a53d1e7e5f8e78b063dc65bc -
par_shellcompletion c23b2094e510526c322ea3af89b4c682 - par_shellcompletion 2230e8ac0593f660fccd983596377613 -
par_shellcompletion c23b2094e510526c322ea3af89b4c682 - par_shellcompletion 2230e8ac0593f660fccd983596377613 -
par_slow_pipe_regexp ### bug #53718: --pipe --regexp -N blocks 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 This should take a few ms, but took more than 2 hours
par_slow_pipe_regexp 0 1 1 par_slow_pipe_regexp 0 1 1

View file

@ -1,3 +1,110 @@
par_--match Basic match
par_--match This works
par_--match This works, too
par_--match Simple CSV-parsing
par_--match url=https://gnu.org/s/parallel filename=myfile
par_--match Dummy --match for input source 1, real --match for input source 2
par_--match This works
par_--match Reuse --match
par_--match ALL OK
par_--match With --header :
par_--match ALL OK
par_--match Failure to match/Partial match
par_--match parallel: Warning: 'FAILS' did not match '([a-z]+)'
par_--match matches
par_--match 1
par_--match partly
par_--match Test error: missing --match
par_--match parallel: Error: {2.1} requires corresponding --match
par_--match Test error: \001 in match
par_--match parallel: Error: \001 is not supported in --match
par_--match From man parallel_examples
par_--match mkdir -p a && mv afile a
par_--match mkdir -p b && mv bfile b
par_--match mkdir -p a && mv adir a
par_--match A. Dent
par_--match F. Prefect
par_--match T. McMillan
par_--match Z. Beeblebrox
par_--match 1969-12-31
par_--match 2038-01-19
par_--match 2002-06-01
par_--match Domain: example.com Path: dir/page
par_--match Domain: gnu.org Path: s/parallel
par_--match Second: Babel fish, First: Arthur
par_--match Second: Betelgeuse, First: Adams
par_--match Second: Bistro, First: Arcturan
par_--match Pan Galactic
par_--match Gargle Blaster
par_--match From DK/Denmark to DK/Denmark dial 00-45
par_--match From DK/Denmark to US/United States dial 00-1
par_--match From DK/Denmark to JP/Japan dial 00-81
par_--match From DK/Denmark to AU/Australia dial 00-61
par_--match From DK/Denmark to CA/Canada dial 00-1
par_--match From DK/Denmark to RU/Russia dial 00-7
par_--match From DK/Denmark to TH/Thailand dial 00-66
par_--match From DK/Denmark to TW/Taiwan dial 00-886
par_--match From US/United States to DK/Denmark dial 011-45
par_--match From US/United States to US/United States dial 011-1
par_--match From US/United States to JP/Japan dial 011-81
par_--match From US/United States to AU/Australia dial 011-61
par_--match From US/United States to CA/Canada dial 011-1
par_--match From US/United States to RU/Russia dial 011-7
par_--match From US/United States to TH/Thailand dial 011-66
par_--match From US/United States to TW/Taiwan dial 011-886
par_--match From JP/Japan to DK/Denmark dial 010-45
par_--match From JP/Japan to US/United States dial 010-1
par_--match From JP/Japan to JP/Japan dial 010-81
par_--match From JP/Japan to AU/Australia dial 010-61
par_--match From JP/Japan to CA/Canada dial 010-1
par_--match From JP/Japan to RU/Russia dial 010-7
par_--match From JP/Japan to TH/Thailand dial 010-66
par_--match From JP/Japan to TW/Taiwan dial 010-886
par_--match From AU/Australia to DK/Denmark dial 0011-45
par_--match From AU/Australia to US/United States dial 0011-1
par_--match From AU/Australia to JP/Japan dial 0011-81
par_--match From AU/Australia to AU/Australia dial 0011-61
par_--match From AU/Australia to CA/Canada dial 0011-1
par_--match From AU/Australia to RU/Russia dial 0011-7
par_--match From AU/Australia to TH/Thailand dial 0011-66
par_--match From AU/Australia to TW/Taiwan dial 0011-886
par_--match From CA/Canada to DK/Denmark dial 011-45
par_--match From CA/Canada to US/United States dial 011-1
par_--match From CA/Canada to JP/Japan dial 011-81
par_--match From CA/Canada to AU/Australia dial 011-61
par_--match From CA/Canada to CA/Canada dial 011-1
par_--match From CA/Canada to RU/Russia dial 011-7
par_--match From CA/Canada to TH/Thailand dial 011-66
par_--match From CA/Canada to TW/Taiwan dial 011-886
par_--match From RU/Russia to DK/Denmark dial 810-45
par_--match From RU/Russia to US/United States dial 810-1
par_--match From RU/Russia to JP/Japan dial 810-81
par_--match From RU/Russia to AU/Australia dial 810-61
par_--match From RU/Russia to CA/Canada dial 810-1
par_--match From RU/Russia to RU/Russia dial 810-7
par_--match From RU/Russia to TH/Thailand dial 810-66
par_--match From RU/Russia to TW/Taiwan dial 810-886
par_--match From TH/Thailand to DK/Denmark dial 001-45
par_--match From TH/Thailand to US/United States dial 001-1
par_--match From TH/Thailand to JP/Japan dial 001-81
par_--match From TH/Thailand to AU/Australia dial 001-61
par_--match From TH/Thailand to CA/Canada dial 001-1
par_--match From TH/Thailand to RU/Russia dial 001-7
par_--match From TH/Thailand to TH/Thailand dial 001-66
par_--match From TH/Thailand to TW/Taiwan dial 001-886
par_--match From TW/Taiwan to DK/Denmark dial 002-45
par_--match From TW/Taiwan to US/United States dial 002-1
par_--match From TW/Taiwan to JP/Japan dial 002-81
par_--match From TW/Taiwan to AU/Australia dial 002-61
par_--match From TW/Taiwan to CA/Canada dial 002-1
par_--match From TW/Taiwan to RU/Russia dial 002-7
par_--match From TW/Taiwan to TH/Thailand dial 002-66
par_--match From TW/Taiwan to TW/Taiwan dial 002-886
par_--match Capture groups CSV-parsing - not implemented
par_--match url={url} filename={file} https://gnu.org/s/parallel,myfile
par_--match Non posistional replacement fields - not implemented
par_--match {.2} {.3} {.1} Gold,Heart_of
par_--match TODO Ignore case?
par_END ### Test -i and --replace: Replace with argument par_END ### Test -i and --replace: Replace with argument
par_END replace par_END replace
par_END replace par_END replace
@ -19,10 +126,381 @@ par_END include this
par__load_from_PARALLEL ### Test reading load from PARALLEL par__load_from_PARALLEL ### Test reading load from PARALLEL
par__load_from_PARALLEL 8a7095c1c23bfadc311fe6b16d950582 - par__load_from_PARALLEL 8a7095c1c23bfadc311fe6b16d950582 -
par__load_from_PARALLEL 8a7095c1c23bfadc311fe6b16d950582 - par__load_from_PARALLEL 8a7095c1c23bfadc311fe6b16d950582 -
par__nice Check that --nice works
par__nice load_10
par__nice bzip2 18
par__nice bzip2 18
par__pipepart_spawn ### bug #46214: Using --pipepart doesnt spawn multiple jobs in version 20150922 par__pipepart_spawn ### bug #46214: Using --pipepart doesnt spawn multiple jobs in version 20150922
par__pipepart_spawn 1:local / 2+ / 2+ par__pipepart_spawn 1:local / 2+ / 2+
par__quote_special_results ### Test --results on file systems with limited UTF8 support
par__quote_special_results mkfs.btrfs
par__quote_special_results mkfs.btrfs NOTE: several default settings have changed in version 5.15, please make sure
par__quote_special_results mkfs.btrfs this does not affect your deployments:
par__quote_special_results mkfs.btrfs - DUP for metadata (-m dup)
par__quote_special_results mkfs.btrfs - enabled no-holes (-O no-holes)
par__quote_special_results mkfs.btrfs - enabled free-space-tree (-R free-space-tree)
par__quote_special_results mkfs.btrfs
par__quote_special_results mkfs.btrfs Label: (null)
par__quote_special_results mkfs.btrfs Node size: 16384
par__quote_special_results mkfs.btrfs Sector size: 4096
par__quote_special_results mkfs.btrfs Filesystem size: 301.00MiB
par__quote_special_results mkfs.btrfs Block group profiles:
par__quote_special_results mkfs.btrfs Data: single 8.00MiB
par__quote_special_results mkfs.btrfs Metadata: DUP 32.00MiB
par__quote_special_results mkfs.btrfs System: DUP 8.00MiB
par__quote_special_results mkfs.btrfs SSD detected: no
par__quote_special_results mkfs.btrfs Zoned device: no
par__quote_special_results mkfs.btrfs Runtime features: free-space-tree
par__quote_special_results mkfs.btrfs Checksum: crc32c
par__quote_special_results mkfs.btrfs Number of devices: 1
par__quote_special_results mkfs.btrfs Devices:
par__quote_special_results mkfs.btrfs 1 301.00MiB /dev/shm/par-test-loop
par__quote_special_results mkfs.btrfs
par__quote_special_results mkfs.btrfs Filesystem 1K-blocks Used Available Use% Mounted on
par__quote_special_results mkfs.btrfs /dev/loop 999999 99999 99999 9% /tmp/par-test-loop
par__quote_special_results mkfs.btrfs . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,. ./,..
par__quote_special_results mkfs.btrfs
par__quote_special_results mkfs.btrfs . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ par__quote_special_results mkfs.btrfs ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./! ./" ./# ./$ ./% ./& ./' ./( ./) ./* ./++ ./+_ ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./: ./; ./< ./= ./> ./? ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./\ ./] ./^ ./_ ./` ./a ./b ./c ./d ./e ./f ./g ./h ./i ./j ./k ./l ./m ./n ./o ./p ./q ./r ./s ./t ./u ./v ./w ./x ./y ./z ./{ ./| ./} ./~ ./ ./€
par__quote_special_results mkfs.btrfs . ./€ ./<2F> ./ ./ƒ ./„ ./… ./† ./‡ ./ˆ ./‰ ./Š ./ ./Œ ./<2F> ./Ž ./<2F> ./<2F> ./ ./ ./“ ./” ./• ./ ./— ./˜ ./™ ./š ./ ./œ ./<2F> ./ž ./Ÿ ./  ./¡ ./¢ ./£ ./¤ ./¥ ./¦ ./§ ./¨ ./© ./ª ./« ./¬ ./­ ./® ./¯ ./° ./± ./² ./³ ./´ ./µ ./¶ ./· ./¸ ./¹ ./º ./» ./¼ ./½ ./¾ ./¿ ./À ./Á ./ ./à ./Ä ./Å ./Æ ./Ç ./È ./É ./Ê ./Ë ./Ì ./Í ./Î ./Ï ./Ð ./Ñ ./Ò ./Ó ./Ô ./Õ ./Ö ./× ./Ø ./Ù ./Ú ./Û ./Ü ./Ý ./Þ ./ß ./à ./á ./â ./ã ./ä ./å ./æ ./ç ./è ./é ./ê ./ë ./ì ./í ./î ./ï ./ð ./ñ ./ò ./ó ./ô ./õ ./ö ./÷ ./ø ./ù ./ú ./û ./ü ./ý ./þ ./ÿ
par__quote_special_results mkfs.btrfs 301+0 records in
par__quote_special_results mkfs.btrfs 301+0 records out
par__quote_special_results mkfs.exfat Creating exFAT filesystem(/dev/shm/par-test-loop cluster size=32768)
par__quote_special_results mkfs.exfat
par__quote_special_results mkfs.exfat Writing volume boot record: done
par__quote_special_results mkfs.exfat Writing backup volume boot record: done
par__quote_special_results mkfs.exfat Fat table creation: done
par__quote_special_results mkfs.exfat Allocation bitmap creation: done
par__quote_special_results mkfs.exfat Upcase table creation: done
par__quote_special_results mkfs.exfat Writing root directory entry: done
par__quote_special_results mkfs.exfat Synchronizing...
par__quote_special_results mkfs.exfat
par__quote_special_results mkfs.exfat exFAT format complete!
par__quote_special_results mkfs.exfat Filesystem 1K-blocks Used Available Use% Mounted on
par__quote_special_results mkfs.exfat /dev/loop 999999 99999 99999 9% /tmp/par-test-loop
par__quote_special_results mkfs.exfat . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,
par__quote_special_results mkfs.exfat . ./ ./! ./# ./$ ./% ./& ./' ./( ./) ./++ ./+01 ./+02 ./+03 ./+04 ./+05 ./+06 ./+07 ./+08 ./+09 ./+0a ./+0b ./+0c ./+0d ./+0e ./+0f ./+10 ./+11 ./+12 ./+13 ./+14 ./+15 ./+16 ./+17 ./+18 ./+19 ./+1a ./+1b ./+1c ./+1d ./+1e ./+1f ./+80 ./+_ ./+a ./+b ./+d ./+g ./+k ./+l ./+p ./+y ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./; ./= ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./] ./^ ./_ ./` ./{ ./} ./~ ./
par__quote_special_results mkfs.exfat . ./+80 ./+81 ./+82 ./+83 ./+84 ./+85 ./+86 ./+87 ./+88 ./+89 ./+8a ./+8b ./+8c ./+8d ./+8e ./+8f ./+90 ./+91 ./+92 ./+93 ./+94 ./+95 ./+96 ./+97 ./+98 ./+99 ./+9a ./+9b ./+9c ./+9d ./+9e ./+9f ./+a0 ./+a1 ./+a2 ./+a3 ./+a4 ./+a5 ./+a6 ./+a7 ./+a8 ./+a9 ./+aa ./+ab ./+ac ./+ad ./+ae ./+af ./+b0 ./+b1 ./+b2 ./+b3 ./+b4 ./+b5 ./+b6 ./+b7 ./+b8 ./+b9 ./+ba ./+bb ./+bc ./+bd ./+be ./+bf ./+c0 ./+c1 ./+c2 ./+c3 ./+c4 ./+c5 ./+c6 ./+c7 ./+c8 ./+c9 ./+ca ./+cb ./+cc ./+cd ./+ce ./+cf ./+d0 ./+d1 ./+d2 ./+d3 ./+d4 ./+d5 ./+d6 ./+d7 ./+d8 ./+d9 ./+da ./+db ./+dc ./+dd ./+de ./+df ./+e0 ./+e1 ./+e2 ./+e3 ./+e4 ./+e5 ./+e6 ./+e7 ./+e8 ./+e9 ./+ea ./+eb ./+ec ./+ed ./+ee ./+ef ./+f0 ./+f1 ./+f2 ./+f3 ./+f4 ./+f5 ./+f6 ./+f7 ./+f8 ./+f9 ./+fa ./+fb ./+fc ./+fd ./+fe ./+ff
par__quote_special_results mkfs.exfat 301+0 records in
par__quote_special_results mkfs.exfat 301+0 records out
par__quote_special_results mkfs.ext2 Discarding device blocks: 0/77056 done
par__quote_special_results mkfs.ext2 Creating filesystem with 77056 4k blocks and 77088 inodes
par__quote_special_results mkfs.ext2 Superblock backups stored on blocks:
par__quote_special_results mkfs.ext2 32768
par__quote_special_results mkfs.ext2
par__quote_special_results mkfs.ext2 Allocating group tables: 0/3 done
par__quote_special_results mkfs.ext2 Writing inode tables: 0/3 done
par__quote_special_results mkfs.ext2 Writing superblocks and filesystem accounting information: 0/3 done
par__quote_special_results mkfs.ext2
par__quote_special_results mkfs.ext2 Filesystem 1K-blocks Used Available Use% Mounted on
par__quote_special_results mkfs.ext2 /dev/loop 999999 99999 99999 9% /tmp/par-test-loop
par__quote_special_results mkfs.ext2 . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,. ./,..
par__quote_special_results mkfs.ext2
par__quote_special_results mkfs.ext2 . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ par__quote_special_results mkfs.ext2 ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./! ./" ./# ./$ ./% ./& ./' ./( ./) ./* ./++ ./+_ ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./: ./; ./< ./= ./> ./? ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./\ ./] ./^ ./_ ./` ./a ./b ./c ./d ./e ./f ./g ./h ./i ./j ./k ./l ./m ./n ./o ./p ./q ./r ./s ./t ./u ./v ./w ./x ./y ./z ./{ ./| ./} ./~ ./ ./€
par__quote_special_results mkfs.ext2 . ./€ ./<2F> ./ ./ƒ ./„ ./… ./† ./‡ ./ˆ ./‰ ./Š ./ ./Œ ./<2F> ./Ž ./<2F> ./<2F> ./ ./ ./“ ./” ./• ./ ./— ./˜ ./™ ./š ./ ./œ ./<2F> ./ž ./Ÿ ./  ./¡ ./¢ ./£ ./¤ ./¥ ./¦ ./§ ./¨ ./© ./ª ./« ./¬ ./­ ./® ./¯ ./° ./± ./² ./³ ./´ ./µ ./¶ ./· ./¸ ./¹ ./º ./» ./¼ ./½ ./¾ ./¿ ./À ./Á ./ ./à ./Ä ./Å ./Æ ./Ç ./È ./É ./Ê ./Ë ./Ì ./Í ./Î ./Ï ./Ð ./Ñ ./Ò ./Ó ./Ô ./Õ ./Ö ./× ./Ø ./Ù ./Ú ./Û ./Ü ./Ý ./Þ ./ß ./à ./á ./â ./ã ./ä ./å ./æ ./ç ./è ./é ./ê ./ë ./ì ./í ./î ./ï ./ð ./ñ ./ò ./ó ./ô ./õ ./ö ./÷ ./ø ./ù ./ú ./û ./ü ./ý ./þ ./ÿ
par__quote_special_results mkfs.ext2 301+0 records in
par__quote_special_results mkfs.ext2 301+0 records out
par__quote_special_results mkfs.ext3 Discarding device blocks: 0/77056 done
par__quote_special_results mkfs.ext3 Creating filesystem with 77056 4k blocks and 77088 inodes
par__quote_special_results mkfs.ext3 Superblock backups stored on blocks:
par__quote_special_results mkfs.ext3 32768
par__quote_special_results mkfs.ext3
par__quote_special_results mkfs.ext3 Allocating group tables: 0/3 done
par__quote_special_results mkfs.ext3 Writing inode tables: 0/3 done
par__quote_special_results mkfs.ext3 Creating journal (4096 blocks): done
par__quote_special_results mkfs.ext3 Writing superblocks and filesystem accounting information: 0/3 done
par__quote_special_results mkfs.ext3
par__quote_special_results mkfs.ext3 Filesystem 1K-blocks Used Available Use% Mounted on
par__quote_special_results mkfs.ext3 /dev/loop 999999 99999 99999 9% /tmp/par-test-loop
par__quote_special_results mkfs.ext3 . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,. ./,..
par__quote_special_results mkfs.ext3
par__quote_special_results mkfs.ext3 . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ par__quote_special_results mkfs.ext3 ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./! ./" ./# ./$ ./% ./& ./' ./( ./) ./* ./++ ./+_ ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./: ./; ./< ./= ./> ./? ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./\ ./] ./^ ./_ ./` ./a ./b ./c ./d ./e ./f ./g ./h ./i ./j ./k ./l ./m ./n ./o ./p ./q ./r ./s ./t ./u ./v ./w ./x ./y ./z ./{ ./| ./} ./~ ./ ./€
par__quote_special_results mkfs.ext3 . ./€ ./<2F> ./ ./ƒ ./„ ./… ./† ./‡ ./ˆ ./‰ ./Š ./ ./Œ ./<2F> ./Ž ./<2F> ./<2F> ./ ./ ./“ ./” ./• ./ ./— ./˜ ./™ ./š ./ ./œ ./<2F> ./ž ./Ÿ ./  ./¡ ./¢ ./£ ./¤ ./¥ ./¦ ./§ ./¨ ./© ./ª ./« ./¬ ./­ ./® ./¯ ./° ./± ./² ./³ ./´ ./µ ./¶ ./· ./¸ ./¹ ./º ./» ./¼ ./½ ./¾ ./¿ ./À ./Á ./ ./à ./Ä ./Å ./Æ ./Ç ./È ./É ./Ê ./Ë ./Ì ./Í ./Î ./Ï ./Ð ./Ñ ./Ò ./Ó ./Ô ./Õ ./Ö ./× ./Ø ./Ù ./Ú ./Û ./Ü ./Ý ./Þ ./ß ./à ./á ./â ./ã ./ä ./å ./æ ./ç ./è ./é ./ê ./ë ./ì ./í ./î ./ï ./ð ./ñ ./ò ./ó ./ô ./õ ./ö ./÷ ./ø ./ù ./ú ./û ./ü ./ý ./þ ./ÿ
par__quote_special_results mkfs.ext3 301+0 records in
par__quote_special_results mkfs.ext3 301+0 records out
par__quote_special_results mkfs.ext4 Discarding device blocks: 0/77056 done
par__quote_special_results mkfs.ext4 Creating filesystem with 77056 4k blocks and 77088 inodes
par__quote_special_results mkfs.ext4 Superblock backups stored on blocks:
par__quote_special_results mkfs.ext4 32768
par__quote_special_results mkfs.ext4
par__quote_special_results mkfs.ext4 Allocating group tables: 0/3 done
par__quote_special_results mkfs.ext4 Writing inode tables: 0/3 done
par__quote_special_results mkfs.ext4 Creating journal (4096 blocks): done
par__quote_special_results mkfs.ext4 Writing superblocks and filesystem accounting information: 0/3 done
par__quote_special_results mkfs.ext4
par__quote_special_results mkfs.ext4 Filesystem 1K-blocks Used Available Use% Mounted on
par__quote_special_results mkfs.ext4 /dev/loop 999999 99999 99999 9% /tmp/par-test-loop
par__quote_special_results mkfs.ext4 . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,. ./,..
par__quote_special_results mkfs.ext4
par__quote_special_results mkfs.ext4 . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ par__quote_special_results mkfs.ext4 ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./! ./" ./# ./$ ./% ./& ./' ./( ./) ./* ./++ ./+_ ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./: ./; ./< ./= ./> ./? ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./\ ./] ./^ ./_ ./` ./a ./b ./c ./d ./e ./f ./g ./h ./i ./j ./k ./l ./m ./n ./o ./p ./q ./r ./s ./t ./u ./v ./w ./x ./y ./z ./{ ./| ./} ./~ ./ ./€
par__quote_special_results mkfs.ext4 . ./€ ./<2F> ./ ./ƒ ./„ ./… ./† ./‡ ./ˆ ./‰ ./Š ./ ./Œ ./<2F> ./Ž ./<2F> ./<2F> ./ ./ ./“ ./” ./• ./ ./— ./˜ ./™ ./š ./ ./œ ./<2F> ./ž ./Ÿ ./  ./¡ ./¢ ./£ ./¤ ./¥ ./¦ ./§ ./¨ ./© ./ª ./« ./¬ ./­ ./® ./¯ ./° ./± ./² ./³ ./´ ./µ ./¶ ./· ./¸ ./¹ ./º ./» ./¼ ./½ ./¾ ./¿ ./À ./Á ./ ./à ./Ä ./Å ./Æ ./Ç ./È ./É ./Ê ./Ë ./Ì ./Í ./Î ./Ï ./Ð ./Ñ ./Ò ./Ó ./Ô ./Õ ./Ö ./× ./Ø ./Ù ./Ú ./Û ./Ü ./Ý ./Þ ./ß ./à ./á ./â ./ã ./ä ./å ./æ ./ç ./è ./é ./ê ./ë ./ì ./í ./î ./ï ./ð ./ñ ./ò ./ó ./ô ./õ ./ö ./÷ ./ø ./ù ./ú ./û ./ü ./ý ./þ ./ÿ
par__quote_special_results mkfs.ext4 301+0 records in
par__quote_special_results mkfs.ext4 301+0 records out
par__quote_special_results mkfs.reiserfs -fq Filesystem 1K-blocks Used Available Use% Mounted on
par__quote_special_results mkfs.reiserfs -fq /dev/loop 999999 99999 99999 9% /tmp/par-test-loop
par__quote_special_results mkfs.reiserfs -fq . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,. ./,..
par__quote_special_results mkfs.reiserfs -fq
par__quote_special_results mkfs.reiserfs -fq . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ par__quote_special_results mkfs.reiserfs -fq ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./! ./" ./# ./$ ./% ./& ./' ./( ./) ./* ./++ ./+_ ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./: ./; ./< ./= ./> ./? ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./\ ./] ./^ ./_ ./` ./a ./b ./c ./d ./e ./f ./g ./h ./i ./j ./k ./l ./m ./n ./o ./p ./q ./r ./s ./t ./u ./v ./w ./x ./y ./z ./{ ./| ./} ./~ ./ ./€
par__quote_special_results mkfs.reiserfs -fq . ./€ ./<2F> ./ ./ƒ ./„ ./… ./† ./‡ ./ˆ ./‰ ./Š ./ ./Œ ./<2F> ./Ž ./<2F> ./<2F> ./ ./ ./“ ./” ./• ./ ./— ./˜ ./™ ./š ./ ./œ ./<2F> ./ž ./Ÿ ./  ./¡ ./¢ ./£ ./¤ ./¥ ./¦ ./§ ./¨ ./© ./ª ./« ./¬ ./­ ./® ./¯ ./° ./± ./² ./³ ./´ ./µ ./¶ ./· ./¸ ./¹ ./º ./» ./¼ ./½ ./¾ ./¿ ./À ./Á ./ ./à ./Ä ./Å ./Æ ./Ç ./È ./É ./Ê ./Ë ./Ì ./Í ./Î ./Ï ./Ð ./Ñ ./Ò ./Ó ./Ô ./Õ ./Ö ./× ./Ø ./Ù ./Ú ./Û ./Ü ./Ý ./Þ ./ß ./à ./á ./â ./ã ./ä ./å ./æ ./ç ./è ./é ./ê ./ë ./ì ./í ./î ./ï ./ð ./ñ ./ò ./ó ./ô ./õ ./ö ./÷ ./ø ./ù ./ú ./û ./ü ./ý ./þ ./ÿ
par__quote_special_results mkfs.reiserfs -fq 301+0 records in
par__quote_special_results mkfs.reiserfs -fq 301+0 records out
par__quote_special_results mkfs.reiserfs -fq mkfs.reiserfs 3.6.27
par__quote_special_results mkfs.reiserfs -fq
par__quote_special_results mkfs.ntfs -F Cluster size has been automatically set to 4096 bytes.
par__quote_special_results mkfs.ntfs -F Initializing device with zeroes: 0% 0% 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% 93% 94% 95% 96% 97% 98% 99%100% - Done.
par__quote_special_results mkfs.ntfs -F Creating NTFS volume structures.
par__quote_special_results mkfs.ntfs -F mkntfs completed successfully. Have a nice day.
par__quote_special_results mkfs.ntfs -F Filesystem 1K-blocks Used Available Use% Mounted on
par__quote_special_results mkfs.ntfs -F /dev/loop 999999 99999 99999 9% /tmp/par-test-loop
par__quote_special_results mkfs.ntfs -F . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,. ./,..
par__quote_special_results mkfs.ntfs -F
par__quote_special_results mkfs.ntfs -F . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ par__quote_special_results mkfs.ntfs -F ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./! ./" ./# ./$ ./% ./& ./' ./( ./) ./* ./++ ./+80 ./+_ ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./: ./; ./< ./= ./> ./? ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./\ ./] ./^ ./_ ./` ./a ./b ./c ./d ./e ./f ./g ./h ./i ./j ./k ./l ./m ./n ./o ./p ./q ./r ./s ./t ./u ./v ./w ./x ./y ./z ./{ ./| ./} ./~ ./
par__quote_special_results mkfs.ntfs -F . ./+80 ./+81 ./+82 ./+83 ./+84 ./+85 ./+86 ./+87 ./+88 ./+89 ./+8a ./+8b ./+8c ./+8d ./+8e ./+8f ./+90 ./+91 ./+92 ./+93 ./+94 ./+95 ./+96 ./+97 ./+98 ./+99 ./+9a ./+9b ./+9c ./+9d ./+9e ./+9f ./+a0 ./+a1 ./+a2 ./+a3 ./+a4 ./+a5 ./+a6 ./+a7 ./+a8 ./+a9 ./+aa ./+ab ./+ac ./+ad ./+ae ./+af ./+b0 ./+b1 ./+b2 ./+b3 ./+b4 ./+b5 ./+b6 ./+b7 ./+b8 ./+b9 ./+ba ./+bb ./+bc ./+bd ./+be ./+bf ./+c0 ./+c1 ./+c2 ./+c3 ./+c4 ./+c5 ./+c6 ./+c7 ./+c8 ./+c9 ./+ca ./+cb ./+cc ./+cd ./+ce ./+cf ./+d0 ./+d1 ./+d2 ./+d3 ./+d4 ./+d5 ./+d6 ./+d7 ./+d8 ./+d9 ./+da ./+db ./+dc ./+dd ./+de ./+df ./+e0 ./+e1 ./+e2 ./+e3 ./+e4 ./+e5 ./+e6 ./+e7 ./+e8 ./+e9 ./+ea ./+eb ./+ec ./+ed ./+ee ./+ef ./+f0 ./+f1 ./+f2 ./+f3 ./+f4 ./+f5 ./+f6 ./+f7 ./+f8 ./+f9 ./+fa ./+fb ./+fc ./+fd ./+fe ./+ff
par__quote_special_results mkfs.ntfs -F 301+0 records in
par__quote_special_results mkfs.ntfs -F 301+0 records out
par__quote_special_results mkfs.ntfs -F /dev/shm/par-test-loop is not a block device.
par__quote_special_results mkfs.ntfs -F mkntfs forced anyway.
par__quote_special_results mkfs.ntfs -F The sector size was not specified for /dev/shm/par-test-loop and it could not be obtained automatically. It has been set to 512 bytes.
par__quote_special_results mkfs.ntfs -F The partition start sector was not specified for /dev/shm/par-test-loop and it could not be obtained automatically. It has been set to 0.
par__quote_special_results mkfs.ntfs -F The number of sectors per track was not specified for /dev/shm/par-test-loop and it could not be obtained automatically. It has been set to 0.
par__quote_special_results mkfs.ntfs -F The number of heads was not specified for /dev/shm/par-test-loop and it could not be obtained automatically. It has been set to 0.
par__quote_special_results mkfs.ntfs -F To boot from a device, Windows needs the 'partition start sector', the 'sectors per track' and the 'number of heads' to be set.
par__quote_special_results mkfs.ntfs -F Windows will not be able to boot from this device.
par__quote_special_results mkfs.xfs -f meta-data=/dev/shm/par-test-loop isize=512 agcount=4, agsize=19264 blks
par__quote_special_results mkfs.xfs -f = sectsz=512 attr=2, projid32bit=1
par__quote_special_results mkfs.xfs -f data = bsize=4096 blocks=77056, imaxpct=25
par__quote_special_results mkfs.xfs -f = sunit=0 swidth=0 blks
par__quote_special_results mkfs.xfs -f naming =version 2 bsize=4096 ascii-ci=0, ftype=1
par__quote_special_results mkfs.xfs -f = sectsz=512 sunit=0 blks, lazy-count=1
par__quote_special_results mkfs.xfs -f realtime =none extsz=4096 blocks=0, rtextents=0
par__quote_special_results mkfs.xfs -f Filesystem 1K-blocks Used Available Use% Mounted on
par__quote_special_results mkfs.xfs -f /dev/loop 999999 99999 99999 9% /tmp/par-test-loop
par__quote_special_results mkfs.xfs -f . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,. ./,..
par__quote_special_results mkfs.xfs -f
par__quote_special_results mkfs.xfs -f . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ par__quote_special_results mkfs.xfs -f ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./! ./" ./# ./$ ./% ./& ./' ./( ./) ./* ./++ ./+_ ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./: ./; ./< ./= ./> ./? ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./\ ./] ./^ ./_ ./` ./a ./b ./c ./d ./e ./f ./g ./h ./i ./j ./k ./l ./m ./n ./o ./p ./q ./r ./s ./t ./u ./v ./w ./x ./y ./z ./{ ./| ./} ./~ ./ ./€
par__quote_special_results mkfs.xfs -f . ./€ ./<2F> ./ ./ƒ ./„ ./… ./† ./‡ ./ˆ ./‰ ./Š ./ ./Œ ./<2F> ./Ž ./<2F> ./<2F> ./ ./ ./“ ./” ./• ./ ./— ./˜ ./™ ./š ./ ./œ ./<2F> ./ž ./Ÿ ./  ./¡ ./¢ ./£ ./¤ ./¥ ./¦ ./§ ./¨ ./© ./ª ./« ./¬ ./­ ./® ./¯ ./° ./± ./² ./³ ./´ ./µ ./¶ ./· ./¸ ./¹ ./º ./» ./¼ ./½ ./¾ ./¿ ./À ./Á ./ ./à ./Ä ./Å ./Æ ./Ç ./È ./É ./Ê ./Ë ./Ì ./Í ./Î ./Ï ./Ð ./Ñ ./Ò ./Ó ./Ô ./Õ ./Ö ./× ./Ø ./Ù ./Ú ./Û ./Ü ./Ý ./Þ ./ß ./à ./á ./â ./ã ./ä ./å ./æ ./ç ./è ./é ./ê ./ë ./ì ./í ./î ./ï ./ð ./ñ ./ò ./ó ./ô ./õ ./ö ./÷ ./ø ./ù ./ú ./û ./ü ./ý ./þ ./ÿ
par__quote_special_results mkfs.xfs -f 301+0 records in
par__quote_special_results mkfs.xfs -f 301+0 records out
par__quote_special_results mkfs.minix 21856 inodes
par__quote_special_results mkfs.minix 65535 blocks
par__quote_special_results mkfs.minix Firstdatazone=696 (696)
par__quote_special_results mkfs.minix Zonesize=1024
par__quote_special_results mkfs.minix Maxsize=268966912
par__quote_special_results mkfs.minix
par__quote_special_results mkfs.minix Filesystem 1K-blocks Used Available Use% Mounted on
par__quote_special_results mkfs.minix /dev/loop 999999 99999 99999 9% /tmp/par-test-loop
par__quote_special_results mkfs.minix . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,. ./,..
par__quote_special_results mkfs.minix
par__quote_special_results mkfs.minix . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ par__quote_special_results mkfs.minix ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./! ./" ./# ./$ ./% ./& ./' ./( ./) ./* ./++ ./+_ ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./: ./; ./< ./= ./> ./? ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./\ ./] ./^ ./_ ./` ./a ./b ./c ./d ./e ./f ./g ./h ./i ./j ./k ./l ./m ./n ./o ./p ./q ./r ./s ./t ./u ./v ./w ./x ./y ./z ./{ ./| ./} ./~ ./ ./€
par__quote_special_results mkfs.minix . ./€ ./<2F> ./ ./ƒ ./„ ./… ./† ./‡ ./ˆ ./‰ ./Š ./ ./Œ ./<2F> ./Ž ./<2F> ./<2F> ./ ./ ./“ ./” ./• ./ ./— ./˜ ./™ ./š ./ ./œ ./<2F> ./ž ./Ÿ ./  ./¡ ./¢ ./£ ./¤ ./¥ ./¦ ./§ ./¨ ./© ./ª ./« ./¬ ./­ ./® ./¯ ./° ./± ./² ./³ ./´ ./µ ./¶ ./· ./¸ ./¹ ./º ./» ./¼ ./½ ./¾ ./¿ ./À ./Á ./ ./à ./Ä ./Å ./Æ ./Ç ./È ./É ./Ê ./Ë ./Ì ./Í ./Î ./Ï ./Ð ./Ñ ./Ò ./Ó ./Ô ./Õ ./Ö ./× ./Ø ./Ù ./Ú ./Û ./Ü ./Ý ./Þ ./ß ./à ./á ./â ./ã ./ä ./å ./æ ./ç ./è ./é ./ê ./ë ./ì ./í ./î ./ï ./ð ./ñ ./ò ./ó ./ô ./õ ./ö ./÷ ./ø ./ù ./ú ./û ./ü ./ý ./þ ./ÿ
par__quote_special_results mkfs.minix 301+0 records in
par__quote_special_results mkfs.minix 301+0 records out
par__quote_special_results mkfs.fat mkfs.fat 4.2 (2021-01-31)
par__quote_special_results mkfs.fat Filesystem 1K-blocks Used Available Use% Mounted on
par__quote_special_results mkfs.fat /dev/loop 999999 99999 99999 9% /tmp/par-test-loop
par__quote_special_results mkfs.fat . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,
par__quote_special_results mkfs.fat . ./! ./# ./$ ./% ./& ./' ./( ./) ./++ ./+01 ./+02 ./+03 ./+04 ./+05 ./+06 ./+07 ./+08 ./+09 ./+0a ./+0b ./+0c ./+0d ./+0e ./+0f ./+10 ./+11 ./+12 ./+13 ./+14 ./+15 ./+16 ./+17 ./+18 ./+19 ./+1a ./+1b ./+1c ./+1d ./+1e ./+1f ./+20 ./+_ ./+a ./+b ./+d ./+g ./+k ./+l ./+p ./+y ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./; ./= ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./] ./^ ./_ ./` ./{ ./} ./~ ./ ./€
par__quote_special_results mkfs.fat . ./€ ./<2F> ./ ./ƒ ./„ ./… ./† ./‡ ./ˆ ./‰ ./Š ./ ./Œ ./<2F> ./Ž ./<2F> ./<2F> ./ ./ ./“ ./” ./• ./ ./— ./˜ ./™ ./š ./ ./œ ./<2F> ./ž ./Ÿ ./  ./¡ ./¢ ./£ ./¤ ./¥ ./¦ ./§ ./¨ ./© ./ª ./« ./¬ ./­ ./® ./¯ ./° ./± ./² ./³ ./´ ./µ ./¶ ./· ./¸ ./¹ ./º ./» ./¼ ./½ ./¾ ./¿ ./À ./Á ./ ./à ./Ä ./Å ./Æ ./Ç ./È ./É ./Ê ./Ë ./Ì ./Í ./Î ./Ï ./Ð ./Ñ ./Ò ./Ó ./Ô ./Õ ./Ö ./× ./Ø ./Ù ./Ú ./Û ./Ü ./Ý ./Þ ./ß ./÷ ./ÿ
par__quote_special_results mkfs.fat 301+0 records in
par__quote_special_results mkfs.fat 301+0 records out
par__quote_special_results mkfs.vfat mkfs.fat 4.2 (2021-01-31)
par__quote_special_results mkfs.vfat Filesystem 1K-blocks Used Available Use% Mounted on
par__quote_special_results mkfs.vfat /dev/loop 999999 99999 99999 9% /tmp/par-test-loop
par__quote_special_results mkfs.vfat . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,
par__quote_special_results mkfs.vfat . ./! ./# ./$ ./% ./& ./' ./( ./) ./++ ./+01 ./+02 ./+03 ./+04 ./+05 ./+06 ./+07 ./+08 ./+09 ./+0a ./+0b ./+0c ./+0d ./+0e ./+0f ./+10 ./+11 ./+12 ./+13 ./+14 ./+15 ./+16 ./+17 ./+18 ./+19 ./+1a ./+1b ./+1c ./+1d ./+1e ./+1f ./+20 ./+_ ./+a ./+b ./+d ./+g ./+k ./+l ./+p ./+y ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./; ./= ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./] ./^ ./_ ./` ./{ ./} ./~ ./ ./€
par__quote_special_results mkfs.vfat . ./€ ./<2F> ./ ./ƒ ./„ ./… ./† ./‡ ./ˆ ./‰ ./Š ./ ./Œ ./<2F> ./Ž ./<2F> ./<2F> ./ ./ ./“ ./” ./• ./ ./— ./˜ ./™ ./š ./ ./œ ./<2F> ./ž ./Ÿ ./  ./¡ ./¢ ./£ ./¤ ./¥ ./¦ ./§ ./¨ ./© ./ª ./« ./¬ ./­ ./® ./¯ ./° ./± ./² ./³ ./´ ./µ ./¶ ./· ./¸ ./¹ ./º ./» ./¼ ./½ ./¾ ./¿ ./À ./Á ./ ./à ./Ä ./Å ./Æ ./Ç ./È ./É ./Ê ./Ë ./Ì ./Í ./Î ./Ï ./Ð ./Ñ ./Ò ./Ó ./Ô ./Õ ./Ö ./× ./Ø ./Ù ./Ú ./Û ./Ü ./Ý ./Þ ./ß ./÷ ./ÿ
par__quote_special_results mkfs.vfat 301+0 records in
par__quote_special_results mkfs.vfat 301+0 records out
par__quote_special_results mkfs.msdos mkfs.fat 4.2 (2021-01-31)
par__quote_special_results mkfs.msdos Filesystem 1K-blocks Used Available Use% Mounted on
par__quote_special_results mkfs.msdos /dev/loop 999999 99999 99999 9% /tmp/par-test-loop
par__quote_special_results mkfs.msdos . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,
par__quote_special_results mkfs.msdos . ./! ./# ./$ ./% ./& ./' ./( ./) ./++ ./+01 ./+02 ./+03 ./+04 ./+05 ./+06 ./+07 ./+08 ./+09 ./+0a ./+0b ./+0c ./+0d ./+0e ./+0f ./+10 ./+11 ./+12 ./+13 ./+14 ./+15 ./+16 ./+17 ./+18 ./+19 ./+1a ./+1b ./+1c ./+1d ./+1e ./+1f ./+20 ./+_ ./+a ./+b ./+d ./+g ./+k ./+l ./+p ./+y ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./; ./= ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./] ./^ ./_ ./` ./{ ./} ./~ ./ ./€
par__quote_special_results mkfs.msdos . ./€ ./<2F> ./ ./ƒ ./„ ./… ./† ./‡ ./ˆ ./‰ ./Š ./ ./Œ ./<2F> ./Ž ./<2F> ./<2F> ./ ./ ./“ ./” ./• ./ ./— ./˜ ./™ ./š ./ ./œ ./<2F> ./ž ./Ÿ ./  ./¡ ./¢ ./£ ./¤ ./¥ ./¦ ./§ ./¨ ./© ./ª ./« ./¬ ./­ ./® ./¯ ./° ./± ./² ./³ ./´ ./µ ./¶ ./· ./¸ ./¹ ./º ./» ./¼ ./½ ./¾ ./¿ ./À ./Á ./ ./à ./Ä ./Å ./Æ ./Ç ./È ./É ./Ê ./Ë ./Ì ./Í ./Î ./Ï ./Ð ./Ñ ./Ò ./Ó ./Ô ./Õ ./Ö ./× ./Ø ./Ù ./Ú ./Û ./Ü ./Ý ./Þ ./ß ./÷ ./ÿ
par__quote_special_results mkfs.msdos 301+0 records in
par__quote_special_results mkfs.msdos 301+0 records out
par__quote_special_results mkfs.f2fs
par__quote_special_results mkfs.f2fs
par__quote_special_results mkfs.f2fs Info: Disable heap-based policy
par__quote_special_results mkfs.f2fs Info: Debug level = 0
par__quote_special_results mkfs.f2fs Info: Trim is enabled
par__quote_special_results mkfs.f2fs Info: Segments per section = 1
par__quote_special_results mkfs.f2fs Info: Sections per zone = 1
par__quote_special_results mkfs.f2fs Info: sector size = 512
par__quote_special_results mkfs.f2fs Info: total sectors = 616448 (301 MB)
par__quote_special_results mkfs.f2fs Info: zone aligned segment0 blkaddr: 512
par__quote_special_results mkfs.f2fs Info: format version with
par__quote_special_results mkfs.f2fs Info: [/dev/shm/par-test-loop Discarding device
par__quote_special_results mkfs.f2fs Info: format successful
par__quote_special_results mkfs.f2fs Filesystem 1K-blocks Used Available Use% Mounted on
par__quote_special_results mkfs.f2fs /dev/loop 999999 99999 99999 9% /tmp/par-test-loop
par__quote_special_results mkfs.f2fs . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,. ./,..
par__quote_special_results mkfs.f2fs
par__quote_special_results mkfs.f2fs . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ par__quote_special_results mkfs.f2fs ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./! ./" ./# ./$ ./% ./& ./' ./( ./) ./* ./++ ./+_ ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./: ./; ./< ./= ./> ./? ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./\ ./] ./^ ./_ ./` ./a ./b ./c ./d ./e ./f ./g ./h ./i ./j ./k ./l ./m ./n ./o ./p ./q ./r ./s ./t ./u ./v ./w ./x ./y ./z ./{ ./| ./} ./~ ./ ./€
par__quote_special_results mkfs.f2fs . ./€ ./<2F> ./ ./ƒ ./„ ./… ./† ./‡ ./ˆ ./‰ ./Š ./ ./Œ ./<2F> ./Ž ./<2F> ./<2F> ./ ./ ./“ ./” ./• ./ ./— ./˜ ./™ ./š ./ ./œ ./<2F> ./ž ./Ÿ ./  ./¡ ./¢ ./£ ./¤ ./¥ ./¦ ./§ ./¨ ./© ./ª ./« ./¬ ./­ ./® ./¯ ./° ./± ./² ./³ ./´ ./µ ./¶ ./· ./¸ ./¹ ./º ./» ./¼ ./½ ./¾ ./¿ ./À ./Á ./ ./à ./Ä ./Å ./Æ ./Ç ./È ./É ./Ê ./Ë ./Ì ./Í ./Î ./Ï ./Ð ./Ñ ./Ò ./Ó ./Ô ./Õ ./Ö ./× ./Ø ./Ù ./Ú ./Û ./Ü ./Ý ./Þ ./ß ./à ./á ./â ./ã ./ä ./å ./æ ./ç ./è ./é ./ê ./ë ./ì ./í ./î ./ï ./ð ./ñ ./ò ./ó ./ô ./õ ./ö ./÷ ./ø ./ù ./ú ./û ./ü ./ý ./þ ./ÿ
par__quote_special_results mkfs.f2fs 301+0 records in
par__quote_special_results mkfs.f2fs 301+0 records out
par__round_robin_blocks bug #49664: --round-robin does not complete par__round_robin_blocks bug #49664: --round-robin does not complete
par__round_robin_blocks 8 par__round_robin_blocks 8
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: Warning: Only enough file handles to run 999 jobs in parallel.
par__tee_too_many_args parallel: Warning: Try running 'parallel -j999 -N 999 --pipe parallel -j999'
par__tee_too_many_args parallel: Warning: or increasing 'ulimit -n' (try: ulimit -n `ulimit -Hn`)
par__tee_too_many_args parallel: Warning: or increasing 'nofile' in /etc/security/limits.conf
par__tee_too_many_args parallel: Warning: or increasing /proc/sys/fs/file-max
par__tee_too_many_args parallel: Error: --tee requires --jobs to be higher. Try --jobs 999.
par__xargs_compat xargs compatibility
par__xargs_compat ### Test -L -l and --max-lines
par__xargs_compat a_b
par__xargs_compat c
par__xargs_compat a_b c
par__xargs_compat a_b c
par__xargs_compat ### xargs -L1 echo
par__xargs_compat a_b
par__xargs_compat c
par__xargs_compat a_b
par__xargs_compat c
par__xargs_compat a_b
par__xargs_compat c
par__xargs_compat Lines ending in space should continue on next line
par__xargs_compat ### xargs -L1 echo
par__xargs_compat a_b c
par__xargs_compat d
par__xargs_compat a_b c
par__xargs_compat d
par__xargs_compat a_b c
par__xargs_compat d
par__xargs_compat ### xargs -L2 echo
par__xargs_compat a_b c d
par__xargs_compat e
par__xargs_compat a_b c d
par__xargs_compat e
par__xargs_compat a_b c d
par__xargs_compat e
par__xargs_compat ### xargs -l echo
par__xargs_compat a_b c
par__xargs_compat d
par__xargs_compat e
par__xargs_compat a_b c
par__xargs_compat d
par__xargs_compat e
par__xargs_compat a_b c
par__xargs_compat d
par__xargs_compat e
par__xargs_compat ### xargs -l2 echo
par__xargs_compat a_b c d
par__xargs_compat e
par__xargs_compat a_b c d
par__xargs_compat e
par__xargs_compat a_b c d
par__xargs_compat e
par__xargs_compat ### xargs -l1 echo
par__xargs_compat a_b c
par__xargs_compat d
par__xargs_compat e
par__xargs_compat a_b c
par__xargs_compat d
par__xargs_compat e
par__xargs_compat a_b c
par__xargs_compat d
par__xargs_compat e
par__xargs_compat ### xargs --max-lines=2 echo
par__xargs_compat a_b c d
par__xargs_compat e
par__xargs_compat a_b c d
par__xargs_compat e
par__xargs_compat a_b c d
par__xargs_compat e
par__xargs_compat ### xargs --max-lines echo
par__xargs_compat a_b c
par__xargs_compat d
par__xargs_compat e
par__xargs_compat a_b c
par__xargs_compat d
par__xargs_compat e
par__xargs_compat a_b c
par__xargs_compat d
par__xargs_compat e
par__xargs_compat ### test too long args
par__xargs_compat parallel: Error: Command line too long (1000005 >= 63543) at input 0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
par__xargs_compat xargs: argument line too long
par__xargs_compat parallel: Error: Command line too long (1000007 >= 10) at input 0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
par__xargs_compat 1 2
par__xargs_compat 3 4
par__xargs_compat 5 6
par__xargs_compat 7 8
par__xargs_compat 9 10
par__xargs_compat xargs: argument line too long
par__xargs_compat 1 2
par__xargs_compat 3 4
par__xargs_compat 5 6
par__xargs_compat 7 8
par__xargs_compat 9 10
par__xargs_compat parallel: Error: Command line too long (1000007 >= 10) at input 0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
par__xargs_compat 1 2
par__xargs_compat 3 4
par__xargs_compat 5 6
par__xargs_compat 7 8
par__xargs_compat 9 10
par__xargs_compat ### Test -x
par__xargs_compat -km
par__xargs_compat parallel: Error: Command line too long (10 >= 10) at input 0: 12345
par__xargs_compat 1 2
par__xargs_compat 3 4
par__xargs_compat 5 6
par__xargs_compat 7 8
par__xargs_compat 9 10
par__xargs_compat -kX
par__xargs_compat parallel: Error: Command line too long (10 >= 10) at input 0: 12345
par__xargs_compat 1 2
par__xargs_compat 3 4
par__xargs_compat 5 6
par__xargs_compat 7 8
par__xargs_compat 9 10
par__xargs_compat -x
par__xargs_compat xargs: argument line too long
par__xargs_compat 1 2
par__xargs_compat 3 4
par__xargs_compat 5 6
par__xargs_compat 7 8
par__xargs_compat -km -x
par__xargs_compat 1 2
par__xargs_compat 12
par__xargs_compat 1234
par__xargs_compat 13
par__xargs_compat 14
par__xargs_compat 15
par__xargs_compat 3 4
par__xargs_compat 5 6
par__xargs_compat 7 8
par__xargs_compat 9 10
par__xargs_compat -kX -x
par__xargs_compat 1 2
par__xargs_compat 12
par__xargs_compat 1234
par__xargs_compat 13
par__xargs_compat 14
par__xargs_compat 15
par__xargs_compat 3 4
par__xargs_compat 5 6
par__xargs_compat 7 8
par__xargs_compat 9 10
par__xargs_compat -x
par__xargs_compat 1 2
par__xargs_compat 12
par__xargs_compat 1234
par__xargs_compat 13
par__xargs_compat 14
par__xargs_compat 15
par__xargs_compat 3 4
par__xargs_compat 5 6
par__xargs_compat 7 8
par__xargs_compat 9 10
par_colsep ### Test of --colsep par_colsep ### Test of --colsep
par_colsep a b c par_colsep a b c
par_colsep a b c par_colsep a b c
@ -92,7 +570,7 @@ par_compress_prg_fails --tag --files parallel: Error: false failed.
par_compress_prg_fails --line-buffer 1 par_compress_prg_fails --line-buffer 1
par_compress_prg_fails --line-buffer parallel: Error: false failed. par_compress_prg_fails --line-buffer parallel: Error: false failed.
par_compress_prg_fails --line-buffer parallel: Error: false failed. par_compress_prg_fails --line-buffer parallel: Error: false failed.
par_compress_prg_fails --line-buffer --files 9 par_compress_prg_fails --line-buffer --files 1
par_compress_prg_fails --line-buffer --files parallel: Warning: Use --files0 when $TMPDIR contains newline. par_compress_prg_fails --line-buffer --files parallel: Warning: Use --files0 when $TMPDIR contains newline.
par_compress_prg_fails --line-buffer --files parallel: Error: false failed. par_compress_prg_fails --line-buffer --files parallel: Error: false failed.
par_compress_prg_fails --line-buffer --files parallel: Error: false failed. par_compress_prg_fails --line-buffer --files parallel: Error: false failed.
@ -615,10 +1093,6 @@ par_maxlinelen_X_I Chars per line (817788/13): 62906
par_maxlinelen_m_I ### Test max line length -m -I par_maxlinelen_m_I ### Test max line length -m -I
par_maxlinelen_m_I 183794839f45c8f7e38fe7c677c49958 - par_maxlinelen_m_I 183794839f45c8f7e38fe7c677c49958 -
par_maxlinelen_m_I Chars per line (697810/11): 63437 par_maxlinelen_m_I Chars per line (697810/11): 63437
par_nice Check that --nice works
par_nice load_10
par_nice bzip2 18
par_nice bzip2 18
par_opt_arg_eaten bug #31716: Options with optional arguments may eat next argument par_opt_arg_eaten bug #31716: Options with optional arguments may eat next argument
par_opt_arg_eaten ### Test https://savannah.gnu.org/bugs/index.php?31716 par_opt_arg_eaten ### Test https://savannah.gnu.org/bugs/index.php?31716
par_opt_arg_eaten 1 OK par_opt_arg_eaten 1 OK
@ -708,213 +1182,6 @@ par_pipe_tee 314572800
par_pipepart_tee bug #45479: --pipe/--pipepart --tee par_pipepart_tee bug #45479: --pipe/--pipepart --tee
par_pipepart_tee --pipepart --tee par_pipepart_tee --pipepart --tee
par_pipepart_tee 314572800 par_pipepart_tee 314572800
par_quote_special_results ### Test --results on file systems with limited UTF8 support
par_quote_special_results mkfs.btrfs
par_quote_special_results mkfs.btrfs NOTE: several default settings have changed in version 5.15, please make sure
par_quote_special_results mkfs.btrfs this does not affect your deployments:
par_quote_special_results mkfs.btrfs - DUP for metadata (-m dup)
par_quote_special_results mkfs.btrfs - enabled no-holes (-O no-holes)
par_quote_special_results mkfs.btrfs - enabled free-space-tree (-R free-space-tree)
par_quote_special_results mkfs.btrfs
par_quote_special_results mkfs.btrfs Label: (null)
par_quote_special_results mkfs.btrfs Node size: 16384
par_quote_special_results mkfs.btrfs Sector size: 4096
par_quote_special_results mkfs.btrfs Filesystem size: 301.00MiB
par_quote_special_results mkfs.btrfs Block group profiles:
par_quote_special_results mkfs.btrfs Data: single 8.00MiB
par_quote_special_results mkfs.btrfs Metadata: DUP 32.00MiB
par_quote_special_results mkfs.btrfs System: DUP 8.00MiB
par_quote_special_results mkfs.btrfs SSD detected: no
par_quote_special_results mkfs.btrfs Zoned device: no
par_quote_special_results mkfs.btrfs Runtime features: free-space-tree
par_quote_special_results mkfs.btrfs Checksum: crc32c
par_quote_special_results mkfs.btrfs Number of devices: 1
par_quote_special_results mkfs.btrfs Devices:
par_quote_special_results mkfs.btrfs 1 301.00MiB /dev/shm/par-test-loop
par_quote_special_results mkfs.btrfs
par_quote_special_results mkfs.btrfs Filesystem 1K-blocks Used Available Use% Mounted on
par_quote_special_results mkfs.btrfs /dev/loop 999999 99999 99999 9% /tmp/par-test-loop
par_quote_special_results mkfs.btrfs . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,. ./,..
par_quote_special_results mkfs.btrfs
par_quote_special_results mkfs.btrfs . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ par_quote_special_results mkfs.btrfs ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./! ./" ./# ./$ ./% ./& ./' ./( ./) ./* ./++ ./+_ ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./: ./; ./< ./= ./> ./? ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./\ ./] ./^ ./_ ./` ./a ./b ./c ./d ./e ./f ./g ./h ./i ./j ./k ./l ./m ./n ./o ./p ./q ./r ./s ./t ./u ./v ./w ./x ./y ./z ./{ ./| ./} ./~ ./ ./€
par_quote_special_results mkfs.btrfs . ./€ ./<2F> ./ ./ƒ ./„ ./… ./† ./‡ ./ˆ ./‰ ./Š ./ ./Œ ./<2F> ./Ž ./<2F> ./<2F> ./ ./ ./“ ./” ./• ./ ./— ./˜ ./™ ./š ./ ./œ ./<2F> ./ž ./Ÿ ./  ./¡ ./¢ ./£ ./¤ ./¥ ./¦ ./§ ./¨ ./© ./ª ./« ./¬ ./­ ./® ./¯ ./° ./± ./² ./³ ./´ ./µ ./¶ ./· ./¸ ./¹ ./º ./» ./¼ ./½ ./¾ ./¿ ./À ./Á ./ ./à ./Ä ./Å ./Æ ./Ç ./È ./É ./Ê ./Ë ./Ì ./Í ./Î ./Ï ./Ð ./Ñ ./Ò ./Ó ./Ô ./Õ ./Ö ./× ./Ø ./Ù ./Ú ./Û ./Ü ./Ý ./Þ ./ß ./à ./á ./â ./ã ./ä ./å ./æ ./ç ./è ./é ./ê ./ë ./ì ./í ./î ./ï ./ð ./ñ ./ò ./ó ./ô ./õ ./ö ./÷ ./ø ./ù ./ú ./û ./ü ./ý ./þ ./ÿ
par_quote_special_results mkfs.btrfs 301+0 records in
par_quote_special_results mkfs.btrfs 301+0 records out
par_quote_special_results mkfs.exfat Creating exFAT filesystem(/dev/shm/par-test-loop cluster size=32768)
par_quote_special_results mkfs.exfat
par_quote_special_results mkfs.exfat Writing volume boot record: done
par_quote_special_results mkfs.exfat Writing backup volume boot record: done
par_quote_special_results mkfs.exfat Fat table creation: done
par_quote_special_results mkfs.exfat Allocation bitmap creation: done
par_quote_special_results mkfs.exfat Upcase table creation: done
par_quote_special_results mkfs.exfat Writing root directory entry: done
par_quote_special_results mkfs.exfat Synchronizing...
par_quote_special_results mkfs.exfat
par_quote_special_results mkfs.exfat exFAT format complete!
par_quote_special_results mkfs.exfat Filesystem 1K-blocks Used Available Use% Mounted on
par_quote_special_results mkfs.exfat /dev/loop 999999 99999 99999 9% /tmp/par-test-loop
par_quote_special_results mkfs.exfat . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,
par_quote_special_results mkfs.exfat . ./ ./! ./# ./$ ./% ./& ./' ./( ./) ./++ ./+01 ./+02 ./+03 ./+04 ./+05 ./+06 ./+07 ./+08 ./+09 ./+0a ./+0b ./+0c ./+0d ./+0e ./+0f ./+10 ./+11 ./+12 ./+13 ./+14 ./+15 ./+16 ./+17 ./+18 ./+19 ./+1a ./+1b ./+1c ./+1d ./+1e ./+1f ./+80 ./+_ ./+a ./+b ./+d ./+g ./+k ./+l ./+p ./+y ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./; ./= ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./] ./^ ./_ ./` ./{ ./} ./~ ./
par_quote_special_results mkfs.exfat . ./+80 ./+81 ./+82 ./+83 ./+84 ./+85 ./+86 ./+87 ./+88 ./+89 ./+8a ./+8b ./+8c ./+8d ./+8e ./+8f ./+90 ./+91 ./+92 ./+93 ./+94 ./+95 ./+96 ./+97 ./+98 ./+99 ./+9a ./+9b ./+9c ./+9d ./+9e ./+9f ./+a0 ./+a1 ./+a2 ./+a3 ./+a4 ./+a5 ./+a6 ./+a7 ./+a8 ./+a9 ./+aa ./+ab ./+ac ./+ad ./+ae ./+af ./+b0 ./+b1 ./+b2 ./+b3 ./+b4 ./+b5 ./+b6 ./+b7 ./+b8 ./+b9 ./+ba ./+bb ./+bc ./+bd ./+be ./+bf ./+c0 ./+c1 ./+c2 ./+c3 ./+c4 ./+c5 ./+c6 ./+c7 ./+c8 ./+c9 ./+ca ./+cb ./+cc ./+cd ./+ce ./+cf ./+d0 ./+d1 ./+d2 ./+d3 ./+d4 ./+d5 ./+d6 ./+d7 ./+d8 ./+d9 ./+da ./+db ./+dc ./+dd ./+de ./+df ./+e0 ./+e1 ./+e2 ./+e3 ./+e4 ./+e5 ./+e6 ./+e7 ./+e8 ./+e9 ./+ea ./+eb ./+ec ./+ed ./+ee ./+ef ./+f0 ./+f1 ./+f2 ./+f3 ./+f4 ./+f5 ./+f6 ./+f7 ./+f8 ./+f9 ./+fa ./+fb ./+fc ./+fd ./+fe ./+ff
par_quote_special_results mkfs.exfat 301+0 records in
par_quote_special_results mkfs.exfat 301+0 records out
par_quote_special_results mkfs.ext2 Discarding device blocks: 0/77056 done
par_quote_special_results mkfs.ext2 Creating filesystem with 77056 4k blocks and 77088 inodes
par_quote_special_results mkfs.ext2 Superblock backups stored on blocks:
par_quote_special_results mkfs.ext2 32768
par_quote_special_results mkfs.ext2
par_quote_special_results mkfs.ext2 Allocating group tables: 0/3 done
par_quote_special_results mkfs.ext2 Writing inode tables: 0/3 done
par_quote_special_results mkfs.ext2 Writing superblocks and filesystem accounting information: 0/3 done
par_quote_special_results mkfs.ext2
par_quote_special_results mkfs.ext2 Filesystem 1K-blocks Used Available Use% Mounted on
par_quote_special_results mkfs.ext2 /dev/loop 999999 99999 99999 9% /tmp/par-test-loop
par_quote_special_results mkfs.ext2 . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,. ./,..
par_quote_special_results mkfs.ext2
par_quote_special_results mkfs.ext2 . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ par_quote_special_results mkfs.ext2 ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./! ./" ./# ./$ ./% ./& ./' ./( ./) ./* ./++ ./+_ ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./: ./; ./< ./= ./> ./? ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./\ ./] ./^ ./_ ./` ./a ./b ./c ./d ./e ./f ./g ./h ./i ./j ./k ./l ./m ./n ./o ./p ./q ./r ./s ./t ./u ./v ./w ./x ./y ./z ./{ ./| ./} ./~ ./ ./€
par_quote_special_results mkfs.ext2 . ./€ ./<2F> ./ ./ƒ ./„ ./… ./† ./‡ ./ˆ ./‰ ./Š ./ ./Œ ./<2F> ./Ž ./<2F> ./<2F> ./ ./ ./“ ./” ./• ./ ./— ./˜ ./™ ./š ./ ./œ ./<2F> ./ž ./Ÿ ./  ./¡ ./¢ ./£ ./¤ ./¥ ./¦ ./§ ./¨ ./© ./ª ./« ./¬ ./­ ./® ./¯ ./° ./± ./² ./³ ./´ ./µ ./¶ ./· ./¸ ./¹ ./º ./» ./¼ ./½ ./¾ ./¿ ./À ./Á ./ ./à ./Ä ./Å ./Æ ./Ç ./È ./É ./Ê ./Ë ./Ì ./Í ./Î ./Ï ./Ð ./Ñ ./Ò ./Ó ./Ô ./Õ ./Ö ./× ./Ø ./Ù ./Ú ./Û ./Ü ./Ý ./Þ ./ß ./à ./á ./â ./ã ./ä ./å ./æ ./ç ./è ./é ./ê ./ë ./ì ./í ./î ./ï ./ð ./ñ ./ò ./ó ./ô ./õ ./ö ./÷ ./ø ./ù ./ú ./û ./ü ./ý ./þ ./ÿ
par_quote_special_results mkfs.ext2 301+0 records in
par_quote_special_results mkfs.ext2 301+0 records out
par_quote_special_results mkfs.ext3 Discarding device blocks: 0/77056 done
par_quote_special_results mkfs.ext3 Creating filesystem with 77056 4k blocks and 77088 inodes
par_quote_special_results mkfs.ext3 Superblock backups stored on blocks:
par_quote_special_results mkfs.ext3 32768
par_quote_special_results mkfs.ext3
par_quote_special_results mkfs.ext3 Allocating group tables: 0/3 done
par_quote_special_results mkfs.ext3 Writing inode tables: 0/3 done
par_quote_special_results mkfs.ext3 Creating journal (4096 blocks): done
par_quote_special_results mkfs.ext3 Writing superblocks and filesystem accounting information: 0/3 done
par_quote_special_results mkfs.ext3
par_quote_special_results mkfs.ext3 Filesystem 1K-blocks Used Available Use% Mounted on
par_quote_special_results mkfs.ext3 /dev/loop 999999 99999 99999 9% /tmp/par-test-loop
par_quote_special_results mkfs.ext3 . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,. ./,..
par_quote_special_results mkfs.ext3
par_quote_special_results mkfs.ext3 . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ par_quote_special_results mkfs.ext3 ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./! ./" ./# ./$ ./% ./& ./' ./( ./) ./* ./++ ./+_ ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./: ./; ./< ./= ./> ./? ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./\ ./] ./^ ./_ ./` ./a ./b ./c ./d ./e ./f ./g ./h ./i ./j ./k ./l ./m ./n ./o ./p ./q ./r ./s ./t ./u ./v ./w ./x ./y ./z ./{ ./| ./} ./~ ./ ./€
par_quote_special_results mkfs.ext3 . ./€ ./<2F> ./ ./ƒ ./„ ./… ./† ./‡ ./ˆ ./‰ ./Š ./ ./Œ ./<2F> ./Ž ./<2F> ./<2F> ./ ./ ./“ ./” ./• ./ ./— ./˜ ./™ ./š ./ ./œ ./<2F> ./ž ./Ÿ ./  ./¡ ./¢ ./£ ./¤ ./¥ ./¦ ./§ ./¨ ./© ./ª ./« ./¬ ./­ ./® ./¯ ./° ./± ./² ./³ ./´ ./µ ./¶ ./· ./¸ ./¹ ./º ./» ./¼ ./½ ./¾ ./¿ ./À ./Á ./ ./à ./Ä ./Å ./Æ ./Ç ./È ./É ./Ê ./Ë ./Ì ./Í ./Î ./Ï ./Ð ./Ñ ./Ò ./Ó ./Ô ./Õ ./Ö ./× ./Ø ./Ù ./Ú ./Û ./Ü ./Ý ./Þ ./ß ./à ./á ./â ./ã ./ä ./å ./æ ./ç ./è ./é ./ê ./ë ./ì ./í ./î ./ï ./ð ./ñ ./ò ./ó ./ô ./õ ./ö ./÷ ./ø ./ù ./ú ./û ./ü ./ý ./þ ./ÿ
par_quote_special_results mkfs.ext3 301+0 records in
par_quote_special_results mkfs.ext3 301+0 records out
par_quote_special_results mkfs.ext4 Discarding device blocks: 0/77056 done
par_quote_special_results mkfs.ext4 Creating filesystem with 77056 4k blocks and 77088 inodes
par_quote_special_results mkfs.ext4 Superblock backups stored on blocks:
par_quote_special_results mkfs.ext4 32768
par_quote_special_results mkfs.ext4
par_quote_special_results mkfs.ext4 Allocating group tables: 0/3 done
par_quote_special_results mkfs.ext4 Writing inode tables: 0/3 done
par_quote_special_results mkfs.ext4 Creating journal (4096 blocks): done
par_quote_special_results mkfs.ext4 Writing superblocks and filesystem accounting information: 0/3 done
par_quote_special_results mkfs.ext4
par_quote_special_results mkfs.ext4 Filesystem 1K-blocks Used Available Use% Mounted on
par_quote_special_results mkfs.ext4 /dev/loop 999999 99999 99999 9% /tmp/par-test-loop
par_quote_special_results mkfs.ext4 . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,. ./,..
par_quote_special_results mkfs.ext4
par_quote_special_results mkfs.ext4 . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ par_quote_special_results mkfs.ext4 ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./! ./" ./# ./$ ./% ./& ./' ./( ./) ./* ./++ ./+_ ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./: ./; ./< ./= ./> ./? ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./\ ./] ./^ ./_ ./` ./a ./b ./c ./d ./e ./f ./g ./h ./i ./j ./k ./l ./m ./n ./o ./p ./q ./r ./s ./t ./u ./v ./w ./x ./y ./z ./{ ./| ./} ./~ ./ ./€
par_quote_special_results mkfs.ext4 . ./€ ./<2F> ./ ./ƒ ./„ ./… ./† ./‡ ./ˆ ./‰ ./Š ./ ./Œ ./<2F> ./Ž ./<2F> ./<2F> ./ ./ ./“ ./” ./• ./ ./— ./˜ ./™ ./š ./ ./œ ./<2F> ./ž ./Ÿ ./  ./¡ ./¢ ./£ ./¤ ./¥ ./¦ ./§ ./¨ ./© ./ª ./« ./¬ ./­ ./® ./¯ ./° ./± ./² ./³ ./´ ./µ ./¶ ./· ./¸ ./¹ ./º ./» ./¼ ./½ ./¾ ./¿ ./À ./Á ./ ./à ./Ä ./Å ./Æ ./Ç ./È ./É ./Ê ./Ë ./Ì ./Í ./Î ./Ï ./Ð ./Ñ ./Ò ./Ó ./Ô ./Õ ./Ö ./× ./Ø ./Ù ./Ú ./Û ./Ü ./Ý ./Þ ./ß ./à ./á ./â ./ã ./ä ./å ./æ ./ç ./è ./é ./ê ./ë ./ì ./í ./î ./ï ./ð ./ñ ./ò ./ó ./ô ./õ ./ö ./÷ ./ø ./ù ./ú ./û ./ü ./ý ./þ ./ÿ
par_quote_special_results mkfs.ext4 301+0 records in
par_quote_special_results mkfs.ext4 301+0 records out
par_quote_special_results mkfs.reiserfs -fq Filesystem 1K-blocks Used Available Use% Mounted on
par_quote_special_results mkfs.reiserfs -fq /dev/loop 999999 99999 99999 9% /tmp/par-test-loop
par_quote_special_results mkfs.reiserfs -fq . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,. ./,..
par_quote_special_results mkfs.reiserfs -fq
par_quote_special_results mkfs.reiserfs -fq . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ par_quote_special_results mkfs.reiserfs -fq ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./! ./" ./# ./$ ./% ./& ./' ./( ./) ./* ./++ ./+_ ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./: ./; ./< ./= ./> ./? ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./\ ./] ./^ ./_ ./` ./a ./b ./c ./d ./e ./f ./g ./h ./i ./j ./k ./l ./m ./n ./o ./p ./q ./r ./s ./t ./u ./v ./w ./x ./y ./z ./{ ./| ./} ./~ ./ ./€
par_quote_special_results mkfs.reiserfs -fq . ./€ ./<2F> ./ ./ƒ ./„ ./… ./† ./‡ ./ˆ ./‰ ./Š ./ ./Œ ./<2F> ./Ž ./<2F> ./<2F> ./ ./ ./“ ./” ./• ./ ./— ./˜ ./™ ./š ./ ./œ ./<2F> ./ž ./Ÿ ./  ./¡ ./¢ ./£ ./¤ ./¥ ./¦ ./§ ./¨ ./© ./ª ./« ./¬ ./­ ./® ./¯ ./° ./± ./² ./³ ./´ ./µ ./¶ ./· ./¸ ./¹ ./º ./» ./¼ ./½ ./¾ ./¿ ./À ./Á ./ ./à ./Ä ./Å ./Æ ./Ç ./È ./É ./Ê ./Ë ./Ì ./Í ./Î ./Ï ./Ð ./Ñ ./Ò ./Ó ./Ô ./Õ ./Ö ./× ./Ø ./Ù ./Ú ./Û ./Ü ./Ý ./Þ ./ß ./à ./á ./â ./ã ./ä ./å ./æ ./ç ./è ./é ./ê ./ë ./ì ./í ./î ./ï ./ð ./ñ ./ò ./ó ./ô ./õ ./ö ./÷ ./ø ./ù ./ú ./û ./ü ./ý ./þ ./ÿ
par_quote_special_results mkfs.reiserfs -fq 301+0 records in
par_quote_special_results mkfs.reiserfs -fq 301+0 records out
par_quote_special_results mkfs.reiserfs -fq mkfs.reiserfs 3.6.27
par_quote_special_results mkfs.reiserfs -fq
par_quote_special_results mkfs.ntfs -F Cluster size has been automatically set to 4096 bytes.
par_quote_special_results mkfs.ntfs -F Initializing device with zeroes: 0% 0% 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% 93% 94% 95% 96% 97% 98% 99%100% - Done.
par_quote_special_results mkfs.ntfs -F Creating NTFS volume structures.
par_quote_special_results mkfs.ntfs -F mkntfs completed successfully. Have a nice day.
par_quote_special_results mkfs.ntfs -F Filesystem 1K-blocks Used Available Use% Mounted on
par_quote_special_results mkfs.ntfs -F /dev/loop 999999 99999 99999 9% /tmp/par-test-loop
par_quote_special_results mkfs.ntfs -F . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,. ./,..
par_quote_special_results mkfs.ntfs -F
par_quote_special_results mkfs.ntfs -F . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ par_quote_special_results mkfs.ntfs -F ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./! ./" ./# ./$ ./% ./& ./' ./( ./) ./* ./++ ./+80 ./+_ ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./: ./; ./< ./= ./> ./? ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./\ ./] ./^ ./_ ./` ./a ./b ./c ./d ./e ./f ./g ./h ./i ./j ./k ./l ./m ./n ./o ./p ./q ./r ./s ./t ./u ./v ./w ./x ./y ./z ./{ ./| ./} ./~ ./
par_quote_special_results mkfs.ntfs -F . ./+80 ./+81 ./+82 ./+83 ./+84 ./+85 ./+86 ./+87 ./+88 ./+89 ./+8a ./+8b ./+8c ./+8d ./+8e ./+8f ./+90 ./+91 ./+92 ./+93 ./+94 ./+95 ./+96 ./+97 ./+98 ./+99 ./+9a ./+9b ./+9c ./+9d ./+9e ./+9f ./+a0 ./+a1 ./+a2 ./+a3 ./+a4 ./+a5 ./+a6 ./+a7 ./+a8 ./+a9 ./+aa ./+ab ./+ac ./+ad ./+ae ./+af ./+b0 ./+b1 ./+b2 ./+b3 ./+b4 ./+b5 ./+b6 ./+b7 ./+b8 ./+b9 ./+ba ./+bb ./+bc ./+bd ./+be ./+bf ./+c0 ./+c1 ./+c2 ./+c3 ./+c4 ./+c5 ./+c6 ./+c7 ./+c8 ./+c9 ./+ca ./+cb ./+cc ./+cd ./+ce ./+cf ./+d0 ./+d1 ./+d2 ./+d3 ./+d4 ./+d5 ./+d6 ./+d7 ./+d8 ./+d9 ./+da ./+db ./+dc ./+dd ./+de ./+df ./+e0 ./+e1 ./+e2 ./+e3 ./+e4 ./+e5 ./+e6 ./+e7 ./+e8 ./+e9 ./+ea ./+eb ./+ec ./+ed ./+ee ./+ef ./+f0 ./+f1 ./+f2 ./+f3 ./+f4 ./+f5 ./+f6 ./+f7 ./+f8 ./+f9 ./+fa ./+fb ./+fc ./+fd ./+fe ./+ff
par_quote_special_results mkfs.ntfs -F 301+0 records in
par_quote_special_results mkfs.ntfs -F 301+0 records out
par_quote_special_results mkfs.ntfs -F /dev/shm/par-test-loop is not a block device.
par_quote_special_results mkfs.ntfs -F mkntfs forced anyway.
par_quote_special_results mkfs.ntfs -F The sector size was not specified for /dev/shm/par-test-loop and it could not be obtained automatically. It has been set to 512 bytes.
par_quote_special_results mkfs.ntfs -F The partition start sector was not specified for /dev/shm/par-test-loop and it could not be obtained automatically. It has been set to 0.
par_quote_special_results mkfs.ntfs -F The number of sectors per track was not specified for /dev/shm/par-test-loop and it could not be obtained automatically. It has been set to 0.
par_quote_special_results mkfs.ntfs -F The number of heads was not specified for /dev/shm/par-test-loop and it could not be obtained automatically. It has been set to 0.
par_quote_special_results mkfs.ntfs -F To boot from a device, Windows needs the 'partition start sector', the 'sectors per track' and the 'number of heads' to be set.
par_quote_special_results mkfs.ntfs -F Windows will not be able to boot from this device.
par_quote_special_results mkfs.xfs -f meta-data=/dev/shm/par-test-loop isize=512 agcount=4, agsize=19264 blks
par_quote_special_results mkfs.xfs -f = sectsz=512 attr=2, projid32bit=1
par_quote_special_results mkfs.xfs -f data = bsize=4096 blocks=77056, imaxpct=25
par_quote_special_results mkfs.xfs -f = sunit=0 swidth=0 blks
par_quote_special_results mkfs.xfs -f naming =version 2 bsize=4096 ascii-ci=0, ftype=1
par_quote_special_results mkfs.xfs -f = sectsz=512 sunit=0 blks, lazy-count=1
par_quote_special_results mkfs.xfs -f realtime =none extsz=4096 blocks=0, rtextents=0
par_quote_special_results mkfs.xfs -f Filesystem 1K-blocks Used Available Use% Mounted on
par_quote_special_results mkfs.xfs -f /dev/loop 999999 99999 99999 9% /tmp/par-test-loop
par_quote_special_results mkfs.xfs -f . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,. ./,..
par_quote_special_results mkfs.xfs -f
par_quote_special_results mkfs.xfs -f . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ par_quote_special_results mkfs.xfs -f ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./! ./" ./# ./$ ./% ./& ./' ./( ./) ./* ./++ ./+_ ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./: ./; ./< ./= ./> ./? ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./\ ./] ./^ ./_ ./` ./a ./b ./c ./d ./e ./f ./g ./h ./i ./j ./k ./l ./m ./n ./o ./p ./q ./r ./s ./t ./u ./v ./w ./x ./y ./z ./{ ./| ./} ./~ ./ ./€
par_quote_special_results mkfs.xfs -f . ./€ ./<2F> ./ ./ƒ ./„ ./… ./† ./‡ ./ˆ ./‰ ./Š ./ ./Œ ./<2F> ./Ž ./<2F> ./<2F> ./ ./ ./“ ./” ./• ./ ./— ./˜ ./™ ./š ./ ./œ ./<2F> ./ž ./Ÿ ./  ./¡ ./¢ ./£ ./¤ ./¥ ./¦ ./§ ./¨ ./© ./ª ./« ./¬ ./­ ./® ./¯ ./° ./± ./² ./³ ./´ ./µ ./¶ ./· ./¸ ./¹ ./º ./» ./¼ ./½ ./¾ ./¿ ./À ./Á ./ ./à ./Ä ./Å ./Æ ./Ç ./È ./É ./Ê ./Ë ./Ì ./Í ./Î ./Ï ./Ð ./Ñ ./Ò ./Ó ./Ô ./Õ ./Ö ./× ./Ø ./Ù ./Ú ./Û ./Ü ./Ý ./Þ ./ß ./à ./á ./â ./ã ./ä ./å ./æ ./ç ./è ./é ./ê ./ë ./ì ./í ./î ./ï ./ð ./ñ ./ò ./ó ./ô ./õ ./ö ./÷ ./ø ./ù ./ú ./û ./ü ./ý ./þ ./ÿ
par_quote_special_results mkfs.xfs -f 301+0 records in
par_quote_special_results mkfs.xfs -f 301+0 records out
par_quote_special_results mkfs.minix 21856 inodes
par_quote_special_results mkfs.minix 65535 blocks
par_quote_special_results mkfs.minix Firstdatazone=696 (696)
par_quote_special_results mkfs.minix Zonesize=1024
par_quote_special_results mkfs.minix Maxsize=268966912
par_quote_special_results mkfs.minix
par_quote_special_results mkfs.minix Filesystem 1K-blocks Used Available Use% Mounted on
par_quote_special_results mkfs.minix /dev/loop 999999 99999 99999 9% /tmp/par-test-loop
par_quote_special_results mkfs.minix . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,. ./,..
par_quote_special_results mkfs.minix
par_quote_special_results mkfs.minix . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ par_quote_special_results mkfs.minix ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./! ./" ./# ./$ ./% ./& ./' ./( ./) ./* ./++ ./+_ ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./: ./; ./< ./= ./> ./? ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./\ ./] ./^ ./_ ./` ./a ./b ./c ./d ./e ./f ./g ./h ./i ./j ./k ./l ./m ./n ./o ./p ./q ./r ./s ./t ./u ./v ./w ./x ./y ./z ./{ ./| ./} ./~ ./ ./€
par_quote_special_results mkfs.minix . ./€ ./<2F> ./ ./ƒ ./„ ./… ./† ./‡ ./ˆ ./‰ ./Š ./ ./Œ ./<2F> ./Ž ./<2F> ./<2F> ./ ./ ./“ ./” ./• ./ ./— ./˜ ./™ ./š ./ ./œ ./<2F> ./ž ./Ÿ ./  ./¡ ./¢ ./£ ./¤ ./¥ ./¦ ./§ ./¨ ./© ./ª ./« ./¬ ./­ ./® ./¯ ./° ./± ./² ./³ ./´ ./µ ./¶ ./· ./¸ ./¹ ./º ./» ./¼ ./½ ./¾ ./¿ ./À ./Á ./ ./à ./Ä ./Å ./Æ ./Ç ./È ./É ./Ê ./Ë ./Ì ./Í ./Î ./Ï ./Ð ./Ñ ./Ò ./Ó ./Ô ./Õ ./Ö ./× ./Ø ./Ù ./Ú ./Û ./Ü ./Ý ./Þ ./ß ./à ./á ./â ./ã ./ä ./å ./æ ./ç ./è ./é ./ê ./ë ./ì ./í ./î ./ï ./ð ./ñ ./ò ./ó ./ô ./õ ./ö ./÷ ./ø ./ù ./ú ./û ./ü ./ý ./þ ./ÿ
par_quote_special_results mkfs.minix 301+0 records in
par_quote_special_results mkfs.minix 301+0 records out
par_quote_special_results mkfs.fat mkfs.fat 4.2 (2021-01-31)
par_quote_special_results mkfs.fat Filesystem 1K-blocks Used Available Use% Mounted on
par_quote_special_results mkfs.fat /dev/loop 999999 99999 99999 9% /tmp/par-test-loop
par_quote_special_results mkfs.fat . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,
par_quote_special_results mkfs.fat . ./! ./# ./$ ./% ./& ./' ./( ./) ./++ ./+01 ./+02 ./+03 ./+04 ./+05 ./+06 ./+07 ./+08 ./+09 ./+0a ./+0b ./+0c ./+0d ./+0e ./+0f ./+10 ./+11 ./+12 ./+13 ./+14 ./+15 ./+16 ./+17 ./+18 ./+19 ./+1a ./+1b ./+1c ./+1d ./+1e ./+1f ./+20 ./+_ ./+a ./+b ./+d ./+g ./+k ./+l ./+p ./+y ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./; ./= ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./] ./^ ./_ ./` ./{ ./} ./~ ./ ./€
par_quote_special_results mkfs.fat . ./€ ./<2F> ./ ./ƒ ./„ ./… ./† ./‡ ./ˆ ./‰ ./Š ./ ./Œ ./<2F> ./Ž ./<2F> ./<2F> ./ ./ ./“ ./” ./• ./ ./— ./˜ ./™ ./š ./ ./œ ./<2F> ./ž ./Ÿ ./  ./¡ ./¢ ./£ ./¤ ./¥ ./¦ ./§ ./¨ ./© ./ª ./« ./¬ ./­ ./® ./¯ ./° ./± ./² ./³ ./´ ./µ ./¶ ./· ./¸ ./¹ ./º ./» ./¼ ./½ ./¾ ./¿ ./À ./Á ./ ./à ./Ä ./Å ./Æ ./Ç ./È ./É ./Ê ./Ë ./Ì ./Í ./Î ./Ï ./Ð ./Ñ ./Ò ./Ó ./Ô ./Õ ./Ö ./× ./Ø ./Ù ./Ú ./Û ./Ü ./Ý ./Þ ./ß ./÷ ./ÿ
par_quote_special_results mkfs.fat 301+0 records in
par_quote_special_results mkfs.fat 301+0 records out
par_quote_special_results mkfs.vfat mkfs.fat 4.2 (2021-01-31)
par_quote_special_results mkfs.vfat Filesystem 1K-blocks Used Available Use% Mounted on
par_quote_special_results mkfs.vfat /dev/loop 999999 99999 99999 9% /tmp/par-test-loop
par_quote_special_results mkfs.vfat . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,
par_quote_special_results mkfs.vfat . ./! ./# ./$ ./% ./& ./' ./( ./) ./++ ./+01 ./+02 ./+03 ./+04 ./+05 ./+06 ./+07 ./+08 ./+09 ./+0a ./+0b ./+0c ./+0d ./+0e ./+0f ./+10 ./+11 ./+12 ./+13 ./+14 ./+15 ./+16 ./+17 ./+18 ./+19 ./+1a ./+1b ./+1c ./+1d ./+1e ./+1f ./+20 ./+_ ./+a ./+b ./+d ./+g ./+k ./+l ./+p ./+y ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./; ./= ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./] ./^ ./_ ./` ./{ ./} ./~ ./ ./€
par_quote_special_results mkfs.vfat . ./€ ./<2F> ./ ./ƒ ./„ ./… ./† ./‡ ./ˆ ./‰ ./Š ./ ./Œ ./<2F> ./Ž ./<2F> ./<2F> ./ ./ ./“ ./” ./• ./ ./— ./˜ ./™ ./š ./ ./œ ./<2F> ./ž ./Ÿ ./  ./¡ ./¢ ./£ ./¤ ./¥ ./¦ ./§ ./¨ ./© ./ª ./« ./¬ ./­ ./® ./¯ ./° ./± ./² ./³ ./´ ./µ ./¶ ./· ./¸ ./¹ ./º ./» ./¼ ./½ ./¾ ./¿ ./À ./Á ./ ./à ./Ä ./Å ./Æ ./Ç ./È ./É ./Ê ./Ë ./Ì ./Í ./Î ./Ï ./Ð ./Ñ ./Ò ./Ó ./Ô ./Õ ./Ö ./× ./Ø ./Ù ./Ú ./Û ./Ü ./Ý ./Þ ./ß ./÷ ./ÿ
par_quote_special_results mkfs.vfat 301+0 records in
par_quote_special_results mkfs.vfat 301+0 records out
par_quote_special_results mkfs.msdos mkfs.fat 4.2 (2021-01-31)
par_quote_special_results mkfs.msdos Filesystem 1K-blocks Used Available Use% Mounted on
par_quote_special_results mkfs.msdos /dev/loop 999999 99999 99999 9% /tmp/par-test-loop
par_quote_special_results mkfs.msdos . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,
par_quote_special_results mkfs.msdos . ./! ./# ./$ ./% ./& ./' ./( ./) ./++ ./+01 ./+02 ./+03 ./+04 ./+05 ./+06 ./+07 ./+08 ./+09 ./+0a ./+0b ./+0c ./+0d ./+0e ./+0f ./+10 ./+11 ./+12 ./+13 ./+14 ./+15 ./+16 ./+17 ./+18 ./+19 ./+1a ./+1b ./+1c ./+1d ./+1e ./+1f ./+20 ./+_ ./+a ./+b ./+d ./+g ./+k ./+l ./+p ./+y ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./; ./= ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./] ./^ ./_ ./` ./{ ./} ./~ ./ ./€
par_quote_special_results mkfs.msdos . ./€ ./<2F> ./ ./ƒ ./„ ./… ./† ./‡ ./ˆ ./‰ ./Š ./ ./Œ ./<2F> ./Ž ./<2F> ./<2F> ./ ./ ./“ ./” ./• ./ ./— ./˜ ./™ ./š ./ ./œ ./<2F> ./ž ./Ÿ ./  ./¡ ./¢ ./£ ./¤ ./¥ ./¦ ./§ ./¨ ./© ./ª ./« ./¬ ./­ ./® ./¯ ./° ./± ./² ./³ ./´ ./µ ./¶ ./· ./¸ ./¹ ./º ./» ./¼ ./½ ./¾ ./¿ ./À ./Á ./ ./à ./Ä ./Å ./Æ ./Ç ./È ./É ./Ê ./Ë ./Ì ./Í ./Î ./Ï ./Ð ./Ñ ./Ò ./Ó ./Ô ./Õ ./Ö ./× ./Ø ./Ù ./Ú ./Û ./Ü ./Ý ./Þ ./ß ./÷ ./ÿ
par_quote_special_results mkfs.msdos 301+0 records in
par_quote_special_results mkfs.msdos 301+0 records out
par_quote_special_results mkfs.f2fs
par_quote_special_results mkfs.f2fs
par_quote_special_results mkfs.f2fs Info: Disable heap-based policy
par_quote_special_results mkfs.f2fs Info: Debug level = 0
par_quote_special_results mkfs.f2fs Info: Trim is enabled
par_quote_special_results mkfs.f2fs Info: Segments per section = 1
par_quote_special_results mkfs.f2fs Info: Sections per zone = 1
par_quote_special_results mkfs.f2fs Info: sector size = 512
par_quote_special_results mkfs.f2fs Info: total sectors = 616448 (301 MB)
par_quote_special_results mkfs.f2fs Info: zone aligned segment0 blkaddr: 512
par_quote_special_results mkfs.f2fs Info: format version with
par_quote_special_results mkfs.f2fs Info: [/dev/shm/par-test-loop Discarding device
par_quote_special_results mkfs.f2fs Info: format successful
par_quote_special_results mkfs.f2fs Filesystem 1K-blocks Used Available Use% Mounted on
par_quote_special_results mkfs.f2fs /dev/loop 999999 99999 99999 9% /tmp/par-test-loop
par_quote_special_results mkfs.f2fs . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,. ./,..
par_quote_special_results mkfs.f2fs
par_quote_special_results mkfs.f2fs . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ par_quote_special_results mkfs.f2fs ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./! ./" ./# ./$ ./% ./& ./' ./( ./) ./* ./++ ./+_ ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./: ./; ./< ./= ./> ./? ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./\ ./] ./^ ./_ ./` ./a ./b ./c ./d ./e ./f ./g ./h ./i ./j ./k ./l ./m ./n ./o ./p ./q ./r ./s ./t ./u ./v ./w ./x ./y ./z ./{ ./| ./} ./~ ./ ./€
par_quote_special_results mkfs.f2fs . ./€ ./<2F> ./ ./ƒ ./„ ./… ./† ./‡ ./ˆ ./‰ ./Š ./ ./Œ ./<2F> ./Ž ./<2F> ./<2F> ./ ./ ./“ ./” ./• ./ ./— ./˜ ./™ ./š ./ ./œ ./<2F> ./ž ./Ÿ ./  ./¡ ./¢ ./£ ./¤ ./¥ ./¦ ./§ ./¨ ./© ./ª ./« ./¬ ./­ ./® ./¯ ./° ./± ./² ./³ ./´ ./µ ./¶ ./· ./¸ ./¹ ./º ./» ./¼ ./½ ./¾ ./¿ ./À ./Á ./ ./à ./Ä ./Å ./Æ ./Ç ./È ./É ./Ê ./Ë ./Ì ./Í ./Î ./Ï ./Ð ./Ñ ./Ò ./Ó ./Ô ./Õ ./Ö ./× ./Ø ./Ù ./Ú ./Û ./Ü ./Ý ./Þ ./ß ./à ./á ./â ./ã ./ä ./å ./æ ./ç ./è ./é ./ê ./ë ./ì ./í ./î ./ï ./ð ./ñ ./ò ./ó ./ô ./õ ./ö ./÷ ./ø ./ù ./ú ./û ./ü ./ý ./þ ./ÿ
par_quote_special_results mkfs.f2fs 301+0 records in
par_quote_special_results mkfs.f2fs 301+0 records out
par_results_csv bug #: --results csv par_results_csv bug #: --results csv
par_results_csv --header : --tag --files0 --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr par_results_csv --header : --tag --files0 --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr
par_results_csv --header : --tag --files0 --compress 1,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,"22 11 /TMP/tmpfile", par_results_csv --header : --tag --files0 --compress 1,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,"22 11 /TMP/tmpfile",
@ -1105,8 +1372,6 @@ par_seqreplace_long_line 9 1 1 101
par_seqreplace_long_line 90 1 1 201 par_seqreplace_long_line 90 1 1 201
par_seqreplace_long_line 1 parallel: Error: Command line too long (309 >= 210) at input 0: 100 par_seqreplace_long_line 1 parallel: Error: Command line too long (309 >= 210) at input 0: 100
par_shellquote ### Test --shellquote in all shells par_shellquote ### Test --shellquote in all shells
par_shellquote ash '
par_shellquote ash par_shellquote ash  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7F>ƒ„…†‡ˆ‰ŠŒ<E280B9>Ž<EFBFBD><C5BD>“”•˜™šœ<E280BA>žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
par_shellquote bash ' par_shellquote bash '
par_shellquote bash par_shellquote bash  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7F>ƒ„…†‡ˆ‰ŠŒ<E280B9>Ž<EFBFBD><C5BD>“”•˜™šœ<E280BA>žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ' par_shellquote bash par_shellquote bash  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7F>ƒ„…†‡ˆ‰ŠŒ<E280B9>Ž<EFBFBD><C5BD>“”•˜™šœ<E280BA>žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
par_shellquote csh \\\\\\\\ "\ par_shellquote csh \\\\\\\\ "\
@ -1144,19 +1409,6 @@ par_shellquote csh \\\\\\\\ "\
par_shellquote csh "\ \ \ par_shellquote csh \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~<7F>\\ƒ\„\…\†\‡\ˆ\‰\Š\\Œ\<5C>\Ž\<5C>\<5C>\\\“\”\•\\—\˜\™\š\\œ\<5C>\ž\Ÿ\ \¡\¢\£\¤\¥\¦\§\¨\©\ª\«\¬\­\®\¯\°\±\²\³\´\µ\¶\·\¸\¹\º\»\¼\½\¾\¿\À\Á\Â\Ã\Ä\Å\Æ\Ç\È\É\Ê\Ë\Ì\Í\Î\Ï\Ð\Ñ\Ò\Ó\Ô\Õ\Ö\×\Ø\Ù\Ú\Û\Ü\Ý\Þ\ß\à\á\â\ã\ä\å\æ\ç\è\é\ê\ë\ì\í\î\ï\ð\ñ\ò\ó\ô\õ\ö\÷\ø\ù\ú\û\ü\ý\þ\ÿ par_shellquote csh "\ \ \ par_shellquote csh \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~<7F>\\ƒ\„\…\†\‡\ˆ\‰\Š\\Œ\<5C>\Ž\<5C>\<5C>\\\“\”\•\\—\˜\™\š\\œ\<5C>\ž\Ÿ\ \¡\¢\£\¤\¥\¦\§\¨\©\ª\«\¬\­\®\¯\°\±\²\³\´\µ\¶\·\¸\¹\º\»\¼\½\¾\¿\À\Á\Â\Ã\Ä\Å\Æ\Ç\È\É\Ê\Ë\Ì\Í\Î\Ï\Ð\Ñ\Ò\Ó\Ô\Õ\Ö\×\Ø\Ù\Ú\Û\Ü\Ý\Þ\ß\à\á\â\ã\ä\å\æ\ç\è\é\ê\ë\ì\í\î\ï\ð\ñ\ò\ó\ô\õ\ö\÷\ø\ù\ú\û\ü\ý\þ\ÿ
par_shellquote tcsh \\\\\\\\ "\ par_shellquote tcsh \\\\\\\\ "\
par_shellquote tcsh "\ \ \ par_shellquote tcsh \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~<7F>\\ƒ\„\…\†\‡\ˆ\‰\Š\\Œ\<5C>\Ž\<5C>\<5C>\\\“\”\•\\—\˜\™\š\\œ\<5C>\ž\Ÿ\ \¡\¢\£\¤\¥\¦\§\¨\©\ª\«\¬\­\®\¯\°\±\²\³\´\µ\¶\·\¸\¹\º\»\¼\½\¾\¿\À\Á\Â\Ã\Ä\Å\Æ\Ç\È\É\Ê\Ë\Ì\Í\Î\Ï\Ð\Ñ\Ò\Ó\Ô\Õ\Ö\×\Ø\Ù\Ú\Û\Ü\Ý\Þ\ß\à\á\â\ã\ä\å\æ\ç\è\é\ê\ë\ì\í\î\ï\ð\ñ\ò\ó\ô\õ\ö\÷\ø\ù\ú\û\ü\ý\þ\ÿ par_shellquote tcsh "\ \ \ par_shellquote tcsh \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~<7F>\\ƒ\„\…\†\‡\ˆ\‰\Š\\Œ\<5C>\Ž\<5C>\<5C>\\\“\”\•\\—\˜\™\š\\œ\<5C>\ž\Ÿ\ \¡\¢\£\¤\¥\¦\§\¨\©\ª\«\¬\­\®\¯\°\±\²\³\´\µ\¶\·\¸\¹\º\»\¼\½\¾\¿\À\Á\Â\Ã\Ä\Å\Æ\Ç\È\É\Ê\Ë\Ì\Í\Î\Ï\Ð\Ñ\Ò\Ó\Ô\Õ\Ö\×\Ø\Ù\Ú\Û\Ü\Ý\Þ\ß\à\á\â\ã\ä\å\æ\ç\è\é\ê\ë\ì\í\î\ï\ð\ñ\ò\ó\ô\õ\ö\÷\ø\ù\ú\û\ü\ý\þ\ÿ
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: Warning: Only enough file handles to run 999 jobs in parallel.
par_tee_too_many_args parallel: Warning: Try running 'parallel -j999 -N 999 --pipe parallel -j999'
par_tee_too_many_args parallel: Warning: or increasing 'ulimit -n' (try: ulimit -n `ulimit -Hn`)
par_tee_too_many_args parallel: Warning: or increasing 'nofile' in /etc/security/limits.conf
par_tee_too_many_args parallel: Warning: or increasing /proc/sys/fs/file-max
par_tee_too_many_args parallel: Error: --tee requires --jobs to be higher. Try --jobs 999.
par_tmp_full ### Test --tmpdir running full. bug #40733 was caused by this par_tmp_full ### Test --tmpdir running full. bug #40733 was caused by this
par_tmp_full parallel: Error: Output is incomplete. par_tmp_full parallel: Error: Output is incomplete.
par_tmp_full parallel: Error: Cannot append to buffer file in /tmp/shm/parallel. par_tmp_full parallel: Error: Cannot append to buffer file in /tmp/shm/parallel.
@ -1166,150 +1418,3 @@ par_tmux_fg bug #50107: --tmux --fg should also write how to access it
par_tmux_fg See output with: tmux -S /TMPtmpfile attach par_tmux_fg See output with: tmux -S /TMPtmpfile attach
par_tmux_fg open terminal failed: not a terminal par_tmux_fg open terminal failed: not a terminal
par_totaljobs OK par_totaljobs OK
par_xargs_compat xargs compatibility
par_xargs_compat ### Test -L -l and --max-lines
par_xargs_compat a_b
par_xargs_compat c
par_xargs_compat a_b c
par_xargs_compat a_b c
par_xargs_compat ### xargs -L1 echo
par_xargs_compat a_b
par_xargs_compat c
par_xargs_compat a_b
par_xargs_compat c
par_xargs_compat a_b
par_xargs_compat c
par_xargs_compat Lines ending in space should continue on next line
par_xargs_compat ### xargs -L1 echo
par_xargs_compat a_b c
par_xargs_compat d
par_xargs_compat a_b c
par_xargs_compat d
par_xargs_compat a_b c
par_xargs_compat d
par_xargs_compat ### xargs -L2 echo
par_xargs_compat a_b c d
par_xargs_compat e
par_xargs_compat a_b c d
par_xargs_compat e
par_xargs_compat a_b c d
par_xargs_compat e
par_xargs_compat ### xargs -l echo
par_xargs_compat a_b c
par_xargs_compat d
par_xargs_compat e
par_xargs_compat a_b c
par_xargs_compat d
par_xargs_compat e
par_xargs_compat a_b c
par_xargs_compat d
par_xargs_compat e
par_xargs_compat ### xargs -l2 echo
par_xargs_compat a_b c d
par_xargs_compat e
par_xargs_compat a_b c d
par_xargs_compat e
par_xargs_compat a_b c d
par_xargs_compat e
par_xargs_compat ### xargs -l1 echo
par_xargs_compat a_b c
par_xargs_compat d
par_xargs_compat e
par_xargs_compat a_b c
par_xargs_compat d
par_xargs_compat e
par_xargs_compat a_b c
par_xargs_compat d
par_xargs_compat e
par_xargs_compat ### xargs --max-lines=2 echo
par_xargs_compat a_b c d
par_xargs_compat e
par_xargs_compat a_b c d
par_xargs_compat e
par_xargs_compat a_b c d
par_xargs_compat e
par_xargs_compat ### xargs --max-lines echo
par_xargs_compat a_b c
par_xargs_compat d
par_xargs_compat e
par_xargs_compat a_b c
par_xargs_compat d
par_xargs_compat e
par_xargs_compat a_b c
par_xargs_compat d
par_xargs_compat e
par_xargs_compat ### test too long args
par_xargs_compat parallel: Error: Command line too long (1000005 >= 63543) at input 0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
par_xargs_compat xargs: argument line too long
par_xargs_compat parallel: Error: Command line too long (1000007 >= 10) at input 0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
par_xargs_compat 1 2
par_xargs_compat 3 4
par_xargs_compat 5 6
par_xargs_compat 7 8
par_xargs_compat 9 10
par_xargs_compat xargs: argument line too long
par_xargs_compat 1 2
par_xargs_compat 3 4
par_xargs_compat 5 6
par_xargs_compat 7 8
par_xargs_compat 9 10
par_xargs_compat parallel: Error: Command line too long (1000007 >= 10) at input 0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
par_xargs_compat 1 2
par_xargs_compat 3 4
par_xargs_compat 5 6
par_xargs_compat 7 8
par_xargs_compat 9 10
par_xargs_compat ### Test -x
par_xargs_compat -km
par_xargs_compat parallel: Error: Command line too long (10 >= 10) at input 0: 12345
par_xargs_compat 1 2
par_xargs_compat 3 4
par_xargs_compat 5 6
par_xargs_compat 7 8
par_xargs_compat 9 10
par_xargs_compat -kX
par_xargs_compat parallel: Error: Command line too long (10 >= 10) at input 0: 12345
par_xargs_compat 1 2
par_xargs_compat 3 4
par_xargs_compat 5 6
par_xargs_compat 7 8
par_xargs_compat 9 10
par_xargs_compat -x
par_xargs_compat xargs: argument line too long
par_xargs_compat 1 2
par_xargs_compat 3 4
par_xargs_compat 5 6
par_xargs_compat 7 8
par_xargs_compat -km -x
par_xargs_compat 1 2
par_xargs_compat 12
par_xargs_compat 1234
par_xargs_compat 13
par_xargs_compat 14
par_xargs_compat 15
par_xargs_compat 3 4
par_xargs_compat 5 6
par_xargs_compat 7 8
par_xargs_compat 9 10
par_xargs_compat -kX -x
par_xargs_compat 1 2
par_xargs_compat 12
par_xargs_compat 1234
par_xargs_compat 13
par_xargs_compat 14
par_xargs_compat 15
par_xargs_compat 3 4
par_xargs_compat 5 6
par_xargs_compat 7 8
par_xargs_compat 9 10
par_xargs_compat -x
par_xargs_compat 1 2
par_xargs_compat 12
par_xargs_compat 1234
par_xargs_compat 13
par_xargs_compat 14
par_xargs_compat 15
par_xargs_compat 3 4
par_xargs_compat 5 6
par_xargs_compat 7 8
par_xargs_compat 9 10

View file

@ -960,8 +960,6 @@ par_test_m_X a1.gifb1c1 a2.gifb2c2 a3.gifb3c3 a4.gifb4c4 a5.gifb5c5 a6.gifb6c6
par_test_m_X ### Test -q {.} par_test_m_X ### Test -q {.}
par_test_m_X 'a' par_test_m_X 'a'
par_test_m_X 'a' par_test_m_X 'a'
par_testquote ash "#&/
par_testquote ash ()*=?'
par_testquote bash "#&/ par_testquote bash "#&/
par_testquote bash ()*=?' par_testquote bash ()*=?'
par_testquote csh "#&/ par_testquote csh "#&/

View file

@ -1643,16 +1643,6 @@ par_bin 9 2
par_exit_code bug #52207: Exit status 0 when child job is killed, even with "now,fail=1" par_exit_code bug #52207: Exit status 0 when child job is killed, even with "now,fail=1"
par_exit_code # Ideally the command should return the same par_exit_code # Ideally the command should return the same
par_exit_code # with or without parallel par_exit_code # with or without parallel
par_exit_code ash /tmp/mysleep 100 137
par_exit_code ash parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code ash parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code ash parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code ash parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code ash true;/tmp/mysleep 100 137
par_exit_code ash parallel --halt-on-error now,fail=1 'true;/tmp/mysleep' ::: 100 137
par_exit_code ash parallel --halt-on-error now,done=1 'true;/tmp/mysleep' ::: 100 137
par_exit_code ash parallel --halt-on-error now,done=1 'true;/bin/true' ::: 100 0
par_exit_code ash parallel --halt-on-error now,done=1 'true;exit' ::: 100 100
par_exit_code csh /tmp/mysleep 100 137 par_exit_code csh /tmp/mysleep 100 137
par_exit_code csh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137 par_exit_code csh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code csh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137 par_exit_code csh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
@ -3069,7 +3059,6 @@ par_slow_total_jobs 1
par_slow_total_jobs 2 par_slow_total_jobs 2
par_slow_total_jobs parallel: Warning: Reading X arguments took longer than XX seconds. par_slow_total_jobs parallel: Warning: Reading X arguments took longer than XX seconds.
par_test_detected_shell ### bug #42913: Dont use $SHELL but the shell currently running par_test_detected_shell ### bug #42913: Dont use $SHELL but the shell currently running
par_test_detected_shell test_unknown_shell ash Global::shell /usr/bin/bash
par_test_detected_shell test_unknown_shell bash Global::shell /usr/bin/bash par_test_detected_shell test_unknown_shell bash Global::shell /usr/bin/bash
par_test_detected_shell test_unknown_shell csh Global::shell /usr/bin/bash par_test_detected_shell test_unknown_shell csh Global::shell /usr/bin/bash
par_test_detected_shell test_unknown_shell dash Global::shell /usr/bin/bash par_test_detected_shell test_unknown_shell dash Global::shell /usr/bin/bash
@ -3086,7 +3075,6 @@ par_test_detected_shell test_unknown_shell sh Global::shell /usr/bin/bash
par_test_detected_shell test_unknown_shell tcsh Global::shell /usr/bin/bash par_test_detected_shell test_unknown_shell tcsh Global::shell /usr/bin/bash
par_test_detected_shell test_unknown_shell yash Global::shell /usr/bin/bash par_test_detected_shell test_unknown_shell yash Global::shell /usr/bin/bash
par_test_detected_shell test_unknown_shell zsh Global::shell /usr/bin/bash par_test_detected_shell test_unknown_shell zsh Global::shell /usr/bin/bash
par_test_detected_shell test_known_shell_c ash Global::shell /usr/bin/ash
par_test_detected_shell test_known_shell_c bash Global::shell /usr/bin/bash par_test_detected_shell test_known_shell_c bash Global::shell /usr/bin/bash
par_test_detected_shell test_known_shell_c csh Global::shell /usr/bin/csh par_test_detected_shell test_known_shell_c csh Global::shell /usr/bin/csh
par_test_detected_shell test_known_shell_c dash Global::shell /usr/bin/dash par_test_detected_shell test_known_shell_c dash Global::shell /usr/bin/dash
@ -3104,7 +3092,6 @@ par_test_detected_shell test_known_shell_c static-sh Global::shell /usr/bin/stat
par_test_detected_shell test_known_shell_c tcsh Global::shell /usr/bin/tcsh par_test_detected_shell test_known_shell_c tcsh Global::shell /usr/bin/tcsh
par_test_detected_shell test_known_shell_c yash Global::shell /usr/bin/yash par_test_detected_shell test_known_shell_c yash Global::shell /usr/bin/yash
par_test_detected_shell test_known_shell_c zsh Global::shell /usr/bin/zsh par_test_detected_shell test_known_shell_c zsh Global::shell /usr/bin/zsh
par_test_detected_shell test_known_shell_pipe ash Global::shell /usr/bin/ash
par_test_detected_shell test_known_shell_pipe bash Global::shell /usr/bin/bash par_test_detected_shell test_known_shell_pipe bash Global::shell /usr/bin/bash
par_test_detected_shell test_known_shell_pipe csh Global::shell /usr/bin/csh par_test_detected_shell test_known_shell_pipe csh Global::shell /usr/bin/csh
par_test_detected_shell test_known_shell_pipe dash Global::shell /usr/bin/dash par_test_detected_shell test_known_shell_pipe dash Global::shell /usr/bin/dash

View file

@ -630,7 +630,7 @@ par__test_cpu_detection_cpuinfo 1-4-8-4 Lenovo E540 i7-4712MQ (PROSA stud organi
par__test_cpu_detection_cpuinfo 1 4 8 4 par__test_cpu_detection_cpuinfo 1 4 8 4
par__test_cpu_detection_cpuinfo 1-4-8-4 Core i7-3632QM Acer laptop par__test_cpu_detection_cpuinfo 1-4-8-4 Core i7-3632QM Acer laptop
par__test_cpu_detection_cpuinfo 1 4 8 4 par__test_cpu_detection_cpuinfo 1 4 8 4
par__test_cpu_detection_cpuinfo 1-16-24-16 8*2 thr + 8*1 thr Intel Core i7-13700HX (user submit) par__test_cpu_detection_cpuinfo 1-16-24-16 8*2 thr + 8*1 thr Intel Core i7-13700HX (user submit - detected wrong)
par__test_cpu_detection_cpuinfo 1 12 24 12 par__test_cpu_detection_cpuinfo 1 12 24 12
par__test_cpu_detection_cpuinfo 1-2-4-2 Core i5-2410M laptop firewall par__test_cpu_detection_cpuinfo 1-2-4-2 Core i5-2410M laptop firewall
par__test_cpu_detection_cpuinfo 1 2 4 2 par__test_cpu_detection_cpuinfo 1 2 4 2
@ -664,7 +664,7 @@ par__test_cpu_detection_lscpu 1-4-8-4 Lenovo E540 i7-4712MQ (PROSA stud organize
par__test_cpu_detection_lscpu 1 4 8 4 par__test_cpu_detection_lscpu 1 4 8 4
par__test_cpu_detection_lscpu 1-4-8-4 Core i7-3632QM Acer laptop par__test_cpu_detection_lscpu 1-4-8-4 Core i7-3632QM Acer laptop
par__test_cpu_detection_lscpu 1 4 8 4 par__test_cpu_detection_lscpu 1 4 8 4
par__test_cpu_detection_lscpu 1-16-24-16 8*2 thr + 8*1 thr Intel Core i7-13700HX (user submit) par__test_cpu_detection_lscpu 1-16-24-16 8*2 thr + 8*1 thr Intel Core i7-13700HX (user submit - detected wrong)
par__test_cpu_detection_lscpu 1 12 24 12 par__test_cpu_detection_lscpu 1 12 24 12
par__test_cpu_detection_lscpu 1-2-4-2 Core i5-2410M laptop firewall par__test_cpu_detection_lscpu 1-2-4-2 Core i5-2410M laptop firewall
par__test_cpu_detection_lscpu 1 2 4 2 par__test_cpu_detection_lscpu 1 2 4 2
@ -680,8 +680,8 @@ par__test_cpu_detection_topology 1-4-8-4 Lenovo E540 i7-4712MQ (PROSA stud organ
par__test_cpu_detection_topology 1 4 8 4 par__test_cpu_detection_topology 1 4 8 4
par__test_cpu_detection_topology 1-2-4-2 ThinkPad A475 AMD PRO A12-8830B R7 (64g) par__test_cpu_detection_topology 1-2-4-2 ThinkPad A475 AMD PRO A12-8830B R7 (64g)
par__test_cpu_detection_topology 1 2 4 2 par__test_cpu_detection_topology 1 2 4 2
par__test_cpu_detection_topology 1-16-24-16 8*2 thr + 8*1 thr Intel Core i7-13700HX (user submit) par__test_cpu_detection_topology 1-16-24-16 8*2 thr + 8*1 thr Intel Core i7-13700HX (user submit - detected wrong)
par__test_cpu_detection_topology 1 2 4 2 par__test_cpu_detection_topology 1 4 8 4
par_children_receive_sig ### Do children receive --termseq signals par_children_receive_sig ### Do children receive --termseq signals
par_children_receive_sig parallel: Warning: This job was killed because it timed out: par_children_receive_sig parallel: Warning: This job was killed because it timed out:
par_children_receive_sig parallel: Warning: show_signals '' par_children_receive_sig parallel: Warning: show_signals ''
@ -781,6 +781,27 @@ par_eta par_eta ETA: 0s Left: 0 AVG: 0.00s local:0/0/0%/0.0s 
par_exitval_signal ### Test --joblog with exitval and Test --joblog with signal -- timing dependent par_exitval_signal ### Test --joblog with exitval and Test --joblog with signal -- timing dependent
par_exitval_signal exitval=128+6 OK par_exitval_signal exitval=128+6 OK
par_exitval_signal signal OK par_exitval_signal signal OK
par_format_string Format string + {}
par_format_string 12.346 98.765 == 12.346 98.765
par_format_string Format string + {.}
par_format_string 12.000 98.000 == 12.000 98.000
par_format_string Format string + {2}
par_format_string 98.765 == 98.765
par_format_string Format string + {2.}
par_format_string 98.000 == 98.000
par_format_string Format string + {2.}{}
par_format_string 98.00012.34567 98.76543 == 98.00012.34567 98.76543
par_format_string Dynamic replacement strings
par_format_string {dyn} + format
par_format_string 12.44 98.77 == 12.44 98.77
par_format_string {Positional dyn} + format
par_format_string 12.44 98.77 98.765 == 12.44 98.77 98.765
par_format_string {dyn__postfix}
par_format_string 12.444567 98.765444 == 12.444567 98.765444
par_format_string {dyn__postfix} + format
par_format_string 00012.44 == 00012.44
par_format_string dyn without {}
par_format_string 12.444567 98.765444 == 12.444567 98.765444
par_jobslot_repl bug #46232: {%} with --bar/--eta/--shuf or --halt xx% broken par_jobslot_repl bug #46232: {%} with --bar/--eta/--shuf or --halt xx% broken
par_jobslot_repl 1 par_jobslot_repl 1
par_jobslot_repl 2 par_jobslot_repl 2

View file

@ -1,3 +1,10 @@
WHY DOES THIS FAIL?
### --env _
OK from fubar test
In csh this may fail with ignored_var: Undefined variable.
### --env _ with explicit mentioning of normally ignored var $ignored_var
OK from fubar should be copied test
OK from fubar should be copied test
bug #46120: Suspend should suspend (at least local) children bug #46120: Suspend should suspend (at least local) children
it should burn 1.9 CPU seconds, but no more than that it should burn 1.9 CPU seconds, but no more than that
The 5 second sleep will make it be killed by timeout when it fgs The 5 second sleep will make it be killed by timeout when it fgs

View file

@ -1855,7 +1855,7 @@ SQLITE par_empty p_wrapper par_empty $SQLITE
SQLITE par_empty Do nothing: TBL99999 does not exist because it is not created SQLITE par_empty Do nothing: TBL99999 does not exist because it is not created
SQLITE par_empty Exit=0 SQLITE par_empty Exit=0
SQLITE par_empty Exit=0 SQLITE par_empty Exit=0
SQLITE par_empty Parse error near line 1: no such table: TBL99999 SQLITE par_empty Parse error near line 1: no such table: TBL99999 (1)
SQLITE par_no_table p_wrapper par_no_table $SQLITE SQLITE par_no_table p_wrapper par_no_table $SQLITE
SQLITE par_no_table bug #50018: --dburl without table dies SQLITE par_no_table bug #50018: --dburl without table dies
SQLITE par_no_table 255 SQLITE par_no_table 255

View file

@ -78,11 +78,11 @@ par__sshpass_with_password ### Crazy passwords: `date>>/tmp/trap`;(|<*&)'
par__sshpass_with_password # These fail. The important part is that /tmp/trap is empty par__sshpass_with_password # These fail. The important part is that /tmp/trap is empty
par__sshpass_with_password parallel: Warning: Using password or SSHPASS with --(n)onall exposes the password par__sshpass_with_password parallel: Warning: Using password or SSHPASS with --(n)onall exposes the password
par__sshpass_with_password parallel: Warning: on the command line, making it visible to local users via `ps`. par__sshpass_with_password parallel: Warning: on the command line, making it visible to local users via `ps`.
par__sshpass_with_password Permission denied, please try again. par__sshpass_with_password ssh: Could not resolve hostname host:
par__sshpass_with_password par__sshpass_with_password
par__sshpass_with_password parallel: Warning: Using password or SSHPASS with --(n)onall exposes the password par__sshpass_with_password parallel: Warning: Using password or SSHPASS with --(n)onall exposes the password
par__sshpass_with_password parallel: Warning: on the command line, making it visible to local users via `ps`. par__sshpass_with_password parallel: Warning: on the command line, making it visible to local users via `ps`.
par__sshpass_with_password Permission denied, please try again. par__sshpass_with_password ssh: Could not resolve hostname host:
par__sshpass_with_password par__sshpass_with_password
par__sshpass_with_password This must stay empty: par__sshpass_with_password This must stay empty:
par__sshpass_with_password OK par__sshpass_with_password OK

View file

@ -278,7 +278,7 @@ par__test_different_rsync_versions rsync-v3.2.4 Basic use works: rsync-v3.2.4
par__test_different_rsync_versions rsync-v3.2.5 Basic use works: rsync-v3.2.5 par__test_different_rsync_versions rsync-v3.2.5 Basic use works: rsync-v3.2.5
par__test_different_rsync_versions rsync-v3.2.6 Basic use works: rsync-v3.2.6 par__test_different_rsync_versions rsync-v3.2.6 Basic use works: rsync-v3.2.6
par__test_different_rsync_versions rsync-v3.2.7 Basic use works: rsync-v3.2.7 par__test_different_rsync_versions rsync-v3.2.7 Basic use works: rsync-v3.2.7
par__test_different_rsync_versions rsync-v3.3.0 Basic use failed - not tested: rsync-v3.3.0 par__test_different_rsync_versions rsync-v3.3.0 Basic use works: rsync-v3.3.0
par_bigvar_csh ### csh par_bigvar_csh ### csh
par_bigvar_csh 3 big vars run remotely - length(base64) > 1000 par_bigvar_csh 3 big vars run remotely - length(base64) > 1000
par_bigvar_csh 1 200 692 par_bigvar_csh 1 200 692
@ -299,13 +299,6 @@ par_bigvar_rc 3 big vars run locally
par_bigvar_rc 1 200 692 par_bigvar_rc 1 200 692
par_bigvar_rc 1 200 692 par_bigvar_rc 1 200 692
par_bigvar_rc 1 150 547 par_bigvar_rc 1 150 547
par_env_underscore ### --env _
par_env_underscore OK FUBAR test
par_env_underscore In csh this may fail with ignored_var: Undefined variable.
par_env_underscore ignored_var: Undefined variable.
par_env_underscore ### --env _ with explicit mentioning of normally ignored var $ignored_var
par_env_underscore OK FUBAR should be copied test
par_env_underscore OK FUBAR should be copied test
par_exporting_in_zsh ### zsh par_exporting_in_zsh ### zsh
par_exporting_in_zsh env in zsh par_exporting_in_zsh env in zsh
par_exporting_in_zsh Normal variable export par_exporting_in_zsh Normal variable export
@ -328,7 +321,6 @@ par_warn_when_exporting_func /bin/sh Run function in /bin/sh
par_warn_when_exporting_func /bin/sh parallel: Warning: Shell functions may not be supported in /bin/sh. par_warn_when_exporting_func /bin/sh parallel: Warning: Shell functions may not be supported in /bin/sh.
par_warn_when_exporting_func /bin/bash Run function in /bin/bash par_warn_when_exporting_func /bin/bash Run function in /bin/bash
par_warn_when_exporting_func /bin/bash Function run: OK par_warn_when_exporting_func /bin/bash Function run: OK
par_warn_when_exporting_func /bin/ash Run function in /bin/ash
par_warn_when_exporting_func /bin/csh Run function in /bin/csh par_warn_when_exporting_func /bin/csh Run function in /bin/csh
par_warn_when_exporting_func /bin/csh parallel: Warning: Shell functions may not be supported in /bin/csh. par_warn_when_exporting_func /bin/csh parallel: Warning: Shell functions may not be supported in /bin/csh.
par_warn_when_exporting_func /bin/csh CSH/TCSH DO NOT SUPPORT newlines IN VARIABLES/FUNCTIONS. Unset myfunc par_warn_when_exporting_func /bin/csh CSH/TCSH DO NOT SUPPORT newlines IN VARIABLES/FUNCTIONS. Unset myfunc

View file

@ -37,7 +37,7 @@ par_--ssh_autossh AUTOSSH_DEBUG - turn logging to maximum verbosity an
par_--ssh_autossh stderr par_--ssh_autossh stderr
par_--ssh_autossh par_--ssh_autossh
par_--ssh_autossh rsync: connection unexpectedly closed (0 bytes received so far) [Receiver] par_--ssh_autossh rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
par_--ssh_autossh rsync error: error in rsync protocol data stream (code 12) at io.c(231) [Receiver=3.2.7] par_--ssh_autossh rsync error: error in rsync protocol data stream (code 12) at io.c(231) [Receiver=9.9.9]
par_--ssh_autossh foo_autossh par_--ssh_autossh foo_autossh
par_--ssh_lsh ### --ssh lsh par_--ssh_lsh ### --ssh lsh
par_--ssh_lsh OK par_--ssh_lsh OK

View file

@ -1,18 +1,4 @@
### test --env _, env_parallel for different shells ### test --env _, env_parallel for different shells
par_--env_underscore_ash ### ash
par_--env_underscore_ash ### Testing of --env _
par_--env_underscore_ash variables in aliases work
par_--env_underscore_ash variables in aliases work
par_--env_underscore_ash variables in aliases work
par_--env_underscore_ash variables in aliases work
par_--env_underscore_ash script: 4: not_copied_alias: not found
par_--env_underscore_ash error=OK
par_--env_underscore_ash aliases work
par_--env_underscore_ash aliases work
par_--env_underscore_ash /bin/ash: 1: myecho: not found
par_--env_underscore_ash OK if no myecho ^^^^^^^^^^^^^^^^^
par_--env_underscore_ash script: 2: myecho: not found
par_--env_underscore_ash OK if no myecho ^^^^^^^^^^^^^^^^^
par_--env_underscore_bash ### bash par_--env_underscore_bash ### bash
par_--env_underscore_bash ### Testing of --env _ par_--env_underscore_bash ### Testing of --env _
par_--env_underscore_bash variables in aliases in and arrays in functions work par_--env_underscore_bash variables in aliases in and arrays in functions work
@ -173,41 +159,6 @@ par_--env_underscore_zsh zsh:1: command not found: myfunc
par_--env_underscore_zsh OK if no .^^^^^^^^^^^^^^^^^^^^^^^^^ myfunc par_--env_underscore_zsh OK if no .^^^^^^^^^^^^^^^^^^^^^^^^^ myfunc
par_--env_underscore_zsh script:2: command not found: myfunc par_--env_underscore_zsh script:2: command not found: myfunc
par_--env_underscore_zsh OK if no .^^^^^^^^^^^^^^^^^^^^^^^^^ myfunc par_--env_underscore_zsh OK if no .^^^^^^^^^^^^^^^^^^^^^^^^^ myfunc
par__man_ash ### ash
par__man_ash ### From man env_parallel
par__man_ash aliases with = & " ! ' work
par__man_ash aliases with = & " ! ' work
par__man_ash aliases with = & " ! ' work
par__man_ash aliases with = & " ! ' work
par__man_ash aliases with = & " ! ' work
par__man_ash multiline
par__man_ash aliases with = & " ! ' work
par__man_ash multiline
par__man_ash aliases with = & " ! ' work
par__man_ash multiline
par__man_ash aliases with = & " ! ' work
par__man_ash multiline
par__man_ash aliases with = & " ! ' work
par__man_ash multiline
par__man_ash aliases with = & " ! ' work
par__man_ash variables with = & " ! ' work
par__man_ash variables with = & " ! ' work
par__man_ash variables with = & " ! ' work
par__man_ash variables with = & " ! ' work
par__man_ash variables with = & " ! ' work
par__man_ash multiline
par__man_ash variables with = & " ! ' work
par__man_ash multiline
par__man_ash variables with = & " ! ' work
par__man_ash multiline
par__man_ash variables with = & " ! ' work
par__man_ash multiline
par__man_ash variables with = & " ! ' work
par__man_ash multiline
par__man_ash variables with = & " ! ' work
par__man_ash exit value 2 should be 2
par__man_ash Unknown option: no-such-option
par__man_ash exit value 255 should be 255
par__man_bash ### bash par__man_bash ### bash
par__man_bash ### From man env_parallel par__man_bash ### From man env_parallel
par__man_bash aliases with = & " ! ' work par__man_bash aliases with = & " ! ' work
@ -705,107 +656,6 @@ par__man_zsh env_parallel
par__man_zsh exit value 2 should be 2 par__man_zsh exit value 2 should be 2
par__man_zsh Unknown option: no-such-option par__man_zsh Unknown option: no-such-option
par__man_zsh exit value 255 should be 255 par__man_zsh exit value 255 should be 255
par_env_parallel_--session_ash ### Test env_parallel --session
par_env_parallel_--session_ash ### level0 should be hidden, level1 should be transferred
par_env_parallel_--session_ash
par_env_parallel_--session_ash script: 99: level0func: not found
par_env_parallel_--session_ash script: 99: level0alias: not found
par_env_parallel_--session_ash script: 99: Bad substitution
par_env_parallel_--session_ash
par_env_parallel_--session_ash /bin/ash: 999: level0func: not found
par_env_parallel_--session_ash /bin/ash: 999: level0alias: not found
par_env_parallel_--session_ash /bin/ash: 999: Bad substitution
par_env_parallel_--session_ash l1var
par_env_parallel_--session_ash l1alias
par_env_parallel_--session_ash script: 99: level1func: not found
par_env_parallel_--session_ash script: 99: Bad substitution
par_env_parallel_--session_ash l1var
par_env_parallel_--session_ash l1alias
par_env_parallel_--session_ash /bin/ash: 999: level1func: not found
par_env_parallel_--session_ash /bin/ash: 999: Bad substitution
par_env_parallel_--session_ash ### level0+1 should be hidden, level2 should be transferred
par_env_parallel_--session_ash
par_env_parallel_--session_ash script: 4: level0func: not found
par_env_parallel_--session_ash script: 4: level0alias: not found
par_env_parallel_--session_ash script: 4: Bad substitution
par_env_parallel_--session_ash
par_env_parallel_--session_ash /bin/ash: 3: level0func: not found
par_env_parallel_--session_ash /bin/ash: 3: level0alias: not found
par_env_parallel_--session_ash /bin/ash: 3: Bad substitution
par_env_parallel_--session_ash
par_env_parallel_--session_ash script: 4: level1func: not found
par_env_parallel_--session_ash script: 4: level1alias: not found
par_env_parallel_--session_ash script: 4: Bad substitution
par_env_parallel_--session_ash
par_env_parallel_--session_ash /bin/ash: 3: level1func: not found
par_env_parallel_--session_ash /bin/ash: 3: level1alias: not found
par_env_parallel_--session_ash /bin/ash: 3: Bad substitution
par_env_parallel_--session_ash l2var
par_env_parallel_--session_ash l2alias
par_env_parallel_--session_ash script: 4: level2func: not found
par_env_parallel_--session_ash script: 4: Bad substitution
par_env_parallel_--session_ash l2var
par_env_parallel_--session_ash l2alias
par_env_parallel_--session_ash /bin/ash: 3: level2func: not found
par_env_parallel_--session_ash /bin/ash: 3: Bad substitution
par_env_parallel_--session_ash ### level0 should be hidden, level1+2 should be transferred
par_env_parallel_--session_ash
par_env_parallel_--session_ash script: 99: level0func: not found
par_env_parallel_--session_ash script: 99: level0alias: not found
par_env_parallel_--session_ash script: 99: Bad substitution
par_env_parallel_--session_ash
par_env_parallel_--session_ash /bin/ash: 999: level0func: not found
par_env_parallel_--session_ash /bin/ash: 999: level0alias: not found
par_env_parallel_--session_ash /bin/ash: 999: Bad substitution
par_env_parallel_--session_ash l1var
par_env_parallel_--session_ash l1alias
par_env_parallel_--session_ash script: 99: level1func: not found
par_env_parallel_--session_ash script: 99: Bad substitution
par_env_parallel_--session_ash l1var
par_env_parallel_--session_ash l1alias
par_env_parallel_--session_ash /bin/ash: 999: level1func: not found
par_env_parallel_--session_ash /bin/ash: 999: Bad substitution
par_env_parallel_--session_ash l2var
par_env_parallel_--session_ash l2alias
par_env_parallel_--session_ash script: 99: level2func: not found
par_env_parallel_--session_ash script: 99: Bad substitution
par_env_parallel_--session_ash l2var
par_env_parallel_--session_ash l2alias
par_env_parallel_--session_ash /bin/ash: 999: level2func: not found
par_env_parallel_--session_ash /bin/ash: 999: Bad substitution
par_env_parallel_--session_ash ### level0+1+2 should be transferred
par_env_parallel_--session_ash l0var
par_env_parallel_--session_ash l0alias
par_env_parallel_--session_ash script: 99: level0func: not found
par_env_parallel_--session_ash script: 99: Bad substitution
par_env_parallel_--session_ash l0var
par_env_parallel_--session_ash l0alias
par_env_parallel_--session_ash /bin/ash: 999: level0func: not found
par_env_parallel_--session_ash /bin/ash: 999: Bad substitution
par_env_parallel_--session_ash l1var
par_env_parallel_--session_ash l1alias
par_env_parallel_--session_ash script: 99: level1func: not found
par_env_parallel_--session_ash script: 99: Bad substitution
par_env_parallel_--session_ash l1var
par_env_parallel_--session_ash l1alias
par_env_parallel_--session_ash /bin/ash: 999: level1func: not found
par_env_parallel_--session_ash /bin/ash: 999: Bad substitution
par_env_parallel_--session_ash l2var
par_env_parallel_--session_ash l2alias
par_env_parallel_--session_ash script: 99: level2func: not found
par_env_parallel_--session_ash script: 99: Bad substitution
par_env_parallel_--session_ash l2var
par_env_parallel_--session_ash l2alias
par_env_parallel_--session_ash /bin/ash: 999: level2func: not found
par_env_parallel_--session_ash /bin/ash: 999: Bad substitution
par_env_parallel_--session_ash /bin/ash: 1: aliasbefore: not found
par_env_parallel_--session_ash script: 2: aliasbefore: not found
par_env_parallel_--session_ash no_before
par_env_parallel_--session_ash no_before
par_env_parallel_--session_ash after aliasafter_OK
par_env_parallel_--session_ash after aliasafter_OK
par_env_parallel_--session_ash after varafter_OK
par_env_parallel_--session_ash after varafter_OK
par_env_parallel_--session_bash ### Test env_parallel --session / --end-session par_env_parallel_--session_bash ### Test env_parallel --session / --end-session
par_env_parallel_--session_bash ### level0 should be hidden, level1 should be transferred par_env_parallel_--session_bash ### level0 should be hidden, level1 should be transferred
par_env_parallel_--session_bash par_env_parallel_--session_bash
@ -1450,22 +1300,6 @@ par_env_parallel_--session_zsh after varafter_OK
par_env_parallel_--session_zsh after varafter_OK par_env_parallel_--session_zsh after varafter_OK
par_env_parallel_--session_zsh array after arrayafter_OK par_env_parallel_--session_zsh array after arrayafter_OK
par_env_parallel_--session_zsh array after arrayafter_OK par_env_parallel_--session_zsh array after arrayafter_OK
par_env_parallel_ash OK
par_env_parallel_ash OK
par_env_parallel_ash alias line 1
par_env_parallel_ash alias line 1
par_env_parallel_ash alias line 2
par_env_parallel_ash alias line 2
par_env_parallel_ash alias line 3
par_env_parallel_ash alias line 3
par_env_parallel_ash alias2 line 1
par_env_parallel_ash alias2 line 1
par_env_parallel_ash alias2 line 2
par_env_parallel_ash alias2 line 2
par_env_parallel_ash bug #50435: Remote fifo broke in 20150522
par_env_parallel_ash bug #52534: Tail of multiline alias is ignored
par_env_parallel_ash data from stdin
par_env_parallel_ash data from stdin
par_env_parallel_bash OK par_env_parallel_bash OK
par_env_parallel_bash OK par_env_parallel_bash OK
par_env_parallel_bash alias line 1 par_env_parallel_bash alias line 1
@ -1606,7 +1440,6 @@ par_env_parallel_zsh bug #50435: Remote fifo broke in 20150522
par_env_parallel_zsh bug #52534: Tail of multiline alias is ignored par_env_parallel_zsh bug #52534: Tail of multiline alias is ignored
par_env_parallel_zsh data from stdin par_env_parallel_zsh data from stdin
par_env_parallel_zsh data from stdin par_env_parallel_zsh data from stdin
par_environment_too_big_ash moved to hwdep1.sh
par_environment_too_big_bash bug #50815: env_parallel should warn if the environment is too big par_environment_too_big_bash bug #50815: env_parallel should warn if the environment is too big
par_environment_too_big_bash OK_bigvar par_environment_too_big_bash OK_bigvar
par_environment_too_big_bash OK_bigvar_remote par_environment_too_big_bash OK_bigvar_remote
@ -1683,11 +1516,6 @@ par_environment_too_big_sh fail_bigfunc_quote-not-supported
par_environment_too_big_sh fail_bigfunc_quote_remote-not-supported par_environment_too_big_sh fail_bigfunc_quote_remote-not-supported
par_environment_too_big_tcsh Not implemented par_environment_too_big_tcsh Not implemented
par_environment_too_big_zsh moved to hwdep1.sh par_environment_too_big_zsh moved to hwdep1.sh
par_funky_ash
par_funky_ash ' '
par_funky_ash ' par_funky_ash  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7F>ƒ„…†‡ˆ‰ŠŒ<E280B9>Ž<EFBFBD><C5BD>“”•˜™šœ<E280BA>žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
par_funky_ash 3 arg alias_works
par_funky_ash 3 arg alias_works_over_ssh
par_funky_bash par_funky_bash
par_funky_bash -funkymultiline par_funky_bash -funkymultiline
par_funky_bash -funkymultiline par_funky_bash -funkymultiline
@ -1795,35 +1623,6 @@ par_funky_zsh function_works
par_funky_zsh function_works_over_ssh par_funky_zsh function_works_over_ssh
par_funky_zsh myvar works par_funky_zsh myvar works
par_funky_zsh myvar works par_funky_zsh myvar works
par_parset_ash parset
par_parset_ash ### parset into vars with comma
par_parset_ash foo bar baz
par_parset_ash ### parset into vars with space
par_parset_ash foo bar baz
par_parset_ash ### parset with newlines
par_parset_ash 1
par_parset_ash 1
par_parset_ash 2
par_parset_ash 1
par_parset_ash 2
par_parset_ash 3
par_parset_ash ### env_parset
par_parset_ash myecho myvar foo myecho myvar bar myecho myvar baz
par_parset_ash myecho myvar foo myecho myvar bar myecho myvar baz
par_parset_ash newline1
par_parset_ash newline2
par_parset_ash 1
par_parset_ash newline1
par_parset_ash newline2
par_parset_ash 1
par_parset_ash 2
par_parset_ash newline1
par_parset_ash newline2
par_parset_ash 1
par_parset_ash 2
par_parset_ash 3
par_parset_ash Exit value 2 = 2
par_parset_ash Exit value 2 = 2
par_parset_bash parset par_parset_bash parset
par_parset_bash ### parset into array par_parset_bash ### parset into array
par_parset_bash foo bar baz par_parset_bash foo bar baz

View file

@ -34,7 +34,6 @@ par_path_remote_csh StArT
par_path_remote_csh CSH Path before: /bin:/usr/bin with no parallel par_path_remote_csh CSH Path before: /bin:/usr/bin with no parallel
par_path_remote_csh parallel: Command not found. par_path_remote_csh parallel: Command not found.
par_path_remote_csh ^^^^^^^^ Not found is OK par_path_remote_csh ^^^^^^^^ Not found is OK
par_path_remote_csh parallel: Warning: Could not figure out number of cpus on lo (). Using 1.
par_path_remote_csh OK: /bin:/usr/bin:/tmp par_path_remote_csh OK: /bin:/usr/bin:/tmp
par_path_remote_csh Done par_path_remote_csh Done
par_retries_1 ### Test of --retries - it should run 13 jobs in total par_retries_1 ### Test of --retries - it should run 13 jobs in total

View file

@ -134,24 +134,6 @@ par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip
par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip251.0.9.109 (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip251.0.9.109 (). Using 1.
par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip251.0.9.110 (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip251.0.9.110 (). Using 1.
par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip251.0.9.111 (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip251.0.9.111 (). Using 1.
par_ash_embed --embed
par_ash_embed Redirect the output to a file and add your changes at the end:
par_ash_embed /usr/local/bin/parallel --embed > new_script
par_ash_embed Put
par_ash_embed your
par_ash_embed code
par_ash_embed here
par_ash_embed parallel_OK
par_ash_embed env_parallel --env OK
par_ash_embed env_parallel_OK
par_ash_embed ParsetOK
par_ash_embed Put
par_ash_embed your
par_ash_embed code
par_ash_embed here
par_ash_embed Put your code here
par_ash_embed You can also activate GNU Parallel for interactive use by:
par_ash_embed . ./parallel-embed
par_bash_embed --embed par_bash_embed --embed
par_bash_embed Redirect the output to a file and add your changes at the end: par_bash_embed Redirect the output to a file and add your changes at the end:
par_bash_embed /usr/local/bin/parallel --embed > new_script par_bash_embed /usr/local/bin/parallel --embed > new_script

View file

@ -72,6 +72,9 @@ par_shebang_with_parser_options 5
par_shebang_wrap_R [1] "Arguments arg1" par_shebang_wrap_R [1] "Arguments arg1"
par_shebang_wrap_R [1] "Arguments arg2" par_shebang_wrap_R [1] "Arguments arg2"
par_shebang_wrap_R [1] "Arguments arg3.1 arg3.2" par_shebang_wrap_R [1] "Arguments arg3.1 arg3.2"
par_shebang_wrap_awk Arguments: arg1
par_shebang_wrap_awk Arguments: arg2
par_shebang_wrap_awk Arguments: arg3.1 arg3.2
par_shebang_wrap_bash Arguments arg1 par_shebang_wrap_bash Arguments arg1
par_shebang_wrap_bash Arguments arg2 par_shebang_wrap_bash Arguments arg2
par_shebang_wrap_bash Arguments arg3.1 arg3.2 par_shebang_wrap_bash Arguments arg3.1 arg3.2
@ -87,9 +90,18 @@ par_shebang_wrap_csh Arguments arg3.1 arg3.2
par_shebang_wrap_csharp Arguments arg1 par_shebang_wrap_csharp Arguments arg1
par_shebang_wrap_csharp Arguments arg2 par_shebang_wrap_csharp Arguments arg2
par_shebang_wrap_csharp Arguments arg3.1 arg3.2 par_shebang_wrap_csharp Arguments arg3.1 arg3.2
par_shebang_wrap_fsharp Arguments: [|"arg1"|]
par_shebang_wrap_fsharp Arguments: [|"arg2"|]
par_shebang_wrap_fsharp Arguments: [|"arg3.1 arg3.2"|]
par_shebang_wrap_gnuplot Arguments arg1 par_shebang_wrap_gnuplot Arguments arg1
par_shebang_wrap_gnuplot Arguments arg2 par_shebang_wrap_gnuplot Arguments arg2
par_shebang_wrap_gnuplot Arguments arg3.1 arg3.2 par_shebang_wrap_gnuplot Arguments arg3.1 arg3.2
par_shebang_wrap_groovy Arguments: arg1
par_shebang_wrap_groovy Arguments: arg2
par_shebang_wrap_groovy Arguments: arg3.1 arg3.2
par_shebang_wrap_julia Arguments: arg1
par_shebang_wrap_julia Arguments: arg2
par_shebang_wrap_julia Arguments: arg3.1 arg3.2
par_shebang_wrap_ksh Arguments arg1 par_shebang_wrap_ksh Arguments arg1
par_shebang_wrap_ksh Arguments arg2 par_shebang_wrap_ksh Arguments arg2
par_shebang_wrap_ksh Arguments arg3.1 arg3.2 par_shebang_wrap_ksh Arguments arg3.1 arg3.2
@ -117,9 +129,27 @@ par_shebang_wrap_php Arguments arg3.1 arg3.2
par_shebang_wrap_python Arguments ['arg1'] par_shebang_wrap_python Arguments ['arg1']
par_shebang_wrap_python Arguments ['arg2'] par_shebang_wrap_python Arguments ['arg2']
par_shebang_wrap_python Arguments ['arg3.1 arg3.2'] par_shebang_wrap_python Arguments ['arg3.1 arg3.2']
par_shebang_wrap_racket Arguments: arg1
par_shebang_wrap_racket Arguments: arg2
par_shebang_wrap_racket Arguments: arg3.1 arg3.2
par_shebang_wrap_ruby Arguments arg1 par_shebang_wrap_ruby Arguments arg1
par_shebang_wrap_ruby Arguments arg2 par_shebang_wrap_ruby Arguments arg2
par_shebang_wrap_ruby Arguments arg3.1 arg3.2 par_shebang_wrap_ruby Arguments arg3.1 arg3.2
par_shebang_wrap_scheme Arguments: arg1
par_shebang_wrap_scheme `/tmp/trip`>/tmp/tripwire;
par_shebang_wrap_scheme 
par_shebang_wrap_scheme `/tmp/trip`>/tmp/tripwire;
par_shebang_wrap_scheme 
par_shebang_wrap_scheme Arguments: arg2
par_shebang_wrap_scheme `/tmp/trip`>/tmp/tripwire;
par_shebang_wrap_scheme 
par_shebang_wrap_scheme `/tmp/trip`>/tmp/tripwire;
par_shebang_wrap_scheme 
par_shebang_wrap_scheme Arguments: arg3.1 arg3.2
par_shebang_wrap_scheme `/tmp/trip`>/tmp/tripwire;
par_shebang_wrap_scheme 
par_shebang_wrap_scheme `/tmp/trip`>/tmp/tripwire;
par_shebang_wrap_scheme 
par_shebang_wrap_sh Arguments arg1 par_shebang_wrap_sh Arguments arg1
par_shebang_wrap_sh Arguments arg2 par_shebang_wrap_sh Arguments arg2
par_shebang_wrap_sh Arguments arg3.1 arg3.2 par_shebang_wrap_sh Arguments arg3.1 arg3.2

View file

@ -0,0 +1,133 @@
par_--env_underscore_fish ### fish
par_--env_underscore_fish Fish is broken
par_--env_underscore_fish ### Testing of --env _
par_--env_underscore_fish Test copying
par_--env_underscore_fish variables in aliases and arrays in functions work
par_--env_underscore_fish variables in aliases and arrays in functions work
par_--env_underscore_fish variables in aliases and arrays in functions work
par_--env_underscore_fish variables in aliases and arrays in functions work
par_--env_underscore_fish variables in aliases and arrays in functions work
par_--env_underscore_fish variables in aliases and arrays in functions work
par__man_fish ### fish
par__man_fish ### From man env_parallel
par__man_fish aliases with = & " ! ' work
par__man_fish aliases with = & " ! ' work
par__man_fish aliases with = & " ! ' work
par__man_fish aliases with = & " ! ' work
par__man_fish aliases with = & " ! ' work
par__man_fish functions with = & " ! ' work
par__man_fish functions with = & " ! ' work
par__man_fish functions with = & " ! ' work
par__man_fish functions with = & " ! ' work
par__man_fish functions with = & " ! ' work
par__man_fish variables with = & " ! ' work
par__man_fish variables with = & " ! ' work
par__man_fish variables with = & " ! ' work
par__man_fish variables with = & " ! ' work
par__man_fish variables with = & " ! ' work
par__man_fish multiline
par__man_fish variables with = & " ! ' work
par__man_fish multiline
par__man_fish variables with = & " ! ' work
par__man_fish multiline
par__man_fish variables with = & " ! ' work
par__man_fish multiline
par__man_fish variables with = & " ! ' work
par__man_fish multiline
par__man_fish variables with = & " ! ' work
par__man_fish arrays with = & " ! ' work, too
par__man_fish # these 4 fail often. Race condition?
par__man_fish arrays
par__man_fish with = & " ! '
par__man_fish work,
par__man_fish too
par__man_fish arrays
par__man_fish with = & " ! '
par__man_fish work,
par__man_fish too
par__man_fish arrays
par__man_fish with = & " ! '
par__man_fish work,
par__man_fish too
par__man_fish arrays
par__man_fish with = & " ! '
par__man_fish work,
par__man_fish too
par__man_fish multi
par__man_fish level
par__man_fish env_parallel
par__man_fish exit value 2 should be 2
par__man_fish Unknown option: no-such-option
par__man_fish exit value 255 should be 255 `sleep 1`
par_env_parallel_--session_fish ### Test env_parallel --session
par_env_parallel_--session_fish fish: Unknown command: aliasbefore
par_env_parallel_--session_fish fish:
par_env_parallel_--session_fish aliasbefore must_fail
par_env_parallel_--session_fish
par_env_parallel_--session_fish fish: Unknown command: aliasbefore
par_env_parallel_--session_fish script (line 6):
par_env_parallel_--session_fish aliasbefore must_fail
par_env_parallel_--session_fish
par_env_parallel_--session_fish fish: Unknown command: funcbefore
par_env_parallel_--session_fish fish:
par_env_parallel_--session_fish funcbefore must_fail
par_env_parallel_--session_fish
par_env_parallel_--session_fish fish: Unknown command: funcbefore
par_env_parallel_--session_fish script (line 6):
par_env_parallel_--session_fish funcbefore must_fail
par_env_parallel_--session_fish
par_env_parallel_--session_fish no_before
par_env_parallel_--session_fish no_before
par_env_parallel_--session_fish no_before
par_env_parallel_--session_fish no_before
par_env_parallel_--session_fish after aliasafter_OK
par_env_parallel_--session_fish after aliasafter_OK
par_env_parallel_--session_fish after funcafter_OK
par_env_parallel_--session_fish after funcafter_OK
par_env_parallel_--session_fish after varafter_OK
par_env_parallel_--session_fish after varafter_OK
par_env_parallel_--session_fish array after arrayafter_OK
par_env_parallel_--session_fish array after arrayafter_OK
par_env_parallel_fish bug #50435: Remote fifo broke in 20150522
par_env_parallel_fish data from stdin
par_env_parallel_fish OK
par_env_parallel_fish data from stdin
par_env_parallel_fish OK
par_env_parallel_fish OK: 0==0
par_env_parallel_fish ### Test failing command with --cat
par_env_parallel_fish data from stdin
par_env_parallel_fish OK: 1==1
par_env_parallel_fish data from stdin
par_env_parallel_fish OK: 1==1
par_funky_fish env_parallel: Warning: ASCII value 1 in variables is not supported
par_funky_fish 3 arg alias_works
par_funky_fish env_parallel: Warning: ASCII value 1 in variables is not supported
par_funky_fish function_works
par_funky_fish myvar works
par_funky_fish myenvvar works
par_funky_fish space 6
par_funky_fish
par_funky_fish
par_funky_fish
par_funky_fish Funky- par_funky_fish  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>-funky
par_funky_fish Funkyenv- par_funky_fish  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>-funkyenv
par_funky_fish
par_funky_fish
par_funky_fish
par_funky_fish env_parallel: Warning: ASCII value 1 in variables is not supported
par_funky_fish 3 arg alias_works_over_ssh
par_funky_fish env_parallel: Warning: ASCII value 1 in variables is not supported
par_funky_fish function_works_over_ssh
par_funky_fish myvar works
par_funky_fish myenvvar works
par_funky_fish space 6
par_funky_fish
par_funky_fish
par_funky_fish
par_funky_fish Funky- par_funky_fish  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>-funky
par_funky_fish Funkyenv- par_funky_fish  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>-funkyenv
par_funky_fish
par_funky_fish
par_funky_fish
par_funky_fish
par_funky_fish ' par_funky_fish  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>'

View file

@ -1061,19 +1061,16 @@ cat: num_%header: No such file or directory
/usr/bin/bash: line 2: foo: command not found /usr/bin/bash: line 2: foo: command not found
#!/usr/bin/perl #!/usr/bin/perl
print "@ARGV\n" print "@ARGV\n"
Warning: unknown mime-type for "@ARGV\n" -- using "application/octet-stream"
Error: no such file "@ARGV\n" Error: no such file "@ARGV\n"
parallel perl_echo ::: foo bar parallel perl_echo ::: foo bar
/usr/bin/bash: line 1: perl_echo: command not found /usr/bin/bash: line 1: perl_echo: command not found
#!/usr/bin/parallel --shebang-wrap /usr/bin/perl #!/usr/bin/parallel --shebang-wrap /usr/bin/perl
print "@ARGV\n" print "@ARGV\n"
Warning: unknown mime-type for "@ARGV\n" -- using "application/octet-stream"
Error: no such file "@ARGV\n" Error: no such file "@ARGV\n"
perl_echo foo bar perl_echo foo bar
/usr/bin/bash: line 1: perl_echo: command not found /usr/bin/bash: line 1: perl_echo: command not found
#!/usr/bin/parallel --shebang-wrap /usr/bin/perl #!/usr/bin/parallel --shebang-wrap /usr/bin/perl
print "Arguments @ARGV\n"; print "Arguments @ARGV\n";
Warning: unknown mime-type for "Arguments @ARGV\n" -- using "application/octet-stream"
Error: no such file "Arguments @ARGV\n" Error: no such file "Arguments @ARGV\n"
#!/usr/bin/parallel --shebang-wrap /usr/bin/python #!/usr/bin/parallel --shebang-wrap /usr/bin/python
print 'Arguments', str(sys.argv) print 'Arguments', str(sys.argv)
@ -1094,7 +1091,6 @@ Arguments
#!/usr/bin/parallel --shebang-wrap /usr/bin/ruby #!/usr/bin/parallel --shebang-wrap /usr/bin/ruby
print "Arguments " print "Arguments "
puts ARGV puts ARGV
Warning: unknown mime-type for "Arguments " -- using "application/octet-stream"
Error: no such file "Arguments " Error: no such file "Arguments "
/usr/bin/bash: line 4: puts: command not found /usr/bin/bash: line 4: puts: command not found
#!/usr/bin/parallel --shebang-wrap /usr/bin/octave #!/usr/bin/parallel --shebang-wrap /usr/bin/octave

View file

@ -13,8 +13,8 @@ par__noheaders def 3
par__noheaders abc 1 par__noheaders abc 1
par__noheaders def 3 par__noheaders def 3
par__tablesize ### Test --table-size --tablesize par__tablesize ### Test --table-size --tablesize
par__tablesize 93 par__tablesize 94
par__tablesize 93 par__tablesize 94
par_dburl_user_password_host_port ### Test dburl with username password host port par_dburl_user_password_host_port ### Test dburl with username password host port
par_dburl_user_password_host_port Test dburl with username password host port par_dburl_user_password_host_port Test dburl with username password host port
par_dburl_user_password_host_port OK par_dburl_user_password_host_port OK

View file

@ -100,7 +100,7 @@ par_sqlite bytes
par_sqlite 3072 par_sqlite 3072
par_sqlite Current command: sqlite3 par_sqlite Current command: sqlite3
par_sqlite foo par_sqlite foo
par_sqlite sqltest.sqlite3: SQLite 3.x database, last written using SQLite version 3045001, file counter 1, database pages 2, cookie 0x1, schema 4, UTF-8, version-valid-for 1 par_sqlite sqltest.sqlite3: SQLite 3.x database, last written using SQLite, file counter 1, database pages 2, cookie 0x1, schema 4, UTF-8, version-valid-for 1
par_sqlite n|t par_sqlite n|t
par_sqlite 1|Line 1 par_sqlite 1|Line 1
par_sqlite 2|Line 2 par_sqlite 2|Line 2