Provide an attachment for convenience.

Change `--eof` to `--eof=`.

On Wed, Mar 30, 2022 at 05:10:08PM +0800, Wu Zhenyu wrote:
> Hey, everyone.
> 
> I notice parallel seem to have no shell completions. It is not convenient.
> Parallel now have about 190 command options, so it is hard to remember them.
> Can parallel have any shell completions?
> 
> This is a zsh completion file I used.
> 
> ```zsh
> #compdef parallel
> 
> setopt localoptions extended_glob
> 
> local -a _comp_priv_prefix
> 
> _arguments \
>   {--null,-0}'[Use NUL as delimiter]' \
>   {--arg-file,-a}'[Use input-file as input source]:input-file:_files' \
>   --arg-file-sep'[Use sep-str instead of :::: as separator string between 
> command and argument files]:sep-str' \
>   --arg-sep'[Use sep-str instead of ::: as separator string]:sep-str' \
>   --bar'[Show progress as a progress bar]' \
>   {--basefile,--bf}'[file will be transferred to each sshlogin before first 
> job is started]:file:_files' \
>   {--basenamereplace,--bnr}'[Use the replacement string replace-str instead 
> of {/} for basename of input line]:replace-str' \
>   {--basenameextensionreplace,--bner}'[Use the replacement string replace-str 
> instead of {/.} for basename of input line without extension]:replace-str' \
>   --bin'[Use binexpr as binning key and bin input to the jobs]:binexpr' \
>   --bg'[Run command in background]' \
>   {--bibtex,--citation}'[Print the citation notice and BibTeX entry for GNU 
> parallel, silence citation notice for all future runs, and exit. It will not 
> run any commands]' \
>   {--block,--block-size}'[Size of block in bytes to read at a time]:size' \
>   {--block-timeout,--bt}'[Timeout for reading block when using 
> --pipe]:duration' \
>   --cat'[Create a temporary file with content]' \
>   --cleanup'[Remove transferred files]' \
>   {--colsep,-C}'[Column separator]:regexp' \
>   --compress'[Compress temporary files]' \
>   --compress-program'[Use prg for compressing temporary files]:prg:_commands' 
> \
>   --decompress-program'[Use prg for decompressing temporary 
> files]:prg:_commands' \
>   --csv'[Treat input as CSV-format]' \
>   --ctag'[Color tag]:str' \
>   --ctagstring'[Color tagstring]:str' \
>   --delay'[Delay starting next job by duration]:duration' \
>   {--delimiter,-d}'[Input items are terminated by delim]:delim' \
>   {--dirnamereplace,--dnr}'[Use the replacement string replace-str instead of 
> {//} for dirname of input line]:replace-str' \
>   --dry-run'[Print the job to run on stdout (standard output), but do not run 
> the job]' \
>   {--eof,-e,-E}'[Set the end of file string to eof-str]:eof-str' \
>   --embed'[Embed GNU parallel in a shell script]' \
>   --env'[Copy environment variable var]:var:_vars' \
>   --eta'[Show the estimated number of seconds before finishing]' \
>   --fg'[Run command in foreground]' \
>   --fifo'[Create a temporary fifo with content]' \
>   --filter'[Only run jobs where filter is true]:filter' \
>   --filter-hosts'[Remove down hosts]' \
>   --gnu'[Behave like GNU parallel]' \
>   --group'[Group output]' \
>   --group-by'[Group input by value]:val' \
>   (- *){--help,-h}'[Print a summary of the options to GNU parallel and exit]' 
> \
>   {--halt-on-error,--halt}'[When should GNU parallel terminate]:val' \
>   --header'[Use regexp as header]:regexp' \
>   {--hostgroups,--hgrp}'[Enable hostgroups on arguments]' \
>   -I'[Use the replacement string replace-str instead of {}]:replace-str' \
>   {--replace,-i}'[This option is deprecated; use -I instead]:replace-str' \
>   --joblog'[Logfile for executed jobs]:logfile:_files' \
>   {--jobs,-j,--max-procs,-P}'[Add N to/Subtract N from/Multiply N% with/ the 
> number of CPU threads or read parameter from 
> file]:+N/-N/N%/N/procfile:_files' \
>   {--keep-order,-k}'[Keep sequence of output same as the order of input]' \
>   -L'[When used with --pipe: Read records of recsize]:recsize' \
>   {--max-lines,-l}[recsize]'[When used with --pipe: Read records of recsize 
> lines]' \
>   --limit'[Dynamic job limit]:"command args":((0\:"Below limit. Start another 
> job" 1\:"Over limit. Start no jobs." 2\:"Way over limit. Kill the youngest 
> job."))' \
>   {--line-buffer,--lb}'[Buffer output on line basis]' \
>   {--link,--xapply}'[Link input sources]' \
>   --load'[Only start jobs if load is less than max-load]:max-load' \
>   {--controlmaster,-M}'[Use ssh''s ControlMaster to make ssh connections 
> faster]' \
>   -m'[Multiple arguments]' \
>   --memfree'[Minimum memory free when starting another job]:size' \
>   --memsuspend'[Suspend jobs when there is less memory available]:size' \
>   '(- *)'--minversion'[Print the version GNU parallel and 
> exit]:version:'"($(parallel --minversion 0))" \
>   {--max-args,-n}'[Use at most max-args arguments per command line]:max-args' 
> \
>   {--max-replace-args,-N}'[Use at most max-args arguments per command 
> line]:max-args' \
>   --nonall'[--onall with no arguments]' \
>   --onall'[Run all the jobs on all computers given with --sshlogin]' \
>   {--output-as-files,--outputasfiles,--files}'[Save output to files]' \
>   {--pipe,--spreadstdin}'[Spread input to jobs on stdin (standard input)]' \
>   --pipe-part'[Pipe parts of a physical file]' \
>   --plain'[Ignore --profile, $PARALLEL, and ~/.parallel/config]' \
>   --plus'[Add more replacement strings]' \
>   --progress'[Show progress of computations]' \
>   --max-line-length-allowed'[Print maximal command line length]' \
>   --number-of-cpus'[Print the number of physical CPU cores and exit 
> (obsolete)]' \
>   --number-of-cores'[Print the number of physical CPU cores and exit (used by 
> GNU parallel itself to determine the number of physical CPU cores on remote 
> computers)]' \
>   --number-of-sockets'[Print the number of filled CPU sockets and exit (used 
> by GNU parallel itself to determine the number of filled CPU sockets on 
> remote computers)]' \
>   --number-of-threads'[Print the number of hyperthreaded CPU cores and exit 
> (used by GNU parallel itself to determine the number of hyperthreaded CPU 
> cores on remote computers)]' \
>   --no-keep-order'[Overrides an earlier --keep-order (e.g. if set in 
> ~/.parallel/config)]' \
>   --nice'[Run the command at this niceness]:niceness:'"($(seq -20 19))" \
>   {--interactive,-p}'[Ask user before running a job]' \
>   --parens'[Use parensstring instead of {==}]:parensstring' \
>   {--profile,-J}'[Use profile profilename for options]:profilename:_files' \
>   {--quote,-q}'[Quote command]' \
>   {--no-run-if-empty,-r}'[Do not run empty input]' \
>   --noswap'[Do not start job is computer is swapping]' \
>   --record-env'[Record environment]' \
>   {--recstart,--recend}'[Split record between endstring and 
> startstring]:endstring' \
>   --regexp'[Use --regexp to interpret --recstart and --recend as regular 
> expressions. This is slow, however]' \
>   {--remove-rec-sep,--removerecsep,--rrs}'[Remove record separator]' \
>   {--results,--res}'[Save the output into files]:name:_files' \
>   --resume'[Resumes from the last unfinished job]' \
>   --resume-failed'[Retry all failed and resume from the last unfinished job]' 
> \
>   --retry-failed'[Retry all failed jobs in joblog]' \
>   --retries'[Try failing jobs n times]:n' \
>   --return'[Transfer files from remote computers]:filename:_files' \
>   {--round-robin,--round}'[Distribute chunks of standard input in a round 
> robin fashion]' \
>   --rpl'[Define replacement string]:"tag perl expression"' \
>   --rsync-opts'[Options to pass on to rsync]:options' \
>   {--max-chars,-s}'[Limit length of command]:max-chars' \
>   --show-limits'[Display limits given by the operating system]' \
>   --semaphore'[Work as a counting semaphore]' \
>   {--semaphore-name,--id}'[Use name as the name of the semaphore]:name' \
>   {--semaphore-timeout,--st}'[If secs > 0: If the semaphore is not released 
> within secs seconds, take it anyway]:secs' \
>   --seqreplace'[Use the replacement string replace-str instead of {#} for job 
> sequence number]:replace-str' \
>   --session'[Record names in current environment in $PARALLEL_IGNORED_NAMES 
> and exit. Only used with env_parallel. Aliases, functions, and variables with 
> names i]' \
>   --shard'[Use shardexpr as shard key and shard input to the jobs]:shardexpr' 
> \
>   {--shebang,--hashbang}'[GNU parallel can be called as a shebang (#!) 
> command as the first line of a script. The content of the file will be 
> treated as inputsource]' \
>   --shebang-wrap'[GNU parallel can parallelize scripts by wrapping the 
> shebang line]' \
>   --shell-quote'[Does not run the command but quotes it. Useful for making 
> quoted composed commands for GNU parallel]' \
>   --shuf'[Shuffle jobs]' \
>   --skip-first-line'[Do not use the first line of input (used by GNU parallel 
> itself when called with --shebang)]' \
>   --sql'[Use --sql-master instead (obsolete)]:DBURL' \
>   --sql-master'[Submit jobs via SQL server. DBURL must point to a table, 
> which will contain the same information as --joblog, the values from the 
> input sources (stored i]:DBURL' \
>   --sql-and-worker'[--sql-master DBURL --sql-worker DBURL]:DBURL' \
>   --sql-worker'[Execute jobs via SQL server. Read the input sources variables 
> from the table pointed to by DBURL. The command on the command line should be 
> the same a]:DBURL' \
>   --ssh'[GNU parallel defaults to using ssh for remote access. This can be 
> overridden with --ssh. It can also be set on a per server basis with 
> --sshlogin]:sshcommand' \
>   --ssh-delay'[Delay starting next ssh by duration]:duration' \
>   {--sshlogin,-S}'[Distribute jobs to remote 
> computers]:[@hostgroups/][ncpus/]sshlogin[,[@hostgroups/][ncpus/]sshlogin[,...]]
>  or @hostgroup:_users' \
>   {--sshloginfile,--slf}'[File with sshlogins. The file consists of sshlogins 
> on separate lines. Empty lines and lines starting with '#' are ignored. 
> Example]:filename:_files' \
>   --slotreplace'[Use the replacement string replace-str instead of {%} for 
> job slot number]:replace-str' \
>   --silent'[Silent]' \
>   {--template,--tmpl}'[Replace replacement strings in file and save it in 
> repl]:file=repl:_files' \
>   --tty'[Open terminal tty]' \
>   --tag'[Tag lines with arguments]' \
>   --tagstring'[Tag lines with a string]:str' \
>   --tee'[Pipe all data to all jobs]' \
>   --term-seq'[Termination sequence]:sequence' \
>   --tmpdir'[Directory for temporary files]:dirname:_cd' \
>   --tmux'[Use tmux for output. Start a tmux session and run each job in a 
> window in that session. No other output will be produced]' \
>   --tmuxpane'[Use tmux for output but put output into panes in the first 
> window.  Useful if you want to monitor the progress of less than 100 
> concurrent jobs]' \
>   --timeout'[Time out for command. If the command runs for longer than 
> duration seconds it will get killed as per --term-seq]:duration' \
>   {--verbose,-t}'[Print the job to be run on stderr (standard error)]' \
>   --transfer'[Transfer files to remote computers]' \
>   {--transferfile,--tf}'[Transfer filename to remote 
> computers]:filename:_files' \
>   --trc'[--transfer --return filename --cleanup]:filename:_files' \
>   --trim'[Trim white space in input]:trim_method:(n l r lr rl)' \
>   {--ungroup,-u}'[Output is printed as soon as possible and bypasses GNU 
> parallel internal processing]' \
>   {--extensionreplace,--er}'[Use the replacement string replace-str instead 
> of {.} for input line without extension]:replace-str' \
>   
> {--use-sockets-instead-of-threads,--use-cores-instead-of-threads,--use-cpus-instead-of-cores}'[Determine
>  how GNU parallel counts the number of CPUs (obsolete)]' \
>   -v'[Verbose]' \
>   '(- *)'{--version,-V}'[Print the version GNU parallel and exit]' \
>   {--workdir,--wd}'[Jobs will be run in the dir mydir. (default: the current 
> dir for the local machine, the login dir for remote computers)]:mydir:_cd' \
>   --wait'[Wait for all commands to complete]' \
>   -X'[Insert as many arguments as the command line length permits]' \
>   {--exit,-x}'[Exit if the size (see the -s option) is exceeded]' \
>   --xargs'[Insert as many arguments as the command line length permits]' \
>   '(-)1:command: _command_names -e' \
>   '*::arguments:{ _comp_priv_prefix=( '$words[1]' -n 
> ${(kv)opt_args[(I)(-[ugHEP]|--(user|group|set-home|preserve-env|preserve-groups))]}
>  ) ; _normal }'
> ```
> 
> Put it to `/usr/share/zsh/site-functions/_parallel`, then `compinit` to 
> generate `~/.zcompdump`. Then it can work.
> 
> ```shell
> ❯ parallel -<Tab>
> option
> -0                                 Use NUL as delimiter
> --arg-file-sep                     Use sep-str instead of :::: as separator 
> string between command and argument files
> --arg-file                         Use input-file as input source
> --arg-sep                          Use sep-str instead of ::: as separator 
> string
> -a                                 Use input-file as input source
> --bar                              Show progress as a progress bar
> --basefile                         file will be transferred to each sshlogin 
> before first job is started
> ...
> ❯ parallel <Tab>
> external command
> \[                                          import                            
>           ptex2pdf
> \$                                          import_interpolation              
>           ptftopl
> 2to3                                        indxbib                           
>           ptipython
> 2to3-3.10                                   inetcat                           
>           ptipython3
> ...
> ❯ parallel ls -<Tab>
> files
> option
> -1                                          single column output
> -A                                          list all except . and ..
> ...
> ❯ parallel --limit <Tab>
> "command args"
> 0   Below limit. Start another job
> 1   Over limit. Start no jobs.
> 2   Way over limit. Kill the youngest job.
> ```
> 
> Thanks!
#compdef parallel

