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 subclases 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
      • 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 (eg. 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) (eg. /X /C for CMD.EXE)
        Parameters:
        shellArgs - the arguments to the shell
      • getShellArgs

        java.lang.String[] getShellArgs()
        Get the shell arguments
        Returns:
        The arguments
      • 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)