Two letter commands commonly found in Unix.

Unix has a reputation for having cryptic commands and syntax. Commands marked with * are not as common, or are not so standard (ie distributed with a typical system).Disclaimer - this is based on personal observation of unix systems, and is in no way definitive.

| ar(1) | archive tool | as(1) | assembler | at(1) | run commands AT a certain time | bc(1) | arbitrary precision calculator | cd(1)? | Change Directory (now a builtin) | cp(1) | copy | dc(1) | desk calculator | dd(1) | copy blocks between files/devices | df(1) | report Disk Free | du(1) | report Disk Usage | ed(1) | EDitor | gs(1) * | GhostScript (postscript interpreter) | gv(1) | GhostView (postscript viewer) (X based) | id(1) | prints user ID | ld(1) | linker | ln(1) | create symbolic !LiNks? | lp(1) | send file to (Line) Printer | ls(1) | !LiSt? directory | m4(1) * | m4 language processor | mt(1) | Magnetic Tape control | mv(1) | !MoVe? files | nm(1) | extract symbols from objects | od(1) | print Octal Dump of files | ps(1) | print Process Status | pr(1) | paginate input for PRinting | rm(1) | !ReMove? files | rn(1)? | Read News | sc(1)? * | Spreadsheet Calculator | sh(1) | SHell | sq(1) * | SQueeze a sorted list | su(1) | Switch User (or Super User) | tr(1) | TRanslate (swap) characters | vi(1) | VIsual Editor | wc(1) | Word Count

Since ls(1) is such an often-used and occasionally mistyped command, there's an amusing little program 'sl' which does an animated Steam Loco.. It comes with freeBSD but there's probably a Linux port if you're really interested. - zcat (sl is in debian. But if you're like me the novelty will wear off pretty quickly as you can't use your terminal for a few seconds until the Steam Locomotive has gone across it).

The following command will list all TwoLetterCommands on your system
find {,/usr}/{,s}bin -type f | grep "/..$"

It looks in /bin, /usr/bin, /sbin, /usr/sbin for all files which have two letters in their name. On my Debian Woody system there are a number of ones not listed above, which are mainly just improved tools: lc is an improved wc, gw is a gnome version of 'w' (so thats a OneLetterCommand? really... ;)

The above is wrong (or at least bad) in so many ways. It has a useless use of grep(1); find(1) can already match globs, so just tell it to look for -name '??'. It will recurse directories and find files not available for direct invocation (at least the GNU version of find(1) has -maxdepth which can be used to fix this). It will also find files without execution permission. The following is much more precise. --AristotlePagaltzis

find ${PATH//:/ } -type f -name '??' -maxdepth 1 -perm +o+x

  1. if you don't have a bash-ish shell you need an extra process:

find `echo $PATH | tr : ' '` -type f -name '??' -maxdepth 1 -perm +o+x