I love the command line. It used to be scary. I didn’t know what it did. It was only until I started learning Python that I realized what the command line really was. It is a conduit to interact with my system on a new level. It gives me more control over what I’m doing on my computer. For some reason, when I use the command line, I quite excited. I like learning about new commands.
I have been building a number of tools for the command line lately. At first, there was the Garfield CLI. I have not used it since but it was an interesting project. I then built the sourcehut uploader. I’m pleased to say that I have finally finished the uploader project. It sits on a virtual VPS hosted on Digital Ocean and will mirror all my code to sourcehut every month. It did not take long to set up. It was just a bit hectic.
What intrigues me about building for the command line is that everything is text-based. There’s no visuals to distract me. It is just me and the computer, having a conversation. I do not feel this way when I use the desktop environment on my Mac. I feel somewhat restricted. Every feature has been planned by an engineer. Some features are hidden; only those that have been chosen are visible to me.
Working with Plain Text
I like working with plain text. I have recently been moving more of my computer operations away from verbose programs. I no longer use a calendar application. I am considering moving to a command line calendar solution. I don’t much care for the bloat that is inherent in so much modern software. It should not take me ten or twenty seconds to open up an application. I’m looking for speed.
The command line gives me that speed. When I execute a command like changing directories, the response is instantaneous. It’s not just response times that matter (especially because not all commands run at this speed). It is the fact that navigating around a command line only involves the keyboard. When I need to go to a folder, I can do it in one command.
Plain text is all that I really need from a computer in most cases. My programs, at their core, are all written in plain text. Plain text is quick. It’s efficient. Importantly, it is universal. When I store my files in plain text, I know that I’ll be able to read them further down the line. What happens if Microsoft releases an update to Word that makes some of your old documents unreadable? I know that I’ll always have a text copy of my files.
My morning mantra used to be on a web page. Now I have a local copy. I’m comfortable opening it from the command line. I’ve even considered setting up my own alias for it: mm.
That brings me to the second reason why I love command lines: they’re so customizable. Almost every piece of software that I use has been designed by someone other than me. They have made the design decisions. That’s fine. I am not going to build everything I need from the ground up. When it comes to interacting with my operating system, I like to have as much control as possible. The command line gives me that.
I’ve started to add a few aliases to my zsh configuration. One alias, vvv, sets up a virtual environment in Python. Another alias creates and initializes a git repository with a license, README, and task list from a Python script that I have built. That alias is called creategit. Now, whenever I use the command line, I can call on those aliases. vvv is a new one but I have already used it. I’m in love. I have turned three long-ish commands into three letters. Amazing.
I have had trouble in the past configuring my terminal to the way I would like it. My terminal is the way it is right now because I got confused with Oh My Zsh and I haven’t revisited it yet. I’ll go back to it, perhaps later today. That does not mean that I feel restricted. The terminal itself may have been difficult to set up the way I want it but its features give me everything I need. I can read and open files so quickly. I can build software more easily.
The Grain of the Command Line
I’ve been using the command line for years and it is only now that I feel like I am learning the grain of the command line. I am building my own command line scripts. I recently built a script that shows me the Jargon of the Day from jargon.net on my command line every time I open a shell. I am not sure what gave me the idea. It’s not really a complex script. I just thought it would be cool and so I built it. I am already learning from the Jargon!
I am by no means a command line expert. I still use a lot of graphical software in my day-to-day. At work, I need to use it almost all the time. I’m looking for more ways to get into the command line. I am going to give the a command line application a go and see what happens.
My knowledge of the command line prepares me for any system that I use. The commands I learned on my Mac have largely ported over to Linux. Experimenting with new commands makes me better at managing my servers. It’s a long haul. My aim in all of this is to feel a bit more comfortable talking with my computer through text. It makes me feel more powerful being able to execute commands because I know that the system is not going to resist (other than if I have not used sudo where appropriate!).
The wc command says this article is 1001 words. I just thought you should know! I’m never usually that close to exactly 1,000.