Quello che chiedi non è difficile se si sa programmare,
ma è abbastanza lungo e tedioso da realizzare.
Se poi vuoi anche aggiungerci un prompt che lampeggia e un tot di simpaticherie acherose, si va di ajax e l'effetto può essere anche carino, ma i tempi e i costi in termini di tempo si allungano.
Un bell'esempio potrebbe essere:
http://goosh.org/
In generale per fare cd, ls, dir, cat e wtf ti devi reimplementare il concetto di working directory (directory attuale) da zero. Non puoi usare quella degli script php che fai girare, perchè anche se fai chdir() in una pagina caricata nella prossima che carichi, con il prossimo comando, lo "stato" del processo viene resettato.
In pratica ogni volta che carichi una pagina, ad ogni POST ed ogni GET che fai, è come se fosse un processo nuovo, uno diverso da quello che ti ha spedito la pagina precedente, a risponderti. Uno che parte da capo, ignorando i tuoi "cd" precedenti.
E' il modo in cui funziona CGI da una ventina di anni, e perlopiù ci va bene.
Quello che ti serve è usare qualcosa che si conservi tra una pagina e l'altra, e metterci dentro il nome della tua working directory: ad esempio una sessione.