add unit test
change dir to opendir
fix show_ls