KevCaz's Website

I have been using the command line for more than 10 years now, I started on MacOS1 and I increased my usage of the Terminal when I switched to Linux. I am now comfortable with the Linux command line but still looking for ways to improve my skills. Recently, I stumbled into no starch press that offers a great selection of books and found out that several are available at the library. That’s how I booked The Linux command line by William Shotts.

The book does a fantastic jobs explaining why and how to work with Linux command line. William Shotts gives to the reader just the right level of details to understand how the shell works and why it is so powerful. The first part “Learning the shell” introduces the most important commands. Here I am listing 1. a few topics that I am very glad I read more about and 2. the list of commands introduced in the book. I strongly recommend the reading of this book and if for any reason you cannot buy it or book it, note that the author maintains a website ( that includes most of the material covered in the book (with less details).

Below is a list of five topics that reading about have already been beneficial. Note that this list is personal, all the 10 first chapters cover important topics and the way material is presented is very didactic.

The following table2 includes commands that are introduced in the first part (except du and shuf that I added my-self). Note that there are bash commands and if you use a different shell (e.g. zsh) some commands may be missing (there are likely equivalent commands available). Options presented in the table are the ones that are either presented in the book, or options that I think are the most important ones (meaning the one you are ore likely to use). The command ‘Usage’ indicates how frequently I use a given command: one star means daily, 2 means weekly and 3 means every now and then. Last, Category is my attempt to categorize the commands, in the book commands are introduced in different chapters, which makes it clear in what context you are expected to use them.

dateprint or set the system date and time-udate⭐ ⭐
caldisplays a calendar-j, -3date
filedetermine file typeinform⭐ ⭐ ⭐
manan interface to the system reference manualsinform⭐ ⭐ ⭐
whichlocate a commandinform⭐ ⭐
typedisplay information about command typeinform
helpdisplay information about builtin commandsinform
apropossearch the manual page names and descriptionsinform
inforead Info documentsinform
whatisdisplay one‐line manual page descriptionsinform
cpcopy files and directories-a, -r, -i, -u, -vmanage files⭐ ⭐ ⭐
mvmove (rename) files-i, -u, -vmanage files⭐ ⭐ ⭐
mkdircreate new directory-h, -mmanage files⭐ ⭐ ⭐
rmremove files or directories-i, -r, -f, -vqmanage files⭐ ⭐ ⭐
lnmake links between files-s, -r, -vmanage files
lessa pagermanipulate⭐ ⭐ ⭐
catconcatenate files and print on the standard output-nmanipulate⭐ ⭐ ⭐
wcprint newline, word, and byte counts for each file-c, -m, -l, -wmanipulate⭐ ⭐
headoutput the first part of files-nmanipulate⭐ ⭐
tailoutput the last part of files-nmanipulate⭐ ⭐
teeread from standard input and write to standard output and filesmanipulate⭐ ⭐
sortsort lines of text files-rmanipulate
uniqreport or omit repeated lines-c, -Dmanipulate
shufgenerate random permutations-rmanipulate
topdisplay Linux processesmonitor⭐ ⭐ ⭐
killsend a signal to a process-l, -INT, -9monitor⭐ ⭐ ⭐
shutdownhalt, power off or reboot the machine-r, -cmonitor⭐ ⭐ ⭐
duestimate file space usage-s, -hmonitor⭐ ⭐
jobsdisplay status of jobs.monitor⭐ ⭐
bgMove job to the backgroundmonitor⭐ ⭐
fgMove job to the foregroundmonitor⭐ ⭐
dfreport file system space usage-hmonitor
freedisplay amount of free and used memory in the system-hmonitor
killallkill processes by name-g, -imonitor
pwdprint name of current/working directorynavigate⭐ ⭐ ⭐
cdchange the shell working directorynavigate⭐ ⭐ ⭐
lslist directory contents-ls, -t, -h, --reversenavigate⭐ ⭐ ⭐
surun a command with substitute user and group ID-cpermission⭐ ⭐ ⭐
sudoexecute a command as another user-upermission⭐ ⭐ ⭐
chmodchange file mode bitspermission⭐ ⭐
chownchange file owner and grouppermission⭐ ⭐
idprint real and effective user and group IDs-u, -g, -Gpermission
umaskset file mode creation maskpermission
chgrpchange group ownershippermission
passwdchange user passwordpermission
grepprint lines that match patterns-e, -i, -fsearch⭐ ⭐ ⭐

  1. Back then, I jotted down some notes about my usage of the terminal↩︎

  2. Commands are stored in a yaml file and convert into the table displayed here via a R script↩︎