Package 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 subclasses for shells that behave particularly, like

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

Since:
  1.2
Author:
  Carlos Sanchez

## Constructor Summary

Constructors
Constructor
Description
`Shell()`

## Method Summary

Modifier and Type
Method
Description
`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()`
`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)`
`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)`
`void`
`setWorkingDirectory(String path)`

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

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

## Constructor Details

### Shell

public Shell()

## Method Details

### setUnconditionalQuoting

public void setUnconditionalQuoting(boolean unconditionallyQuote)
Toggle unconditional quoting

Parameters:
  `unconditionallyQuote` - see name

### setShellCommand

public void setShellCommand(String shellCommand)
Set the command to execute the shell (eg. COMMAND.COM, /bin/bash,...)

Parameters:
  `shellCommand` - see name

### getShellCommand

public String getShellCommand()
Get the command to execute the shell

Returns:
  the command

### 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` - see name

### getShellArgs

public String[] getShellArgs()

Returns:
  the shell arguments

### 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)

Parameters:
  `executable` - Sets the executable to run.

### getExecutable

public String getExecutable()

### setWorkingDirectory

public void setWorkingDirectory(String path)

Parameters:
  `path` - Sets execution directory.

### setWorkingDirectory

public void setWorkingDirectory(File workingDir)

Parameters:
  `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)