tags: learning title: What To Learn On Linux ### The bash command line. *(Importantly, don't try to get by solely with GUI apps, you'll miss out on so much.)* First line the main commands. See [this youtube search](https://www.youtube.com/results?search_query=essential+linux+commands). Then learn to write simple bash scripts to do repetitive tasks. Learn: 1. variables, 2. for loops, 3. if/then constructs, 4. functions and aliases. There are some good youtube videos walking you through the most commonly used commands (see the search above). ### After Bash Then learn simple Python. It is a good exercise, using the subprocess module where necessary, to translate bash scripts into Python. (When I want to do a more complex script, and bash gets unwieldy, then I use Python either to actually do the work, or else to generate a bash script that I can visually check first before actually running it.) ### Virtual Machines Use a VM to learn the basics. Under Windows or Mac I'd recommend using a virtualbox VM, and working in a linked clone that you can delete and recreate as necessary so that you needn't fear messing stuff up. Under Linux use virt_manager and kvm. For learning the command line you don't need an install with a GUI. If you want a VM with a GUI, use Lubuntu or Xubuntu as these are lighter on the graphics, which VMs suck at. ### Editors As for editors, take on the hard learning curve and learn VIM. (And if you can't touch type, find a tutorial to learn to do so. Once you can type without looking at your hands, and take the time to learn vim keystrokes into muscle memory, it becomes very efficient as an editor. Then a tutorial like 'vimscript the hard way' teaches you more intricate stuff.) ### Why? Why the command line and vim? In the case of bash, I learned most of it in the late 90s when I first encountered Linux. I haven't had to relearn anything, except insofar as there are some newer and better ways to do things. I learned vim in the early 00s (I used emacs in the late 90s). Importantly, what I learned then is just as valid today. Whereas GUIs and GUI apps get redesigned over and again, and what you learned 10 years ago is often no longer relevant, possibly because the app you learned 10 years ago has been redesigned, or it has become obsolete and replaced by a completely different app. With GUIs you have to keep re-learning stuff on a regular basis. Learn the old-school stuff like bash and vim, and what you learn today will likely work the same in 10-20 years time. Vim is getting replaced by neovim (esp. since vim's BDFL has sadly passed away), but some kind of vim will always be around. In the case of my shared webhost, they offer two editors: nano and vim. Except for complete beginners that don't want to learn something with a hard learning curve, nano sucks. So basically it is nano or vim or nothing (not even emacs). ### What Languages Languages, learn basic Python. (Once you're comfortable with programming, then learn Javascript since it's ubiquitous online, then explore others. But make sure you don't miss out on learning to program stuff.) Reply or message me, indicating what you know already, if you want some suggestions for what to learn next.