DESARROLLO DE UN INTERPRETE DE COMANDO (interacción con el Disco C y D)

Cómo desarrollarlo con estos siguientes mandatos internos:

1. cd-cambia el directorio actual a . Si el argumento no aparece, devuelve el directorio actual. Si el directorio no existe se debe de proporcionar un mensaje de error apropiado. Este mandato debe modificar también la variable de entorno PWD
2. crl - limpia la pantalla
3. dir - lista el contenido de
4. environ - muestra todas las variables de entorno
5. echo - muestra en la pantalla seguido de una nueva linea (espacios multiples o tabuladores se reducen a un espacio sencillo)
6. help - muestra el manual de usuario usando filtro more.
7. pause - detiene la ejecución del interprete de mandatos hasta que se pulse "intro".
8. quit - sale del interprete de mandatos.
9. el entorno del interprete de mandatos debe contener shell=/myshell donde /myshell es la ruta completa al ejecutable del interprete de mandatos
10. debe soportar la ejecucion de mandatos en segundo plano (background). Un signo & al final de la línea de mandatos indica que el intérprete debe devolver un prompt al usuario, inmediatamente después de haber lanzado el programa.
11. el intérprete de mandatos debe ser capaz de leer redireccion de stdin y/o stdout.
etc... Bueno es un proyecto del libro de SISTEMAS OPERATIVOS de W. Stallings (pág. 154).
Agradeceré me ayuden, lo he estado intentando con java /netbeans 8.0, y no puedo completar con todos los requerimientos del proyecto, sobre todo cuando debo interactuar con el Disco C, para que me muestre todo su directorio. Me han aconsejado que lo haga en linux o C++, pero no se casi nada de esos lenguajes.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Ideas: 01. Mantienes una

Ideas:

01. Mantienes una variable para saber en que directorio estas
02. Podrías escribir 20 ( o N ) retornos de carro \n
03. File.listFiles();
04. System.getenv();
05. System.out.println();
06. Escribes a la pantalla N lineas, y lees la entrada del usuario, si es ENTER escribes una linea más, si es SPACE escribes N lineas más.
El manual del usuario lo debes definir tu, por ejemplo para Windows no existe tal cosa
07. Lees la entrada del usuario y no haces nada hasta que pulse ENTER
08. System.exit()
09. Imprimes el valor de la variable que tienes en el paso 1.
10. Lees la línea y si tiene un & lanzas un nuevo hilo con el comando requerido (incluso podrías lanzar el programa main de nuevo )
11. Si tiene   o   lees un descriptor diferente, java tiene System.in y System.err y si tienes redirecci'on de stdout cambias System.out

Para interactuar con el disco C y mostrar todo su contenido haces lo mismo que en 03 pasandole C://

Suerte

Imagen de melina

Oscar muchas gracias por tu

Oscar muchas gracias por tu ayuda, has despejado algunas de mis dudas, y me has dado algunas ideas de como terminar el proyecto.