/**Perhaps the easiest technique for implementing a shell interface is to have the program first read what the user enters on the command line (here, cat Prog.java) and then have the program create a separate external process that performs the command. You can create the separate process using the code provided below:**/

import java.io.*;

public class AProcess
{
	public static void main(String[] args) throws IOException {
		if (args.length != 1) {
			System.err.println("Usage: java OSProcess <command>");
			System.exit(0);
		}

		// args[0] is the command
		ProcessBuilder pb = new ProcessBuilder(args[0]);
		Process process = pb.start();

		// obtain the input and output streams
		InputStream is = process.getInputStream();
		InputStreamReader isr = new InputStreamReader(is);
		BufferedReader br = new BufferedReader(isr);

		String line;
		while ( (line = br.readLine()) != null)
			System.out.println(line);

		br.close();
	}
}


/**The following code contains the basic operations of a command-line shell. The main() method presents the prompt ‘prompt>’ and waits to read input from the user. The program is terminated when the user enters <Control><C>.**/


import java.io.*;

public class ABasicShell
{
	public static void main(String[] args) throws java.io.IOException {
		String commandLine;
		BufferedReader console = new BufferedReader(new InputStreamReader(System.in));

		// we break out with <control><C>
		while (true) {
			// read what they entered
			System.out.print("prompt>");
			commandLine = console.readLine();

			// if they entered a return, just loop again
			if (commandLine.equals(""))
				continue;

			/**
			  The basic steps are:
			  (1) parse the input to obtain the command
			      and any parameters
			  (2) create a ProcessBuilder object
			  (3) start the process
			  (4) obtain the output stream
			  (5) output the contents returned by the command
			 */
	 	}
	}
}
