parallel-sh

Crates.io CI GitHub license

parallel-sh was heavily inspired by Rust Parallel (parallel) parallelizing 'otherwise non-parallel command-line tasks.' But instead of recreating the full functionality of GNU Parallel parallel-sh will only execute (lines of) commands in the platform's preferred shell ('sh -c' on Unix systems, and 'powershell.exe -c' on Windows) in separate threads.

What is not part of parallel-sh:

If you need any of these to be part of your parallelizing tool please check GNU Parallel or Rust Parallel.

Most of the effects of these features can be achieved by processing the commands before passing them to parallel-sh.

What to expect:

Options

```text parallel-sh 0.1.1 Execute commands in parallel

USAGE: parallel-sh [FLAGS] [OPTIONS] [clijobs]...

FLAGS: --dry-run Perform a trial run, only print what would be done (with -vv) --halt-on-error Stop execution if an error occurs in any thread -h, --help Prints help information -q, --quiet Do not print parallel-sh warnings -v, --verbose Sets the level of verbosity -V, --version Prints version information

OPTIONS: -f, --file Read commands from file (one command per line) -l, --log Log output to file -j, --jobs Number of parallel executions

ARGS: ... ```

Preference

  1. Pass commands as arguments: shell parallel-sh "sleep 1 && echo 1" "sleep 2 && echo 2"

  2. Pass a file with one command (-line) per line: ```shell parallel-sh -f /tmp/commands

    $ cat /tmp/commands sleep 1 && echo 1 sleep 2 && echo 2 ```

  3. Pass commands via stdin: shell echo -e 'sleep 1 && echo 1\nsleep 2 && echo 2' |parallel-sh