Just came across this guide to designing command-line interfaces. Looks like good advice for making sure your programs are good CLI citizens, with plenty of practical examples.