I just installed Ubuntu 22.04.3 LTS (Cinnamon) on an empty laptop a couple days ago and have been experimenting a lot. I’m coming from being a Windows user since I was just a little kid playing old DOS games on my grandpa’s Win-98 PC back in around 2000. My daily driver is currently running Windows 10 but I am pretty adamant on not going with Win-11. I’ve been wanting to experiment with Linux for a while and Cinnamon so far seems like a lot of fun to navigate. Terminal is amazing. The fact that you can custom-write keyboard commands that can be hand-tailored to individual programs on your computer via the OS… that’s powerful.
I have not tried running WINE yet but I plan on doing so soon. I also have not done much of anything, honestly, except for learning how to search for programs with gnome-software --search=
. I have also used sudo
a couple times to download software here and there, but I know I am not tackling this in as systematic of a way as I ought to be to really figure this machine out.
What are some really important basic commands I can use to start branching out into Terminal command structures and learning more about how I can edit and customize my computer? And if Cinnamon has shortfalls or weaknesses that I may run into eventually, what are some good alternative distros that I could leapfrog to eventually? I do not have any coding experience (currently), but I do consider myself a semi-power-user on Windows, having messed with CMD many times and digging through all the damn menus to access drivers and alter ports.
KDE is your friend in the trenches, Kubuntu > Ubuntu 100%
Regardless of whatever distro, definitely keep all your stuff backed up on an external drive. I had to “restart” my install a few times to get the hang of things. Yet I still keep all my info on an Vegacrypt encrypted external just in case to this day.
My tip would be to try a few distros before you settle on one. Ubuntu was it for me about seven years ago, but I used mint for a few years and am using MX with xfce now.
Also,
sudo !!
is pretty useful when you forget tosudo
the previous command. It means “super user do the last command I just boneheadedly forgot to do that to”Also can use
!!
and do a space at any place to bring in last command. Not used much as you could just do an up arrow but helps if you edit around a lot and experimenting with a cli tool or command.Also,
!!
is a shortcut for!-1
so if you want the 2nd latest command you could do!-2
and so on.
Rather than Ubuntu Cinnamon, you’d be better off with Linux Mint.
The Linux community is indeed remarkable, but the multitude of available distributions can sometimes give an impression of fragmentation. When you discover the distribution that best fits your needs, it’s important to remember not to take it personally. Avoid developing a bias towards your chosen distribution as it could potentially lead to unnecessary conflicts with others who prefer different distributions within the community.
unshare -nc followed by a command will run that program without network access. Very useful if you’re running trash in Wine
I do not know what sort of power management software exists by default on Ubuntu, but for laptop use I would strongly recommend getting a power management package like TLP to configure power profile settings for your laptop when on battery and on charge. It can greatly improve battery performance. Some alternatives like auto-cpufreq and powertop exist, but I have tried all 3 and found that TLP worked the best for me.
Unless you are looking to work on shared systems/servers as sysadmin or other jobs, explore shells like zsh or fish and customise them rather than stick to bash. A lot more user friendly and accessible advanced features. Helps with learning a lot. Zsh is compatible with bash but fish isn’t. So choose based on what your goal with learning shell is.
If you are sticking with debian based distros, try apt and synaptic(GUI) to install your software. At some point you might also need to install tar archives. Don’t get worried as most guides should be easy to follow.
Not very practical, but good for understanding the OS: Everything is a file. Even your filesystem and harddrive is represented by a file (devicenode).
Back in the day, before things such as pulseaudio and equivalents became the norm, there was also such a file (it might still exist, idk) for your soundcard. By shoving the contents of a wav file directly into /dev/dsp, you could hear it as if it was played normally.
Unrelates to the above, in a terminal context it’s very handy to learn the concepts of STDIN, STDOUT, and STDERR, and how to manipulate these. I won’t go into it here, but whenever you see a bunch of commands strung together with redirects, < > | >>, that’s usually for sending the output (STDOUT) of one command somewhere else, such as to the input STDIN to another command.
Be patient. Anytime you have to delete any system files just rename it with bak suffix. Have fun
Remember to play. There are multiple terminal emulators, window managers, shells, all the things! Try 'em out. When installing stuff to test via distro package, keep note of which dependencies were dragged in so you can get rid if all of them, not just the thing you wanted to test. Also keep a list of what you tested and later got rid of (and why) so you avoid testing it again.
If you ever ssh into other machines to do stuff, learn the minimum of vi (classic w/no arrow keys, not vim) and bash. Servers “always” have those (though FreeBSD also has tcsh).
Ctrl+R to search your bash history. I hate how long I went without knowing this, so I’ve always got to spread the word about it.
Jfc…I’ve been using Linux for almost 2 decades…and TIL
if you use zsh, typing the first part of the command and then using the up arrow searches through the history for commands with the same starting characters
If you’re typing out a long file path in the terminal you don’t have to type the whole thing out, you can just press tab and it’ll autocomplete for you.
So for example, if your file is called 1234567890.jpg you can just type 123 and hit tab and it’ll fill in the rest. And if there’s more than one file that begins with 123 it’ll list them. Works for folder names too.
My big tip is if you haven’t already, switch to a local package repository. There are a lot of people mirroring the software packages for mint and you can switch to one that is geographically the closest to you for better speed and to spread out the server load.
I love Linux Mint and it’s what I install on all my decom-laptops turned servers. It will do pretty much all you want to do in Windows and then some. The only thing it probably isn’t the absolute best for is PC gaming but if you are just using a laptop it probably doesn’t make much of a difference either way.
If you like Mint then I also suggest PopOS. They are both based on Ubuntu so a lot of the paths and the package manager are the same. The killer feature there is auto-tiling Windows which is like the window snap feature in windows but happens automatically. It’s not for everyone but once I started using it, it changed my entire workflow.
Last thing is, if you haven’t already, familiarize yourself with running docker containers. A lot of stuff that’s complicated to set up is a breeze with docker and docker-compose.
I think the two “major tips” that I can give you are simply
1- Package manager is your best friend.
2- Figure out the “know-hows” of Linux (i.e who “is responsible” for the video card, who deals with the cpu, how do i configure my sound card, how do i configure my video card, etc.).
Master those two tips and you can call yourself an average linux user.
First thing I’d do is ditch the GUI file manager: get comfortable with cd, ls, mv, rm, etc.
After that, maybe start with basic text manipulation, like grep, awk, sort, uniq, etc. This ties in nicely with IO redirection, which is essential for a “CLI based workflow.” Get comfortable with pipes and file redirection, it’s extremely powerful!
Writing shell scripts is another super useful exercise: any time you find yourself running the same set of commands multiple times, think about making it a shell script. You may end up with some really useful little custom tools that way.