Emotions Behind the Command Line

Please forgive a small digression, but behind everything a human creates, understands, and uses — even in the world of computers — there is always a quiet reflection of emotion.

Lately, discussions often appear suggesting that BSD is meant for “serious computer enthusiasts,” usually framed as a drawback — because it is not especially friendly to GUI-oriented users, because it requires more attention, more understanding. Perhaps, however, it is worth pausing for a moment to ask what that actually means.

For many computer enthusiasts, especially those whose first encounters with computers happened in the early 1980s, the absence of a graphical interface was never a limitation. On the contrary, the earliest interactions with a machine were quiet and minimal — often reduced to a blinking cursor and a few kilobytes of memory. And yet, that simplicity carried a sense of wonder. The command line was not a barrier, but a direct and honest conversation with the system.

There is also a deep sense of respect — and, admittedly, a quiet admiration — for those who witnessed this world even earlier. For the generations who were already present in the 1960s and 1970s, when the foundations of Unix were being formed, and for those who worked with large systems where computing filled entire rooms and every instruction carried real weight. That continuity — from early concepts, through large centralized systems, to modern Unix-like environments — shaped a mindset built on patience, discipline, and respect for the system as a whole. Perhaps that spirit is still felt today in the BSD world.

One of the reasons the command line brings such quiet satisfaction lies in understanding. In the awareness of how much real work, how much carefully written code and deliberate design is required for something as simple as transferring a single byte from the keyboard into another part of memory — under the right conditions, in the right context, with clear guarantees. Once someone has experienced this, the system is no longer abstract. It becomes tangible.

At that point, the CLI stops being a “minimal interface” and becomes a window into the inner life of the machine.

This is why BSD is often perceived not as a product, but as a long-term, patient process. A system that evolves carefully, without haste, guided by clear principles. In FreeBSD, freedom is not chaos — it is freedom that is carefully and deliberately organized, allowing the user to understand, to learn, and to trust the system they are working with.

This is not a rejection of progress. On the contrary, we live in a time when even artificial intelligence is readily available at the keyboard — something earlier generations could hardly imagine. Yet that contrast itself reminds us of the value of understanding the path that led here.

The command line is not for everyone. And it does not need to be.
But for those who find meaning in it, it is not an absence of comfort — it is the quiet satisfaction that comes from understanding.



 
Your text is excellently written. You are a good writer. As for the topic you propose, I profoundly disagree. I started on the command line, in the 1980s, on CP/M and then MS-DOS, being very young. So I've done a lot of command line work, and I still do when I find it convenient. But I see nothing romantic in it. It's a matter of personal preference. I prefer the GUI. And I'm a good programmer, quite good. I think that some people like the terminal and others don't, which is all good and fine. What I don't like is terminal-lovers thinking they are better than those who prefer the GUI for any reason. They are not. It's just a personal preference. It says nothing about the technical capacities of the person.
 
Your text is excellently written. You are a good writer. As for the topic you propose, I profoundly disagree. I started on the command line, in the 1980s, on CP/M and then MS-DOS, being very young. So I've done a lot of command line work, and I still do when I find it convenient. But I see nothing romantic in it. It's a matter of personal preference. I prefer the GUI. And I'm a good programmer, quite good. I think that some people like the terminal and others don't, which is all good and fine. What I don't like is terminal-lovers thinking they are better than those who prefer the GUI for any reason. They are not. It's just a personal preference. It says nothing about the technical capacities of the person.
I agree that CLI vs GUI is a matter of personal preference and says nothing about a person’s technical ability. My intention was not to romanticize the terminal as something “better,” but to describe the quiet satisfaction that can come from understanding what happens beneath the surface. Different tools, different workflows — all valid.
 
Your text is excellently written. You are a good writer. As for the topic you propose, I profoundly disagree. I started on the command line, in the 1980s, on CP/M and then MS-DOS, being very young. So I've done a lot of command line work, and I still do when I find it convenient. But I see nothing romantic in it. It's a matter of personal preference. I prefer the GUI. And I'm a good programmer, quite good. I think that some people like the terminal and others don't, which is all good and fine. What I don't like is terminal-lovers thinking they are better than those who prefer the GUI for any reason. They are not. It's just a personal preference. It says nothing about the technical capacities of the person.
You are old ;)
 
text is excellently written.
If you are used to the insubstantial blathering AI produces, any text actually written by a real human is good. 😁

