55
How can I get better at the CLI?
(feddit.nl)
From Wikipedia, the free encyclopedia
Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).
Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.
Community icon by Alpár-Etele Méder, licensed under CC BY 3.0
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.