org.codehaus.plexus.util.cli.shell

## Class Shell

- java.lang.Object
- - org.codehaus.plexus.util.cli.shell.Shell

All Implemented Interfaces:
  Cloneable

Direct Known Subclasses:
  BourneShell, CmdShell, CommandShell

    public class Shell
    extends Object
    implements Cloneable

Class that abstracts the Shell functionality, with subclases for shells that behave particularly, like

- `command.com`
- `cmd.exe`

Since:
  1.2
Version:
  $Id$
Author:
  Carlos Sanchez

### Constructor Summary

Constructors
Constructor and Description
`Shell()`

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `addShellArg(String arg)`
`void` `clearArguments()`
`Object` `clone()`
`protected String` `getArgumentEscapePattern()`
`protected char` `getArgumentQuoteDelimiter()`
`List<String>` `getCommandLine(String executable, String[] arguments)` Get the command line for the provided executable and arguments in this shell
`protected char[]` `getEscapeChars(boolean includeSingleQuote, boolean includeDoubleQuote)`
`String` `getExecutable()`
`protected char` `getExecutableQuoteDelimiter()`
`protected String` `getExecutionPreamble()`
`List<String>` `getOriginalCommandLine(String executable, String[] arguments)`
`String` `getOriginalExecutable()`
`protected char[]` `getQuotingTriggerChars()`
`protected List<String>` `getRawCommandLine(String executable, String[] arguments)`
`String[]` `getShellArgs()` Get the shell arguments
`List<String>` `getShellArgsList()`
`String` `getShellCommand()` Get the command to execute the shell
`List<String>` `getShellCommandLine(String[] arguments)` Get the full command line to execute, including shell command, shell arguments, executable and executable arguments
`File` `getWorkingDirectory()`
`String` `getWorkingDirectoryAsString()`
`protected boolean` `isDoubleQuotedArgumentEscaped()`
`protected boolean` `isDoubleQuotedExecutableEscaped()`
`boolean` `isQuotedArgumentsEnabled()`
`boolean` `isQuotedExecutableEnabled()`
`protected boolean` `isSingleQuotedArgumentEscaped()`
`protected boolean` `isSingleQuotedExecutableEscaped()`
`protected String` `quoteOneItem(String inputString, boolean isExecutable)`
`protected void` `setArgumentEscapePattern(String argumentEscapePattern)`
`protected void` `setArgumentQuoteDelimiter(char argQuoteDelimiter)`
`protected void` `setDoubleQuotedArgumentEscaped(boolean doubleQuotedArgumentEscaped)`
`protected void` `setDoubleQuotedExecutableEscaped(boolean doubleQuotedExecutableEscaped)`
`void` `setExecutable(String executable)` Sets the executable to run.
`protected void` `setExecutableQuoteDelimiter(char exeQuoteDelimiter)`
`void` `setQuotedArgumentsEnabled(boolean quotedArgumentsEnabled)`
`void` `setQuotedExecutableEnabled(boolean quotedExecutableEnabled)`
`void` `setShellArgs(String[] shellArgs)` Set the shell arguments when calling a command line (not the executable arguments) (eg.
`void` `setShellCommand(String shellCommand)` Set the command to execute the shell (eg.
`protected void` `setSingleQuotedArgumentEscaped(boolean singleQuotedArgumentEscaped)`
`protected void` `setSingleQuotedExecutableEscaped(boolean singleQuotedExecutableEscaped)`
`void` `setUnconditionalQuoting(boolean unconditionallyQuote)` Toggle unconditional quoting
`void` `setWorkingDirectory(File workingDir)` Sets execution directory.
`void` `setWorkingDirectory(String path)` Sets execution directory.

### Methods inherited from class java.lang.Object

`equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### Shell

    public Shell()

### Method Detail

#### setUnconditionalQuoting

    public void setUnconditionalQuoting(boolean unconditionallyQuote)

Toggle unconditional quoting

Parameters:
  `unconditionallyQuote` -

#### setShellCommand

    public void setShellCommand(String shellCommand)

Set the command to execute the shell (eg. COMMAND.COM, /bin/bash,...)

Parameters:
  `shellCommand` -

#### getShellCommand

    public String getShellCommand()

Get the command to execute the shell

Returns:

#### setShellArgs

    public void setShellArgs(String[] shellArgs)

Set the shell arguments when calling a command line (not the executable arguments) (eg. /X /C for CMD.EXE)

Parameters:
  `shellArgs` -

#### getShellArgs

    public String[] getShellArgs()

Get the shell arguments

Returns:

#### getCommandLine

    public List<String> getCommandLine(String executable,
                                       String[] arguments)

Get the command line for the provided executable and arguments in this shell

Parameters:
  `executable` - executable that the shell has to call
  `arguments` - arguments for the executable, not the shell
Returns:
  List with one String object with executable and arguments quoted as needed

#### quoteOneItem

    protected String quoteOneItem(String inputString,
                                  boolean isExecutable)

#### getRawCommandLine

    protected List<String> getRawCommandLine(String executable,
                                             String[] arguments)

#### getQuotingTriggerChars

    protected char[] getQuotingTriggerChars()

#### getExecutionPreamble

    protected String getExecutionPreamble()

#### getEscapeChars

    protected char[] getEscapeChars(boolean includeSingleQuote,
                                    boolean includeDoubleQuote)

#### isDoubleQuotedArgumentEscaped

    protected boolean isDoubleQuotedArgumentEscaped()

#### isSingleQuotedArgumentEscaped

    protected boolean isSingleQuotedArgumentEscaped()

#### isDoubleQuotedExecutableEscaped

    protected boolean isDoubleQuotedExecutableEscaped()

#### isSingleQuotedExecutableEscaped

    protected boolean isSingleQuotedExecutableEscaped()

#### setArgumentQuoteDelimiter

    protected void setArgumentQuoteDelimiter(char argQuoteDelimiter)

#### getArgumentQuoteDelimiter

    protected char getArgumentQuoteDelimiter()

#### setExecutableQuoteDelimiter

    protected void setExecutableQuoteDelimiter(char exeQuoteDelimiter)

#### getExecutableQuoteDelimiter

    protected char getExecutableQuoteDelimiter()

#### setArgumentEscapePattern

    protected void setArgumentEscapePattern(String argumentEscapePattern)

#### getArgumentEscapePattern

    protected String getArgumentEscapePattern()

#### getShellCommandLine

    public List<String> getShellCommandLine(String[] arguments)

Get the full command line to execute, including shell command, shell arguments, executable and executable arguments

Parameters:
  `arguments` - arguments for the executable, not the shell
Returns:
  List of String objects, whose array version is suitable to be used as argument of Runtime.getRuntime().exec()

#### getShellArgsList

    public List<String> getShellArgsList()

#### addShellArg

    public void addShellArg(String arg)

#### setQuotedArgumentsEnabled

    public void setQuotedArgumentsEnabled(boolean quotedArgumentsEnabled)

#### isQuotedArgumentsEnabled

    public boolean isQuotedArgumentsEnabled()

#### setQuotedExecutableEnabled

    public void setQuotedExecutableEnabled(boolean quotedExecutableEnabled)

#### isQuotedExecutableEnabled

    public boolean isQuotedExecutableEnabled()

#### setExecutable

    public void setExecutable(String executable)

Sets the executable to run.

#### getExecutable

    public String getExecutable()

#### setWorkingDirectory

    public void setWorkingDirectory(String path)

Sets execution directory.

#### setWorkingDirectory

    public void setWorkingDirectory(File workingDir)

Sets execution directory.

#### getWorkingDirectory

    public File getWorkingDirectory()

#### getWorkingDirectoryAsString

    public String getWorkingDirectoryAsString()

#### clearArguments

    public void clearArguments()

#### clone

    public Object clone()

Overrides:
  `clone` in class `Object`

#### getOriginalExecutable

    public String getOriginalExecutable()

#### getOriginalCommandLine

    public List<String> getOriginalCommandLine(String executable,
                                               String[] arguments)

#### setDoubleQuotedArgumentEscaped

    protected void setDoubleQuotedArgumentEscaped(boolean doubleQuotedArgumentEscaped)

#### setDoubleQuotedExecutableEscaped

    protected void setDoubleQuotedExecutableEscaped(boolean doubleQuotedExecutableEscaped)

#### setSingleQuotedArgumentEscaped

    protected void setSingleQuotedArgumentEscaped(boolean singleQuotedArgumentEscaped)

#### setSingleQuotedExecutableEscaped

    protected void setSingleQuotedExecutableEscaped(boolean singleQuotedExecutableEscaped)