Maybe not, but mine definitely have been.

Doubt this is a popular opinion but I’ve recently come to realization that while seemingly making me more productive, my shell aliases have the potential of making me dumb.

Don’t get me wrong, I’m still a big fan of shell aliases, but I’m also on a quest to be more capable on the command-line. I’ve found that how I alias some things has become a detriment to my desire to up my CLI IQ.

If you’ve perused my dotfiles, you’ve probably noticed that there’s an overabundance of git related shell aliases in the mix. A lot of that stems from using Oh My ZSH! (OMZ) back in the day, specifically the git plugin which carried over when I switched to Antigen. My since abandoned approach to typing less has also contributed heavily.

These aliases are amazing and solve a lot of problems for me, but they’ve put me in a situation where, when asked how to do XYZ with git, I usually don’t know the answer and say something along the lines of:

I dunno, pretty sure my aliases take care of that, check my dotfiles, lol.

Great that my aliases solve problems, but terrible that I can’t function completely without them. It’s bad enough when I have to drive and the person hasn’t remapped CAPSLOCK to CTRL or ESC. Talk about rage face.

Your aliases should improve conditions, but not necessarily leave you a bumbling fool if / when you need to help another person or even hop on their computer or when they ask you how to do something.

After making this staunch realization that I’ve been lowing my CLI IQ while seemingly improving my command-line quality of life (CLI QOL) I decided that I should probably take a look at my aliases and make sure I know exactly what’s going on with everything.

What I came to realize is not only did I not know how to do certain things without the crutch of my shell aliases, I also wasn’t even sure what the hell some of the stuff in my aliases was doing.

Case in point, I noticed that all of my git-commit aliases were passing the -v flag. At a glance it probably wasn’t shorthand for --version and was probably the shorthand for --verbose. All well and good, but why? What value was it adding?

Pretty sure this wasn’t even something a forgot and was something that I never knew to begin with because I had lifted it from the OMZ git plugin. This part of why I had dropped OMZ and why I encourage the cherry picking of things versus just bringing in all of my dotfiles

After a bit of man page digging, I not only confirmed that -v was in fact shorthand for --verbose and the value add was that it is the reason my editor shows the files changed and the diff when I go to commit.

I also learned that there was also an associated git-config variable named commit.verbose that I could use instead. Now my .gitconfig has another line, all of my git-commit aliases are a bit shorter and I’m just a little more knowledgeable about git.

Now that’s not to say that I think all aliases are bad news. There are times when you can improve your CLI QOL while not taking an IQ hit.

One of my favorites, that has saved my ass at least a few times are my aliases to set interactive mode (-i / --interactive) on some commands that are destructive to files, like copy, move and remove.

The added benefit of always running interactive mode is that when I futz something up, like getting too aggressive with a rm, I’m prompted and have to confirm if I really want to do something stupid.

Sure these aliases still bury a bit of working knowledge, once that info gets overwritten in my brain, but also provides a safety mechanism which I’m okay to sacrifice a couple IQ points for.

Another would be aliases that add some visual sugar, like adding --color to grep. While nice to have, they are pretty trivial enhancements that I can live without if I were logged into a server that didn’t have my aliases.

I’m still working to find the right balance of helpful aliases that aren’t leaving me at a detriment in regard to my know-how.

All just part of my process of trying to improve my productivity and working conditions.