It's funny, I started in the C64 era and have probably used a CLI for something roughly every day since then. But for me, using a CLI is still just a necessary evil - give me a GUI (or TUI) instead and I'll always take it.
The reason is that my memory sucks, and has always sucked. If I'm not typing a command every day, I'll forget it very quickly. If I am typing a command every day it's probably an alias or a script I've written to save myself some time so the "real" command is already forgotten. So in reality if it's not cd, ls, less, sudo or grep the chances are that I've forgotten it.
Where the CLI really shines is automation. Software I can control with a CLI in a script is amazing. So what I really want is for everything to have both a GUI and a CLI. I realise I'm asking a lot.
- spaced repetition for stuff that you use sporadically. I use Anki, it's great. For how to use it, this article is great: https://borretti.me/article/effective-spaced-repetition. I've found a positive feedback loop where the more I know how to do things without looking anything up, the more I use the CLI, the easier I remember things, the more things I discover, etc. I read once that when learning a new language, you should aim for content where you know 80%/90% already. It seems to be true for learning the CLI, and especially for integrating that learning into my day to day job.
- sd (https://github.com/ianthehenry/sd) for lowering the cost of creating a "documented alias". Before that I made aliases with either alias, or bash functions, all starting with "," to quickly see all which are "mine" (I read that trick in an article that I can't find), now the more complex stuff is in sd with some documentation.
w.r.t. forgetting CLI commands- I'd consider increasing the size of your shell history and setting up a way to fuzzy search through that history. I've been using FZF for this but am considering moving to atuin
It's great to be able to find the weird JQ filters or kubectl patch commands I ran last year when I need them
The reason is that my memory sucks, and has always sucked. If I'm not typing a command every day, I'll forget it very quickly. If I am typing a command every day it's probably an alias or a script I've written to save myself some time so the "real" command is already forgotten. So in reality if it's not cd, ls, less, sudo or grep the chances are that I've forgotten it.
Where the CLI really shines is automation. Software I can control with a CLI in a script is amazing. So what I really want is for everything to have both a GUI and a CLI. I realise I'm asking a lot.