setopt localoptions extended_glob

local -a _comp_priv_prefix

_arguments \
  {--null,-0}'[Use NUL as delimiter]' \
  {--arg-file,-a}'[Use input-file as input source]:input-file:_files' \
  --arg-file-sep'[Use sep-str instead of :::: as separator string between 
command and argument files]:sep-str' \
  --arg-sep'[Use sep-str instead of ::: as separator string]:sep-str' \
  --bar'[Show progress as a progress bar]' \
  {--basefile,--bf}'[file will be transferred to each sshlogin before first job 
is started]:file:_files' \
  {--basenamereplace,--bnr}'[Use the replacement string replace-str instead of 
{/} for basename of input line]:replace-str' \
  {--basenameextensionreplace,--bner}'[Use the replacement string replace-str 
instead of {/.} for basename of input line without extension]:replace-str' \
  --bin'[Use binexpr as binning key and bin input to the jobs]:binexpr' \
  --bg'[Run command in background]' \
  {--bibtex,--citation}'[Print the citation notice and BibTeX entry for GNU 
parallel, silence citation notice for all future runs, and exit. It will not 
run any commands]' \
  {--block,--block-size}'[Size of block in bytes to read at a time]:size' \
  {--block-timeout,--bt}'[Timeout for reading block when using 
--pipe]:duration' \
  --cat'[Create a temporary file with content]' \
  --cleanup'[Remove transferred files]' \
  {--colsep,-C}'[Column separator]:regexp' \
  --compress'[Compress temporary files]' \
  --compress-program'[Use prg for compressing temporary files]:prg:_commands' \
  --decompress-program'[Use prg for decompressing temporary 
files]:prg:_commands' \
  --csv'[Treat input as CSV-format]' \
  --ctag'[Color tag]:str' \
  --ctagstring'[Color tagstring]:str' \
  --delay'[Delay starting next job by duration]:duration' \
  {--delimiter,-d}'[Input items are terminated by delim]:delim' \
  {--dirnamereplace,--dnr}'[Use the replacement string replace-str instead of 
{//} for dirname of input line]:replace-str' \
  --dry-run'[Print the job to run on stdout (standard output), but do not run 
the job]' \
  {--eof=,-e,-E}'[Set the end of file string to eof-str]:eof-str' \
  --embed'[Embed GNU parallel in a shell script]' \
  --env'[Copy environment variable var]:var:_vars' \
  --eta'[Show the estimated number of seconds before finishing]' \
  --fg'[Run command in foreground]' \
  --fifo'[Create a temporary fifo with content]' \
  --filter'[Only run jobs where filter is true]:filter' \
  --filter-hosts'[Remove down hosts]' \
  --gnu'[Behave like GNU parallel]' \
  --group'[Group output]' \
  --group-by'[Group input by value]:val' \
  (- *){--help,-h}'[Print a summary of the options to GNU parallel and exit]' \
  {--halt-on-error,--halt}'[When should GNU parallel terminate]:val' \
  --header'[Use regexp as header]:regexp' \
  {--hostgroups,--hgrp}'[Enable hostgroups on arguments]' \
  -I'[Use the replacement string replace-str instead of {}]:replace-str' \
  {--replace,-i}'[This option is deprecated; use -I instead]:replace-str' \
  --joblog'[Logfile for executed jobs]:logfile:_files' \
  {--jobs,-j,--max-procs,-P}'[Add N to/Subtract N from/Multiply N% with/ the 
number of CPU threads or read parameter from file]:+N/-N/N%/N/procfile:_files' \
  {--keep-order,-k}'[Keep sequence of output same as the order of input]' \
  -L'[When used with --pipe: Read records of recsize]:recsize' \
  {--max-lines,-l}[recsize]'[When used with --pipe: Read records of recsize 
lines]' \
  --limit'[Dynamic job limit]:"command args":((0\:"Below limit. Start another 
job" 1\:"Over limit. Start no jobs." 2\:"Way over limit. Kill the youngest 
job."))' \
  {--line-buffer,--lb}'[Buffer output on line basis]' \
  {--link,--xapply}'[Link input sources]' \
  --load'[Only start jobs if load is less than max-load]:max-load' \
  {--controlmaster,-M}'[Use ssh''s ControlMaster to make ssh connections 
faster]' \
  -m'[Multiple arguments]' \
  --memfree'[Minimum memory free when starting another job]:size' \
  --memsuspend'[Suspend jobs when there is less memory available]:size' \
  '(- *)'--minversion'[Print the version GNU parallel and 
exit]:version:'"($(parallel --minversion 0))" \
  {--max-args,-n}'[Use at most max-args arguments per command line]:max-args' \
  {--max-replace-args,-N}'[Use at most max-args arguments per command 
line]:max-args' \
  --nonall'[--onall with no arguments]' \
  --onall'[Run all the jobs on all computers given with --sshlogin]' \
  {--output-as-files,--outputasfiles,--files}'[Save output to files]' \
  {--pipe,--spreadstdin}'[Spread input to jobs on stdin (standard input)]' \
  --pipe-part'[Pipe parts of a physical file]' \
  --plain'[Ignore --profile, $PARALLEL, and ~/.parallel/config]' \
  --plus'[Add more replacement strings]' \
  --progress'[Show progress of computations]' \
  --max-line-length-allowed'[Print maximal command line length]' \
  --number-of-cpus'[Print the number of physical CPU cores and exit 
(obsolete)]' \
  --number-of-cores'[Print the number of physical CPU cores and exit (used by 
GNU parallel itself to determine the number of physical CPU cores on remote 
computers)]' \
  --number-of-sockets'[Print the number of filled CPU sockets and exit (used by 
GNU parallel itself to determine the number of filled CPU sockets on remote 
computers)]' \
  --number-of-threads'[Print the number of hyperthreaded CPU cores and exit 
(used by GNU parallel itself to determine the number of hyperthreaded CPU cores 
on remote computers)]' \
  --no-keep-order'[Overrides an earlier --keep-order (e.g. if set in 
~/.parallel/config)]' \
  --nice'[Run the command at this niceness]:niceness:'"($(seq -20 19))" \
  {--interactive,-p}'[Ask user before running a job]' \
  --parens'[Use parensstring instead of {==}]:parensstring' \
  {--profile,-J}'[Use profile profilename for options]:profilename:_files' \
  {--quote,-q}'[Quote command]' \
  {--no-run-if-empty,-r}'[Do not run empty input]' \
  --noswap'[Do not start job is computer is swapping]' \
  --record-env'[Record environment]' \
  {--recstart,--recend}'[Split record between endstring and 
startstring]:endstring' \
  --regexp'[Use --regexp to interpret --recstart and --recend as regular 
expressions. This is slow, however]' \
  {--remove-rec-sep,--removerecsep,--rrs}'[Remove record separator]' \
  {--results,--res}'[Save the output into files]:name:_files' \
  --resume'[Resumes from the last unfinished job]' \
  --resume-failed'[Retry all failed and resume from the last unfinished job]' \
  --retry-failed'[Retry all failed jobs in joblog]' \
  --retries'[Try failing jobs n times]:n' \
  --return'[Transfer files from remote computers]:filename:_files' \
  {--round-robin,--round}'[Distribute chunks of standard input in a round robin 
fashion]' \
  --rpl'[Define replacement string]:"tag perl expression"' \
  --rsync-opts'[Options to pass on to rsync]:options' \
  {--max-chars,-s}'[Limit length of command]:max-chars' \
  --show-limits'[Display limits given by the operating system]' \
  --semaphore'[Work as a counting semaphore]' \
  {--semaphore-name,--id}'[Use name as the name of the semaphore]:name' \
  {--semaphore-timeout,--st}'[If secs > 0: If the semaphore is not released 
within secs seconds, take it anyway]:secs' \
  --seqreplace'[Use the replacement string replace-str instead of {#} for job 
sequence number]:replace-str' \
  --session'[Record names in current environment in $PARALLEL_IGNORED_NAMES and 
exit. Only used with env_parallel. Aliases, functions, and variables with names 
i]' \
  --shard'[Use shardexpr as shard key and shard input to the jobs]:shardexpr' \
  {--shebang,--hashbang}'[GNU parallel can be called as a shebang (#!) command 
as the first line of a script. The content of the file will be treated as 
inputsource]' \
  --shebang-wrap'[GNU parallel can parallelize scripts by wrapping the shebang 
line]' \
  --shell-quote'[Does not run the command but quotes it. Useful for making 
quoted composed commands for GNU parallel]' \
  --shuf'[Shuffle jobs]' \
  --skip-first-line'[Do not use the first line of input (used by GNU parallel 
itself when called with --shebang)]' \
  --sql'[Use --sql-master instead (obsolete)]:DBURL' \
  --sql-master'[Submit jobs via SQL server. DBURL must point to a table, which 
will contain the same information as --joblog, the values from the input 
sources (stored i]:DBURL' \
  --sql-and-worker'[--sql-master DBURL --sql-worker DBURL]:DBURL' \
  --sql-worker'[Execute jobs via SQL server. Read the input sources variables 
from the table pointed to by DBURL. The command on the command line should be 
the same a]:DBURL' \
  --ssh'[GNU parallel defaults to using ssh for remote access. This can be 
overridden with --ssh. It can also be set on a per server basis with 
--sshlogin]:sshcommand' \
  --ssh-delay'[Delay starting next ssh by duration]:duration' \
  {--sshlogin,-S}'[Distribute jobs to remote 
computers]:[@hostgroups/][ncpus/]sshlogin[,[@hostgroups/][ncpus/]sshlogin[,...]]
 or @hostgroup:_users' \
  {--sshloginfile,--slf}'[File with sshlogins. The file consists of sshlogins 
on separate lines. Empty lines and lines starting with '#' are ignored. 
Example]:filename:_files' \
  --slotreplace'[Use the replacement string replace-str instead of {%} for job 
slot number]:replace-str' \
  --silent'[Silent]' \
  {--template,--tmpl}'[Replace replacement strings in file and save it in 
repl]:file=repl:_files' \
  --tty'[Open terminal tty]' \
  --tag'[Tag lines with arguments]' \
  --tagstring'[Tag lines with a string]:str' \
  --tee'[Pipe all data to all jobs]' \
  --term-seq'[Termination sequence]:sequence' \
  --tmpdir'[Directory for temporary files]:dirname:_cd' \
  --tmux'[Use tmux for output. Start a tmux session and run each job in a 
window in that session. No other output will be produced]' \
  --tmuxpane'[Use tmux for output but put output into panes in the first 
window.  Useful if you want to monitor the progress of less than 100 concurrent 
jobs]' \
  --timeout'[Time out for command. If the command runs for longer than duration 
seconds it will get killed as per --term-seq]:duration' \
  {--verbose,-t}'[Print the job to be run on stderr (standard error)]' \
  --transfer'[Transfer files to remote computers]' \
  {--transferfile,--tf}'[Transfer filename to remote 
computers]:filename:_files' \
  --trc'[--transfer --return filename --cleanup]:filename:_files' \
  --trim'[Trim white space in input]:trim_method:(n l r lr rl)' \
  {--ungroup,-u}'[Output is printed as soon as possible and bypasses GNU 
parallel internal processing]' \
  {--extensionreplace,--er}'[Use the replacement string replace-str instead of 
{.} for input line without extension]:replace-str' \
  
{--use-sockets-instead-of-threads,--use-cores-instead-of-threads,--use-cpus-instead-of-cores}'[Determine
 how GNU parallel counts the number of CPUs (obsolete)]' \
  -v'[Verbose]' \
  '(- *)'{--version,-V}'[Print the version GNU parallel and exit]' \
  {--workdir,--wd}'[Jobs will be run in the dir mydir. (default: the current 
dir for the local machine, the login dir for remote computers)]:mydir:_cd' \
  --wait'[Wait for all commands to complete]' \
  -X'[Insert as many arguments as the command line length permits]' \
  {--exit,-x}'[Exit if the size (see the -s option) is exceeded]' \
  --xargs'[Insert as many arguments as the command line length permits]' \
  '(-)1:command: _command_names -e' \
  '*::arguments:{ _comp_priv_prefix=( '$words[1]' -n 
${(kv)opt_args[(I)(-[ugHEP]|--(user|group|set-home|preserve-env|preserve-groups))]}
 ) ; _normal }'

Reply via email to