This page does not represent the most current semester of this course; it is present merely as an archive.

This is a place to record various command-line tricks and options I use in class. Due to a series of mis-translations involving 功夫 and Hollywood stereotypes, the “magic you can do on the command line” is traditionally called command-fu, command-line fu, script-fu, etc.

  • clear scrolls so the next line is the top line of the terminal window. It does not remove anything, just scrolls.

  • cat hello.c dumps the contents of hello.c to the terminal window.

  • clang -S hello.c the -S flag means “I want an assembly file, not a program” and generates hello.s instead of a.out.

    Note the -S is capital; a lower-case -s means “strip” – i.e., remove all symbol table information from the binary (making it hard to link with other files and harder to debug, but making the file smaller.

  • cpp hello.c runs the C pre-processor on hello.c, outputting the resulting .c file to the terminal

  • cpp hello.c | less runs the C pre-processor on hello.c, outputting the resulting .c file into the less program so we can scan through it.

  • clang -c hello.c the -c flag means “I want an object file, not a program” (i.e., stop before linking) and generates hello.o instead of a.out.

  • clang hello.c -o hello the -o flag means “name the output this instead of the default name” and generates hello instead of a.out.

    Warning: if you do something like -o hello.c is over-writes your source code with the executable. Use -o with care.

  • whatis printf or man -f printf lists the all of the manual pages that are titled “printf

  • apropos printf or man -k printf searches for manual pages that reference “printf

  • which clang shows the full path to the executable that will be run if you type clang