I just implemented a small shell in 29 lines of Python that has support for redirects:
text $ ./minishell.py ~~?~~> echo hello hello ~~0~~> wc -l minishell.py 29 minishell.py ~~0~~> wc -l <minishell.py >report.txt ~~0~~> cat report.txt 29