(Not really. [This just as a prevention before some one points me to bad texts written by humans. I was joking, of course.:rolleyes:] And I agree: Isoux' text really is well written.)

Perhaps that spirit is still felt today in the BSD world.
It is.
At least to me. Really.
At least a tiny bit of that over 35 years old feeling wishes come true I had as a child when Unix machines were unreachable for me and finally at U got my first access to Unix connotes every time when I use the shell.
And most things I do in the shell.
The deeper I get into FreeBSD, the less I use GUI.
Don't get me wrong:
I don't want a desktop computer without any GUI at all. But a GUI is an extra add-on to the shell, not vice versa. TUI - the shell - is where the true power is. For the reasons you pointed out.

Over the years I "disarmed" my machine more and more (almost twenty years of Windows leave breadcrumbs):
From DE to simple WM. On the one hand I simply don't need all the features, and garbage a DE brings, like redundant menus, or a paper basket, which to me is one of the most superfluid features in computer history at all. On the other hand I cannot configure any DE I used to what I want exactly, which above all means: strip down - get rid of all the things I neither use, nor need. While they just waste memory and space they only lower my grip and concentration, increasing distraction.
When I e.g. need to resize a picture, I just do convert orig_pic.jpg -resize 50% smaller_pic.jpg (A tool from the extremely powerful and most recommandable toolbox ImageMagick.) This way I get the job done by magnitudes faster than I have to start a paint prog, load the pic, search the menus for the entry,..... - all by shoving the mouse.
GUI desktop calculators belong to the first things I threw overboard. I use bc and wcalc. Those deliver not only also all what I actually need: Numbers (When I need to know something is 8 I just need the 8. It doesn't matter if it's a character in the terminal, or some GUI BS toy look like some LCD.) But they have more functions, calculate more precisely, can be programmed more comfortably, and more complex, and anyway they are way quicker in usage, especially when I need to edit something, than shoving the mouse.
When I'm in the shell anyway, why leave it to GUI when I can do it faster and better directly in the shell?
No GUI mediaplayer anymore, but mpv, no IDE, no filemanager, no gvim, no GUI texteditor installed at all for many years. What for? I have a shell.

The shell is where the true power is.
Of course it needs to be learned.
It's like the difference between a kick scooter and a helicopter.
The scooter doesn't need to be learned to be used. While the helicopter is way faster, can transport more stuff and more passengers, and above all can fly.
If one doesn't need a helicopter but a scooter is completely sufficient to one's needs, then better use a scooter. But if you want to fly a helicopter, you need to learn its usage.

Almost thirty years ago a crucial experience of mine was when I collaborated on technical drawings with draftswomen (We redesigned a roller conveyor for an engine block foundry in New Jersey.)
Of course I also was trained in using CAD, but - WOW[!!] - they were at least twenty, thirty times faster than me. I was just astonished how they did magic in real time on the screen - unfreakin'! That was a real fun construction work we had back then.
Their "trick"?
They used very barely the mouse, and did >90% of everything in the CLI.
Not even remotely the slightest chance to keep up with them by using the GUI.
This was when I learned:
Real power comes from the keyboard.

And if you look at it by numbers, it's also convincing:
The mouse has three buttons. Each can be clicked once, double, or holded.
That's nine combinations of input you have.
The shell can take 256 (way more) characters from 26 each upper and lower case, 10 digits, and a bunch of additional signs. Of course you can do more with it. Many a lot more.

But it needs to be learned. One cannot have both:
Either avoiding to learn, or most efficient work with most powerful tools.

That's the difference between hackers and mouse shovers.:cool:
 
One of the reasons the command line brings such quiet satisfaction lies in understanding. In the awareness of how much real work, how much carefully written code and deliberate design is required for something as simple as transferring a single byte from the keyboard into another part of memory — under the right conditions, in the right context, with clear guarantees. Once someone has experienced this, the system is no longer abstract. It becomes tangible.
I like knowing exactly what this one-liner does consistently (installs a specific version of DXVK for WoW):

Code:
DEL /Q "%ProgramFiles(x86)%\World of Warcraft 3.3.5\d3d9.dll" "%ProgramFiles(x86)%\World of Warcraft 3.3.5\Wow.dxvk-cache" "%ProgramFiles(x86)%\World of Warcraft 3.3.5\Wow_d3d9.log" "%Temp%\dxvk.tar.gz" & "%SystemRoot%\System32\curl.exe" --output "%Temp%\dxvk.tar.gz" --location "https://github.com/doitsujin/dxvk/releases/download/v2.6.2/dxvk-2.6.2.tar.gz" --progress-bar & "%SystemRoot%\System32\tar.exe" -xzf "%Temp%\dxvk.tar.gz" --strip-components="2" -C "%ProgramFiles(x86)%\World of Warcraft 3.3.5" "dxvk-*/x32/d3d9.dll" && DEL /Q "%Temp%\dxvk.tar.gz" && DIR "%ProgramFiles(x86)%\World of Warcraft 3.3.5\d3d9.dll"

Earlier I thought adding direct paths for curl and tar was overkill, but that command's already well beyond that point :p

It's easy-enough to go to DXVK's page, click download on the version, open it in GUI file manager, and drop the dll in a separate WoW explorer window, but the time it took to type that I could have ran that one-liner several times (along with no browser open/sync/disk RWs, file last access updates on Explorer views, etc); command-line is fun and efficient :D
 
Your text is excellently written. You are a good writer. As for the topic you propose, I profoundly disagree. I started on the command line, in the 1980s, on CP/M and then MS-DOS, being very young. So I've done a lot of command line work, and I still do when I find it convenient. But I see nothing romantic in it. It's a matter of personal preference. I prefer the GUI. And I'm a good programmer, quite good. I think that some people like the terminal and others don't, which is all good and fine. What I don't like is terminal-lovers thinking they are better than those who prefer the GUI for any reason. They are not. It's just a personal preference. It says nothing about the technical capacities of the person.

I had my colleagues literally freaking on me, as a technical superior they would come with project problems, and I would just tell them off; the problem is some of the GUI tools is now not working. A IDE is not pulling correct dependencies, IDE is not cooperating with our git, IDE is not building the project like it should. My response is fuck you, use CLI. And then they freak out because "it should work" "we're doing this for years" "since I left college I've been always doing everything from IDE", which I respond with second fk you, dig yourself out of the same hole you put yourself in by relying on GUI automation.

So there is convenience in knowing things and patterns work stably for decades.
 
A lot of that is because people have gotten used to GUI tools that do the same job in a far less efficient way, or don't do everything and then just accept that it can't be done if the tool doesn't allow it. I've been using computers since the '80s and the first computers I touched were Apple ][ with the monochrome displays and even in gradeschool we were able to work out enough about how to get software running on them.

It is somewhat gate-keepy, but given how many security problems are the result of people doing things that are unwise and then clicking on something they shouldn't be clicking on, I have to wonder if that would still be the case if they had to manually type out, sh execute_teh-1337_Haxorz_Scptz.sh rather than just clicking on it a couple times.
 
To put a distinction out there, the command line or terminal does not imply CLI. It may as well be TUI and automagical. Consider somebody just copy pasting what the website told him, into a terminal and hit enter - a shiny colorful script loads from the Internet, performing everything, informing the user, the progress bar, the whole nine yards.

In this case the terminal user is as oblivious as somebody downloading .exe and clicking on it twice. No difference. Therefore I do agree with Alfredo that somebody being 'a terminal user' doesn't grant him any medals per default. He may as well be a total 'hands off' guy, just preferring the "hacker looks" of shiny new CLI tools.
 
For me, GUIs and the CLI both have their place.

Let me give you an example, using LibreCAD (and the same hold true for Autodesk AutoCAD or Dassault Draftsight). When you want to draw a line, you can go to the side menu, select line, then tell it what kind of line you want, then it asks you for the endpoints (or whatever else it needs, depending on what kind of line you are drawing). In a CAD drawing, you typically draw a lot of lines. So it is much quicker to press <crtl>-m and type LI. On other hand, if you need to do a dimension that you don't do very often, perhaps a diametric dimension, it is easier to use the Tools/Dimensions menu, rather than remembering the commands you do not use often.

You also have a lot more freedom with the CLI, because you can use scripts. I have a form that I print out that keeps track of the medications my wife takes. There is a header at the top that gives the day and date for the page. I used to do it in Adobe InDesign, using its data merge facility. But to use it, I had to keep an Excel spreadsheet with a row for each day, and I had to constantly update the spreadsheet, removing the dates that had been used, and adding new dates at the end. So I wrote a shell script. I give it a PDF of the form, without the date header, and how may days I want. For each day, it uses the date command to generate a string like "Tuesday, February 10, 2026", then uses enscript and ps2pdf to turn it into a one-line PDF, and pdftk to stamp it on the top of the form. It took a bit of work to set up, but the result is something that is much easier to use than what I was doing with Adobe InDesign.

The GUI is great for commands and programs that you do not use very often, because you can get something going without having to learn all the commands.

I have been using vi and vim for 20+ years, and I am pretty comfortable with them. But when I am editing a document, I find using something like LibreOffice Writer, where I can use the mouse to find the word I want to change easier than using the vi commands to move the cursor to where I want. Maybe if I used vi more, it would be easier. My older brother has been using vi for close to 30 years, and he uses it for everything. But he doesn't write a lot of documentation.

So it is probably a case of YMMV.
 
The OP values FreeBSD because it evolves carefully. I don't know if that's true or untrue. The volunteers who work on it decide how it evolves. They are the engine that makes FreeBSD work. The Foundation is nothing without the volunteers, whose work is immense compared to the little things that the Foundation brings to the table.

What is undeniable is that FreeBSD offers unparalleled performance (from my point of view). That's why I'm using it. On my computer, FreeBSD is much faster than Windows and Linux. And it offers excellent tools like zfs.

So, people use FreeBSD because it works: great performance + excellent tools + immense availability of software apps through the ports and packages. All this is true both for servers and desktops.

Do you need the terminal or the GUI to notice that? Any will do.

Of course, the performance and tools are a consequence of a job well done by the volunteers. Do they use the terminal or the GUI? I don't care as long as they keep doing a good job. Is their job good because they work very carefully and slowly? I don't know. I don't know how they work.

The only truth is that FreeBSD is great because it works great. In the future, if it keeps working great (for desktops and for servers), it'll keep being great. Time will tell. It depends on the volunteers who program for hours and read and respond to boring mailing lists discussing boring topics, and it depends also on many many many other factors that no one can control (e.g. an undetected meteorite annihilating Earth tomorrow).

In sum, these kinds of conversations are a good pastime but serve no practical purpose.

PS: After re-reading my post, I understand if to some people I come off as a jerk.
 
Back
Top