Teach your Skills to learn new Skills

I’ve spent several weeks out and about teaching Linux basics to a wide variety of people. Some had an IT background others did not. This alone makes feedback and questions interesting. Different people ask very different questions making even the most basic Linux training a great learning opportunity for me as a trainer.

Having almost two decades of Linux usage under my belt it’s easy to think that I’ve seen it all. Truth is that I’ve seen only those bits that I needed to get the job done. So there are still some commands I never heard about. Take dir for example. Not in a million years I would have even considered using this command to list directory contents. It’s a DOS command and I’m not keen on those. For me it has always been ls and nothing else.

One of my students used dir and I was wondering at first if he just set an alias. Turns out the command is actually part of the coreutils collection. Even more interesting is the fact that dir works a little different then ls. The original idea of ls is to display a line for each object found. This can clearly be seen when you reroute the Std-Out to a file:

root@training:~# ls / > ~/lsout
root@training:~# cat ~/lsout
bin
boot
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var

You might notice that this looks different from the output ls produces in the interactive command prompt. The reason is that devs decided to use the horizontal space rather then make you scroll forever showing mostly dead space.

dir on the other hand creates the exact same column output you know from the command prompt:

root@training:~# dir / > ~/dirout
root@training:~# cat ~/dirout
bin   dev  home  lib64       media  opt   root  sbin  sys  usr
boot  etc  lib   lost+found  mnt    proc  run   srv   tmp  var

If you write shell scripts, the latter option might not be very useful for you.

Obviously this is just a small example that seems almost insignificant. But that’s my point. It’s something you would probably not think about.

By teaching Linux fundamentals these small gaps in my own knowledge come to light. Useful options of well known commands that I’ve used a million times. Configuration options I didn’t think about. New tools I’ve never heard about before. Or even a quick refresh of long forgotten things that I don’t use often. Sometimes I’m even forced to come up with a quick shell script of sorts to test something. Some of these end up in my “useful toolbox” for later use.

No matter what it is you do, chances are you don’t know everything. Teaching is a great way to find those gaps and fill them.

Never stop learning and stay curious.