I freely admit that my first IT crush was Unix. That esoteric interface with the deeply geeky language still makes me feel all warm inside. From the moment I encountered it I was hooked. Those who knew Unix seemed to have fingers that flew across the keyboard like a Lamborghini, even the ones who weren’t touch typists. They were also highly vocal in their derision of the Windows GUI and Novell crowd. The answer was clear: Real Men Used Unix. The people who knew it seemed to be members of a secret society and I wanted in. Especially because I was a chick and wanted to prove I could be as good as any guy in IT. The pain I went through to become proficient in this difficult skill sometimes felt like rebirth. I was the Karate Kid and my Mr. Miyagi was a hard-drinking, politically incorrect, ex-Pentagon systems guy who taught me skills by providing only small snippets of information, then watching me struggle to figure things out. Whenever I became a little too cocky or even totally disheartened, he used to quote his former mentor. “Sometimes Unix is like a mountain and sometimes it’s like a hill.” In the end I’m grateful to him and all those who continue to inform my understanding of that operating system. I also have a small altar to Kernighan and Richie, but I’ll save that for another blog post.
So why do I think network engineers should learn Unix? And I mean really LEARN Unix, not just a few commands. Because it will make you better at your job and (dare I say) your life. I frequently encounter the new generation of network and security people at the EDU where I work and notice how intimidated many of them are by the command line. Not just Unix, but also Junos, IOS, Nokia IPSO clish, or Checkpoint’s Secure Platform. It’s weird, because it seems like just a few years ago, everyone used PINE as an email reader and had an account on the big Solaris campus shell server, which I managed at the university . It was great, because that system was a central hub for exchanging information, hosting home pages, sharing files, and just playing around to experiment with programming. It takes a certain amount of patience and persistence to use Unix or any command line and I’m finding that those who don’t develop this comfort with blinking letters on the screen aren’t very good troubleshooters or problem solvers. By the way, lots of really cool network administration and security tools run on Unix and if you know how to use it, you won’t be totally dependent on the sysadmin team.
If I’ve started to pique your interest, but you’re feeling overwhelmed by how to start, let me give you a few pointers. There are different “flavors” of Unix. They’re frequently called distros and include open source linux versions such as Debian, Ubuntu, Red Hat, or CentOS. Then there are the BSD variants such as Free, Net, and Open. Finally, there are commercial versions such as Solaris, Irix, HP-UX, and IBM AIX. Don’t panic. They’re a little like different religious sects. I learned Unix on Solaris, which is like being a flagellant in a strict Christian monastery. The base install didn’t include Perl or any other unnecessary extras, so you had to do everything manually and the documentation was painful to slog through. But I have to admit that it’s still my distro of choice, probably because I grew up with it or maybe because I have Stockholm Syndrome. My second choice is still BSD, because of its Zen-like simplicity. It’s the sound of one hand clapping. I continue to have a love-hate relationship with Linux, because of the way the developers try to make it “easier” for you. The first time I used Ubuntu and it asked me if I meant one of these *other* commands when I mistyped something, I almost fell out of my chair. You never know what’s coming or where some config file will be hiding, but I guess that’s the fun. Sometimes it’s perfect like the Sistine Chapel ceiling and other times it’s like that painting of dogs playing poker; an utterly crazy mess. But once you gain some mastery with one distro, there’s a confidence you’ll gain that is powerful and armors you against the challenge of ALL command lines. Do I complain when I use Red Hat with their ridiculous licensing scheme and patching method? Sure, but I still know how to find what I need, because I’ve gone through it before with other distros.
Next, do yourself a favor and read up on the Filesystem Hierarchy Standard found here: http://www.pathname.com/fhs/ . Believe it or not, there actually *is* a method to the directory structure in Unix and it’s pretty well documented. By understanding this, you’ll know how to find things and you won’t piss off a Unix admin by putting files in strange places. Mrs. Y’s main pet peeve: people who put files in the root filesystem. You can hear my banshee scream over this faux pas for miles.
Finally, Unix admins are your friends. Even though I’m not on the Systems team anymore, I genuflect profusely when I encounter any Unix rock star. They’re the royalty of regex who dream in “for” loops and argue about the command with the fewest number of keystrokes. If you can get past the Mountain Dew-stained Anime t-shirt and the stench of superiority (sometimes well-earned), you might find a good ally in your fight against the ITIL zombies trying to dumb down the enterprise. After making the appropriate offering of candy or caffeine, you’ll probably get the answer you need and lots more.
P.S. Oh, and get used to using “man”. Once you go through enough man pages, you realize that the stuff at the bottom is the best part. That’s where you’ll find usage examples or a list of related commands. Who needs Google when you can search all the man pages by keyword with “man -k” or “apropos”?