Class Shell

  • All Implemented Interfaces:
    java.lang.Cloneable
    Direct Known Subclasses:
    BourneShell, CmdShell, CommandShell

    public class Shell
    extends java.lang.Object
    implements java.lang.Cloneable
    Class that abstracts the Shell functionality, with subclasses for shells that behave particularly, like
    • command.com
    • cmd.exe
    • Field Detail

      • DEFAULT_QUOTING_TRIGGER_CHARS

        private static final char[] DEFAULT_QUOTING_TRIGGER_CHARS
      • shellCommand

        private java.lang.String shellCommand
      • shellArgs

        private final java.util.List<java.lang.String> shellArgs
      • quotedArgumentsEnabled

        private boolean quotedArgumentsEnabled
      • unconditionalQuoting

        private boolean unconditionalQuoting
      • executable

        private java.lang.String executable
      • workingDir

        private java.lang.String workingDir
      • quotedExecutableEnabled

        private boolean quotedExecutableEnabled
      • singleQuotedArgumentEscaped

        private boolean singleQuotedArgumentEscaped
      • singleQuotedExecutableEscaped

        private boolean singleQuotedExecutableEscaped
      • argQuoteDelimiter

        private char argQuoteDelimiter
      • exeQuoteDelimiter

        private char exeQuoteDelimiter
    • Constructor Detail

      • Shell

        public Shell()
    • Method Detail

      • setShellCommand

        void setShellCommand​(java.lang.String shellCommand)
        Set the command to execute the shell (e.g. COMMAND.COM, /bin/bash,...).
        Parameters:
        shellCommand - the command
      • getShellCommand

        java.lang.String getShellCommand()
        Get the command to execute the shell.
        Returns:
        the command
      • setShellArgs

        void setShellArgs​(java.lang.String[] shellArgs)
        Set the shell arguments when calling a command line (not the executable arguments) (e.g. /X /C for CMD.EXE).
        Parameters:
        shellArgs - the arguments to the shell
      • getShellArgs

        java.lang.String[] getShellArgs()
        Get the shell arguments
        Returns:
        the arguments
      • quoteOneItem

        protected java.lang.String quoteOneItem​(java.lang.String inputString,
                                                boolean isExecutable)
      • getCommandLine

        java.util.List<java.lang.String> getCommandLine​(java.lang.String executableParameter,
                                                        java.lang.String... argumentsParameter)
        Get the command line for the provided executable and arguments in this shell
        Parameters:
        executableParameter - executable that the shell has to call
        argumentsParameter - arguments for the executable, not the shell
        Returns:
        list with one String object with executable and arguments quoted as needed
      • getRawCommandLine

        java.util.List<java.lang.String> getRawCommandLine​(java.lang.String executableParameter,
                                                           java.lang.String... argumentsParameter)
        Parameters:
        executableParameter - Executable
        argumentsParameter - the arguments for the executable
        Returns:
        the list on command line
      • getQuotingTriggerChars

        char[] getQuotingTriggerChars()
      • getExecutionPreamble

        java.lang.String getExecutionPreamble()
      • getEscapeChars

        char[] getEscapeChars​(boolean includeSingleQuote,
                              boolean includeDoubleQuote)
      • isDoubleQuotedArgumentEscaped

        protected boolean isDoubleQuotedArgumentEscaped()
        Returns:
        false in all cases
      • isDoubleQuotedExecutableEscaped

        boolean isDoubleQuotedExecutableEscaped()
      • isSingleQuotedExecutableEscaped

        boolean isSingleQuotedExecutableEscaped()
      • setArgumentQuoteDelimiter

        void setArgumentQuoteDelimiter​(char argQuoteDelimiterParameter)
        Parameters:
        argQuoteDelimiterParameter - argQuoteDelimiter
      • getArgumentQuoteDelimiter

        char getArgumentQuoteDelimiter()
      • setExecutableQuoteDelimiter

        void setExecutableQuoteDelimiter​(char exeQuoteDelimiterParameter)
        Parameters:
        exeQuoteDelimiterParameter - exeQuoteDelimiter
      • getExecutableQuoteDelimiter

        char getExecutableQuoteDelimiter()
      • getShellCommandLine

        public java.util.List<java.lang.String> getShellCommandLine​(java.lang.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

        java.util.List<java.lang.String> getShellArgsList()
      • setQuotedArgumentsEnabled

        public void setQuotedArgumentsEnabled​(boolean quotedArgumentsEnabled)
        Parameters:
        quotedArgumentsEnabled - quotedArgumentsEnabled
      • isQuotedArgumentsEnabled

        boolean isQuotedArgumentsEnabled()
      • setQuotedExecutableEnabled

        void setQuotedExecutableEnabled​(boolean quotedExecutableEnabled)
      • isQuotedExecutableEnabled

        boolean isQuotedExecutableEnabled()
      • setExecutable

        public void setExecutable​(java.lang.String executable)
        Sets the executable to run.
        Parameters:
        executable - The executable.
      • getExecutable

        public java.lang.String getExecutable()
        Returns:
        The executable.
      • setWorkingDirectory

        public void setWorkingDirectory​(java.lang.String path)
        Sets execution directory.
        Parameters:
        path - The path which should be used as working directory.
      • setWorkingDirectory

        public void setWorkingDirectory​(java.io.File workingDirectory)
        Sets execution directory.
        Parameters:
        workingDirectory - the working directory
      • getWorkingDirectory

        public java.io.File getWorkingDirectory()
        Returns:
        the working directory
      • getWorkingDirectoryAsString

        java.lang.String getWorkingDirectoryAsString()
      • clone

        public java.lang.Object clone()
        Overrides:
        clone in class java.lang.Object
      • setSingleQuotedArgumentEscaped

        void setSingleQuotedArgumentEscaped​(boolean singleQuotedArgumentEscaped)
      • setSingleQuotedExecutableEscaped

        void setSingleQuotedExecutableEscaped​(boolean singleQuotedExecutableEscaped)
      • isUnconditionalQuoting

        public boolean isUnconditionalQuoting()
      • setUnconditionalQuoting

        public void setUnconditionalQuoting​(boolean unconditionalQuoting)