@@ -0,0 +1,1918 @@
+import java.io.InputStream;%0Aimport java.io.OutputStream;%0Aimport java.io.PrintStream;%0Aimport java.io.PrintWriter;%0Aimport java.util.Scanner;%0A%0A/**%0A * Created by David on 13/03/2017.%0A */%0A%0A/**%0A * Cette classe repr%C3%A9sente un Bash en Java%0A */%0Apublic class Bash %7B%0A    /**%0A     * M%C3%A9thode qui permet de lancer une r%C3%A9plique d'un bash%0A     * @param err : Repr%C3%A9sente le flux d'erreur sur lequel rediriger la sortie d'erreur du Bash courant%0A     * @param out :  Repr%C3%A9sente le flux de sortie standard sur lequel rediriger la sortie standard du Bash courant%0A     */%0A    public static void start(InputStream in, PrintStream err, PrintStream out) %7B%0A        String%5B%5D cmd = new String%5B2%5D;%0A%0A        // On s'adapte en fonction de l'OS sur lequel on tourne%0A        if(Utils.runningOnWindowsOS()) cmd%5B0%5D = %22cmd%22;%0A        else cmd%5B0%5D = %22/bin/bash%22;%0A        cmd%5B1%5D = %22%22;%0A%0A        Process p;%0A%0A        try %7B%0A            // Ex%C3%A9cution du process de Bash/Cmd/Terminal%0A            p = Runtime.getRuntime().exec(cmd);%0A%0A            // Redirection de la sortie d'erreur et de la sortie standard%0A            new Thread(new Pipe(p.getErrorStream(),err)).start();%0A            new Thread(new Pipe(p.getInputStream(),out)).start();%0A%0A            String task ;%0A            Scanner sc = new Scanner(in);%0A%0A            PrintWriter stdin = new PrintWriter(p.getOutputStream());%0A%0A            while((task = sc.nextLine()) != null) %7B%0A                // Si on %C3%A9crit %22stop%22, le Bash s'arr%C3%AAte%0A                if(task.equals(%22stop%22)) break;%0A                stdin.println(task);%0A                // Le flush permet de forcer le buffer %C3%A0 se vider, et par cons%C3%A9quent de forcer l'envoi de la cha%C3%AEne %22task%22 directement quand cette instruction est atteinte%0A                stdin.flush();%0A            %7D%0A            stdin.close();%0A        %7Dcatch (Exception e) %7B%0A            err.println(%22Erreur pendant l'execution du bash :%22);%0A            e.printStackTrace(err);%0A        %7D%0A    %7D%0A%7D%0A

Create Bash.java