The programs here are potentially dangerous. Test them in a mostly empty directory to make it difficult to accidentally delete something useful.
See Appendix A for answers to the following exercises:
 Write a program to ask the user for a directory name and change to that directory. If the user enters a line with nothing but whitespace, change to his or her home directory as a default. After changing, list the ordinary directory contents (not the items whose names begin with a dot) in alphabetical order. (Hint: Will that be easier to do with a directory handle or with a glob?) If the directory change doesn't succeed, alert the user but don't try show the contents.
 Modify the program to include all files and not just the ones that don't begin with a dot.
 If you used a directory handle for the previous exercise, rewrite it to use a glob. If you used a glob, try it now with a directory handle.
 Write a program that works like rm, deleting any files named on the command line. (You don't need to handle any of the options of rm.)
 Write a program that works like mv, renaming the first command-line argument to the second command-line argument. (You don't need to handle any of the options of mv or additional arguments.) Allow for the destination to be a directory; if it is, use the same original basename in the new directory.
 If your operating system supports it, write a program that works like ln, making a hard link from the first command-line argument to the second. (You don't need to handle options of ln or more arguments.) If your system doesn't have hard links, print out a message telling what operation you would perform if it were available. Hint: This program has something in common with the previous one and recognizing that could save you time in coding.
 If your operating system supports it, fix up the program from the previous exercise to allow an optional -s switch before the other arguments to indicate you want to make a soft link instead of a hard link. (Even if you don't have hard links, see whether you can at least make soft links with this program.)
 If your operating system supports it, write a program to find any symbolic links in the current directory and print out their values (like ls -l would: name -> value).