The answer is that it depends what you’re doing. You can have an extremely efficient dev env CLI. You can kinda brows the web cli. You probably don’t want to edit videos and pictures in the CLI.
Because a lot of foss has replaceable building blocks, you’re not going to find a ‘this is how you do things course’. You’re much more likely to find, ‘this is how you use a certain text editor in the CLI’.
So, first, I guess, figure out or articulate what you want to do in the CLI. From reading and sending mail to writing code and building a dev environment to just basic scripting to maintain your install.
After that step, you’ll want to try a couple of the building blocks that do that.
Once you find one that kinda clicks, then you can go become proficient and start to put together the pieces of your workflow.
I run arch/Ubuntu and gnome. I spend about 50-70% of my time every day in a terminal. I spend the rest in a browser. Sometimes I use files, libre office calc, gimp or the calculator app, but even combined their usage is probably a rounding error.
I run gnome term (used to do a lot of urxvt but gnome term seems to work fine these days)
From there, I start tmux. Inside of tmux, I run a few windows. One has email, a couple shells, chat and system monitoring.
The next window has my core dev env, I run nvim with a server so I can upen tabs in nvim from different terminals, in nvim I run the lsp servers for linting and code completion. I use ranger as a file browser/previewer and that’s hooked to nvim so when I select a file there it will open as a tab in nvim, additionally I can run that file in the debug pane in the bottom of the window.
Then I just have windows that I drop into to do additional tasks, ops work on multiple servers at once, a second dev env to make a quick change in a different package, or a new window to scrape up a one line script to parse a log file or data dump for processing else where.
All of this takes time, for me about 15 years probably to say ‘ok, I want(need) to do this thing in the terminal, now what’s the best way to get that done . . .’
“cli proficient” depends entirely on what you are doing, other than extremely basic stuff like learning how to use coreutils, really you just gotta try and use it whenever you can to get used to it.
Linux Journey is a good one for the basics. But I would agree with the other commentors here, and say the best thing you can do for yourself is to just use it day to day.
I once heard something about learning other languages. Your brain has two methods of learning, one is the academic, and another is practical. When you learn something purely academic, your brain isn’t prioritizing it as much, but if you’re doing it daily, and you need to be able to do it, then your brain goes “oh man, I better pick this up quick” and starts kicking more of your subconscious power into learning it. I think using the command line is going to be a similar deal.
So there is no like FOSS course on how to be cli proficient
The answer is that it depends what you’re doing. You can have an extremely efficient dev env CLI. You can kinda brows the web cli. You probably don’t want to edit videos and pictures in the CLI.
Because a lot of foss has replaceable building blocks, you’re not going to find a ‘this is how you do things course’. You’re much more likely to find, ‘this is how you use a certain text editor in the CLI’.
So, first, I guess, figure out or articulate what you want to do in the CLI. From reading and sending mail to writing code and building a dev environment to just basic scripting to maintain your install.
After that step, you’ll want to try a couple of the building blocks that do that.
Once you find one that kinda clicks, then you can go become proficient and start to put together the pieces of your workflow.
I run arch/Ubuntu and gnome. I spend about 50-70% of my time every day in a terminal. I spend the rest in a browser. Sometimes I use files, libre office calc, gimp or the calculator app, but even combined their usage is probably a rounding error.
I run gnome term (used to do a lot of urxvt but gnome term seems to work fine these days)
From there, I start tmux. Inside of tmux, I run a few windows. One has email, a couple shells, chat and system monitoring.
The next window has my core dev env, I run nvim with a server so I can upen tabs in nvim from different terminals, in nvim I run the lsp servers for linting and code completion. I use ranger as a file browser/previewer and that’s hooked to nvim so when I select a file there it will open as a tab in nvim, additionally I can run that file in the debug pane in the bottom of the window.
Then I just have windows that I drop into to do additional tasks, ops work on multiple servers at once, a second dev env to make a quick change in a different package, or a new window to scrape up a one line script to parse a log file or data dump for processing else where.
All of this takes time, for me about 15 years probably to say ‘ok, I want(need) to do this thing in the terminal, now what’s the best way to get that done . . .’
And then, you just kinda build it.
“cli proficient” depends entirely on what you are doing, other than extremely basic stuff like learning how to use coreutils, really you just gotta try and use it whenever you can to get used to it.
https://youtube.com/playlist?list=PLtK75qxsQaMLZSo7KL-PmiRarU7hrpnwK
Linux Journey is a good one for the basics. But I would agree with the other commentors here, and say the best thing you can do for yourself is to just use it day to day.
I once heard something about learning other languages. Your brain has two methods of learning, one is the academic, and another is practical. When you learn something purely academic, your brain isn’t prioritizing it as much, but if you’re doing it daily, and you need to be able to do it, then your brain goes “oh man, I better pick this up quick” and starts kicking more of your subconscious power into learning it. I think using the command line is going to be a similar deal.
There are a ton of them.