I recently stumbled on an article on Lifehacker that suggested a way to learn Linux commands in-line with your daily systems administration. Basically, it calls for adding a string of commands to your .bashrc file that randomly selects a command from various bin directories and executes a whatis on them.
I thought it was brilliant, but when I went to try it I was bummed to find out that the shuf command is not shipped with the base distribution of CentOS, which is the primary OS I support. Because of this, I decided to spin my own version of the hack that will work on CentOS.
# RANDOM COMMAND-LINE KNOWLEDGE
# List of bin directories that include commands you'd like to learn
binDirs='/bin /usr/bin /usr/sbin /sbin'
# Count the number of commands in $binDirs and randomly select a number in the range
randomNum=$(expr $RANDOM % $(ls $binDirs | wc -l))
# Based on the selected $randNum, select the corresponding command
randomCmd=$(ls $binDirs | head -${randomNum} | tail -1)
# Lookup the command with whatis and display the results
echo "Did you know that:"
whatis $randomCmd | sed 's/^/\t/g'
The hack isn't perfect because not all commands have an entry in the whatis database. When this happens, you will see a response similar to this:
Did you know that:
numastat: nothing appropriate
But, this doesn't happen all that often, and with this hack, I've discovered some awesome commands like watch.
Did you know that:
watch (1) - execute a program periodically, showing output fullscreen
That is a great idea, I'm sure I will learn a lot that way (especially once I start logging into servers via SSH more than a couple of times per day).
ReplyDelete