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.
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
This one I knew, but only because I accidentally tapped up instead of right one time
I think I’ve learned and forgotten that tidbit a couple of times. It’s something that I need to do seldom enough that when I finally do, I don’t remember the keybind .
Didn’t take me that long, but I had a similar reaction to learning about it haha
smfh the more you know, the more there is to learn eh?
and Ctrl + L is the same as
clear
Wow! On Fish, it brings up a whole search bar with a colored grid of results and tab to select and fuzzy finding. This is cool!
Believe thrt is from fzf so can be enabled on zsh too.
My main recommendation is this - The more techsavvy you are, the harder a switch to Linux will be, because you know how to do some complex things on Windows, and now you’ll have to relearn it on Linux.
Take your time, Google lots, and just know the ceiling on Linux is much higher for power users, so getting over the initial hump will reward you greatly
I also switched to linux after using windows for more than 10 years. I still havent gotten used to linux yet. There are still a lot of things I struggle with.
I kind of had difficulty setting up my printer, I tried to install the HP drivers but it did not install. But none of this installation was required because linux supports driverless printing throught the cups service which I wish I knew earlier.
Another is the use of vi text editor, I couldn’ t figure out how to even edit the file and save the file🤣.
Yeah many more examples. It is a bumpy ride. But it is all worth it.
You don’t have to learn
vi
if you don’t want to. Just switch your default text editor to one that you like (it doesn’t even have to be a GUI one)
Patience pays a lot.
- Linux is not Windows
Do not expect things to work as they do in Windows.
- The terminal is not to be feared (it only bites when told to)
While you can get most things done via a GUI option using the Terminal is much more powerful and gives more information.
- Not all hardware works with or works well with Linux
This pertains mostly to Laptops and peripherals, but always do a quick Google search to check for any issues.
One of the big issues for people is sound, a lot of computer & parts makers like to use the cheapest no-name parts they can because Windows lets them require “drivers” aka software fixes for poor hardware whereas Linux tends to give unaltered output leading to complaints about sound quality.
- Not all software works on or works well on Linux
You are not going to find software from Adobe, Microsoft office 365 etc running on Linux even using WINE.
Some games will not work on Linux even using the Proton compatibility software.
- Linux software is often lacking in the visuals but has lots of options under the hood.
There is a lot of software made for Linux are made by devs who focus more on the under the hood performance than making the software GUI look pretty. So don’t be put off by the looks of a lot of Linux software.
- Alternative to is a great website.
I highly recommend Using the Alternativeto website to (as the name implies) find alternatives to software you use on Windows.
- Backup’s are your friend
Setup an external device be it an internal hard drive, external hard drive or NAS as a backup target for your files.
You can use Timeshift to backup the entire drive (and it can reload a chosen backup directly onto the drive), Lucky backup to sync specified folders (either one way or both ways) to your drives or as I do use both.
And backup before doing major updates.
I have Timeshift setup to backup the entire drive (including $home) to a separate internal HDD and Luckybackup set to backup my important folders to an external USB HDD.
- Accidents will happen
As you are learning how to use and navigate you will have accidents that will require a full reinstall, don’t fear this has happened to everyone else and why you backup your files so it’s an annoyance instead of the end of the world.
My advice is to search the Internet for some good resources on how to learn the Bash programming language, or else the “POSIX shell” (which is very slightly different from Bash). This is the command line language used by most Linux distros by default. POSIX shell is a complete programming language with built-in data structures, control flow like conditionals (
if
statements) and loop syntax such asfor
andwhile
, and function composition by way of shell pipes. Combine these with tools likefind
andgrep
and you can accomplish quite a lot with just a single line of code.Also, I highly recommend you practice using Vi or Vim as a text editor until you get somewhat fluent. It isn’t strictly required, but I recommend it simply because most people who use Linux as their daily driver also use these tools, and it helps a lot when communicating with other people in the Linux community, especially when it comes to solving problems. You want some fluency in using apps that the majority of people in your community are using. Also it is a good place to practice writing shell scripts.
Also not required, but learn a bit about Emacs as well. Learn how to use Dired (an Emacs app for working with
ls
output interactively), learn how to open an edit a file from Dired, learn how to runfind
andgrep
from within Emacs. Learn how to run shell commands in Emacs and capture their log output. Also learn a bit about how to use Org-mode. (Shameless plug: I have my own series of blog posts on how to do these things.) This handful of basic skills will get you a very, very long way.I can’t comment much on customizing Cinnamon, but Cinnamon uses the Gtk toolkit, and so you can use any of the good Gtk themes out there to customize Cinnamon. Check out the UnixPorn community for more in-depth advice on that topic.
do not copy paste commands you do not uderstand from shady forums in hope it will solve your problem :)
Be patient. Anytime you have to delete any system files just rename it with bak suffix. Have fun
unshare -nc followed by a command will run that program without network access. Very useful if you’re running trash in Wine
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.
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.
People will say “use this editor” or “use that window manager”, but honestly it’s just personal preference. There’s no award for using ed to edit files, and almost anything you can do with one distro you can do with any other distro. You might get an urge to distrohop and compile the kernel, and that’s fine, but imho far more useful is to learn how pipes work and what you can do with regular expressions. A tutorial for bash is always useful.
People will say “use this editor” or “use that window manager”, but honestly it’s just personal preference
Just the same, if you are serious about using Linux, it really is a good idea to practice using Vi to the point where you are somewhat fluent. It doesn’t hurt to learn Emacs either, though I would prioritize Vi.
The reason is simply that these are the editors that the majority of Linux-as-my-daily-driver users use, and it makes it easier to communicate with others and do problem solving if you have experience with these very commonly used Linux apps.
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.
It’s a little contradictory but make use of the amazing community and don’t listen too much to the community. People are really helpful but you will hear stuff like “don’t use that distro” or “don’t use that desktop environment” a lot just because people in the community value those things and love to fight which is the best. You have to figure out what works best for you and not someone else! Still, the community is increadably helpful and there is someone to answer basically every question you have so never be afraid to ask stuff and welcome to the endless rabbithole! ;)
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).
Most distros are good enough without much tweaking. in terms of commands…some more advanced stuff…
start poking around proc to see what linux gives you, without needing a program to get it!
Honestly, youtube “basic bash tutorial” and watch/follow along with a video or two. Helped me a bunch.