This post has been de-listed
It is no longer included in search results and normal feeds (front page, hot posts, subreddit posts, etc). It remains visible only via the author's post history.
I just tried CentOS 7 for the first time and I keep stumbling across various more-or-less terrible changes to the CLI environment. I'm sure these are familiar to everyone - systemctl instead of service, ip instead of ifconfig, firewall-cmd instead of iptables. And so on.
So the natural reaction is to make a post about "who moved my cheese" and complain about why perfectly good things got changed. This is not that post. I understand that systemd is a thing, that it makes laptops run longer on their battery or machines boot faster or whatever, and that reloading the entire firewall every time you make a slight change is pretty dumb. I accept that these changes are for the better and embrace the new technologies. Progress is great and good and sometimes involves discomfort.
My question is - why does the command line interface to all the new stuff have to be so verbose and poorly thought out?
I mean, OK, we've got a new firewall configuration layer on top of iptables, and this is for some reason a good thing. But the command to configure it is "firewall-cmd" - 12 characters. And I can't even type "fw<tab>" - because part of the same package is called firewall-offline-cmd - a naming choice that seems almost specifically designed to frustrate shell command completion. There's just no way to do it fast. Or at least, not as fast as I'm used to.
Or here's another one. The new firewall-cmd requires that you issue any given change twice, once to update the running configuration and another to update the permanent configuration. There doesn't seem to be any way to save the running configuration to permanent. (Online sources recommend you make all your changes as --permanent, then do --reload, which utterly defeats the purpose of having the new abstraction layer.)
But ok, let's roll with it. Let's trust our upstream developers and assume they had some very good reason not to provide this functionality. So the natural thing to do at the CLI is to make the change, then hit up arrow and run it again as --permanent. Except that firewall-cmd requires that --permanent, if specified, must be the first option. So the number of keystrokes to perform the task is tripled. I can't for the life of me imagine why the order of the commands could possibly matter - don't we have getopt for that? Hasn't this been a solved problem for 30 years?
All these new commands are just painfully awkward, and don't fit the style of CLI that we've been used to with the GNU tools. I mean, maybe they're still slightly less verbose than PowerShell, but at least PowerShell has tab-completion of options rather than just files.
Many people have made the same complaint with systemctl's reversing the order of the service name and the command (systemctl start httpd instead of service httpd start), meaning you can't up-arrow and change the command easily. But then we have other issues. When you run "systemctl restart httpd" you get no output. Did it do anything? You can see it takes a second run, but ... did it actually do anything?
I bet the GUI tells you if it did anything. GUIs don't have buttons you click on that silently do things with no visible indication anything is happening.
And I wonder if that's the point? Is new development on Linux now focusing on the GUI, with the CLI an afterthought? Or is there some cool new way of interacting with the CLI that I just don't understand?
What's the deal with this?
Subreddit
Post Details
- Posted
- 9 years ago
- Reddit URL
- View post on reddit.com
- External URL
- reddit.com/r/linuxadmin/...