Linux/Unix in Windows

cygwin does everything you're looking for.


If you want lighter than a VM but more faithful behavior than cygwin, there's colinux.