code: public String exec()
    {
      Writer stdOut = _stdOut != null ? _stdOut : new StringWriter();
      Writer stdErr = _stdErr != null ? _stdErr : new StdErrWriter( _inludeStdErrInOutput ? stdOut : new StringWriter() );
      handleCommand( stdOut, stdErr );
      flush( stdOut );
      flush( stdErr );
      return stdOut.toString();
    }
docs: <p>Executes the given command as if it had been executed from the command line of the host OS
  (cmd.exe on windows, /bin/sh on *nix) and returns all content sent to standard out as a string.  If the command
  finishes with a non zero return value, a {@link CommandFailedException} is thrown.</p>
  
  <p>Content sent to standard error by the command will be forwarded to standard error for this JVM.</p>
  
  <p>This method blocks on the execution of the command.</p>
  
  <p>
  <b>Example Usages:</b>
  <pre>
  var currentDir = Shell.exec( "dir" ) // windows
  var currentDir = Shell.exec( "ls" )  // *nix
  Shell.exec( "rm -rf " + directoryToNuke )
  </pre>
  </p>
  
  @return the content of standard out
  @throws CommandFailedException if the process finishes with a non-zero return value