Progress indicators. Typing out a long command only to have it just sit there with no report is frustrating.
Depending on what one is doing, placing pv
in between (usually with -s to specify size of data if known in advance) gives a progress bar, with speed and size of data passing through.
Say you have an SQL dump of 1048576 bytes:
cat dump.sql | pv -s 1048576 | mysql somedb
and now you know how far it is instead of just waiting :)
All wrong advice, stop building “safe spaces” and stuff. That article is the woke movement of the command line. Get people in front of the terminal and then assign them tasks to do until they’re comfortable with it. No safe-rm
no bs.
I am using ZSH, that function that allows you to type part of the command and then do UP key to find previous command starts with same prefix is killer function for me.
(I don’t know if this function is added by oh-my-zsh or not.)
Growing up with limited capabilities (e.g. sh or ksh on headless SunOS/Solaris and AIX servers) and a lot of room for failure is what did it for me. I learned to think before typing, break things and fix them again. I still learn that way and I find that life without crutches and with lots of tinkering improves my understanding of how most things work and makes me more efficient in the long run.
Also man pages.
Ultimately it helps to understand the benefit of the command line: That text is a more effective mechansim for communicating that anything else. That any command you learn can easily to turned into a script an automated. That commands can be copied and pasted and shared with friends much easier than videos or images. Knowing it’s benefit motivates you to learn it.
Look at the explanation in Windows for how to change a registry key or how to change a printer setting. It’s one long guide full of screenshots thats painful to follow or understand. Where-as Linux users can easily share commands and fixes or tests over a simple irc chat, because the command line reaches the whole system.
The command line is of course a place where lots of apps can be plugged together and mixed up to achieve hundreds of goals, and thus learning awk, grep, sed, wc means you can count, search or perform regexes on any other part of the system, from counting users, or essays, to network connections, or processes or anything.
To be honest, many existing blogs answer exactly this question, which has been asked a million times before.
I agree with most of what you said, except for the Windows examples. The pages that you linked begin with three-line TL;DRs that are enough for any barely-competent user to find and modify the necessary settings. While the full instructions may be tortuously detailed, are they actually hard to understand?
And sure, those Windows pages don’t advance the user’s knowledge in any meaningful way, but neither does blindly copying and pasting a line of shell commands.
By the way, while I appreciate that we’re talking about if and how CLI is superior to GUI, and not Linux versus Windows…
Where-as Linux users can easily share commands and fixes or tests over a simple irc chat, because the command line reaches the whole system.
… both of those tasks can be done via CLI in Windows, too. I am very happy that I switched to Linux, but there’s no reason to misrepresent the other guys.