The cli has one other benefit which I think is rarely recognised: it’s pretty easy to tell someone you need to run “xyz -a -b -c” (bringing the safety risk with it to be fair), but it gets a lot harder to be like “so in the top left there is a cog button that opens a panel on the right where you’re looking for the 2nd tab and there’ll be a checkbox”.
The things I appreciate even more than a good gui are programs with a good gui and a cli.
It is very easy to tell someone type this and shut up. I’ve never seen an explanation of why -a -b and -c are necessary or what they do. Although I recognise that a lot of people just want magic, and running “xyz -a -b -c” is the next best thing.
I would love to see what cli commands the gui uses, they would be much easier and faster to learn.
As the other comment says, use TLDR. it doesn’t tell you everything, but it does usually explain the most common uses. If you need something more advanced than you need to do more research anyway.
While it is an improvement, it’s aimed at people that already knows the commands.
For example:
Extract a (compressed) archive file into the current directory verbosely: tar xvf path/to/source.tar[.gz|.bz2|.xz]
What is that [.gz|.bz2|.xz] at the end? to someone that knows the tool it’s too obvious to even think about, to anyone else, it’s just there to mess with you because there’s zero reference to it and some examples include it and others don’t.
That’s one of the things I like about yt-dlp-nis on android. You can select all the options you want through the UI and grab the resulting yt-dlp cli command.
The cli has one other benefit which I think is rarely recognised: it’s pretty easy to tell someone you need to run “xyz -a -b -c” (bringing the safety risk with it to be fair), but it gets a lot harder to be like “so in the top left there is a cog button that opens a panel on the right where you’re looking for the 2nd tab and there’ll be a checkbox”.
The things I appreciate even more than a good gui are programs with a good gui and a cli.
It’s also far easier to automate and use a CLI in a script - as long as it isn’t a TUI.
Good UX is the best, whether that’s CLI or GUI. UX is under-appreciated.
A well documented CLI is easy to generate a GUI from.
Wait what?
I don’t know about well documented, but if you use a standardized argument parser, you can even generate a gui from that.
https://github.com/chriskiehl/Gooey
Most screen recording programs are actually just ffmpeg in the back.
It is very easy to tell someone type this and shut up. I’ve never seen an explanation of why -a -b and -c are necessary or what they do. Although I recognise that a lot of people just want magic, and running “xyz -a -b -c” is the next best thing.
I would love to see what cli commands the gui uses, they would be much easier and faster to learn.
As the other comment says, use TLDR. it doesn’t tell you everything, but it does usually explain the most common uses. If you need something more advanced than you need to do more research anyway.
While it is an improvement, it’s aimed at people that already knows the commands.
For example:
What is that [.gz|.bz2|.xz] at the end? to someone that knows the tool it’s too obvious to even think about, to anyone else, it’s just there to mess with you because there’s zero reference to it and some examples include it and others don’t.
That’s one of the things I like about yt-dlp-nis on android. You can select all the options you want through the UI and grab the resulting yt-dlp cli command.
A decent number of modern TUIs do that, lazygit for example. I also find that tldr and navi do a great job of explaining those inscrutable options.
Grsync too
man xyz | grep -E "^ *\-(a|b|c)"alternatively try tldr, which lists the most common options and explains them. It’s a livesaver for noobs.
Edit: oh i see it was already recommended lol
More cryptic commands to the rescue! Lol
Also CLI are more accessible for blind people.
And dude has changed icon set, so its not a cog, its a wrench and screw driver