Learn to Script with BASH!
BASH is a shell and a scripting language that can be used with that shell and the system, it's immensely powerful for use on Linux and other Unix-like systems. Learning how to script in BASH is very useful, what you use it for varies by person but at the base of things it makes task completion more consistent, a way of documenting that process, at times can make a task quicker to complete if you do it often.. and so forth.
I like to think of BASH as an extension of GNU core ultils (of course not always just GNU utils) and userland tools, You use it with all of those utilities you would commonly find on a system (or something else if you must have a particular program need) and craft a script that will perform the sequence of commands with some program logic to control the flow. So you are not doing anything too foreign if you are already familiar with the command line, you are merely using BASH to string all those commands together to achieve what you are wanting to do.
BASH itself is actually relatively small, its builtins, functions, expansions, redirection, and so forth consist of a moderate sized portion of what you actually do in a script. You certainly use them and need to know them, but a lot of what you're actually using are GNU core ultils and userland tools. An example is you might make a script to backup a portion of your system and you might use rsync to do so. Well you can interact with and script everything that needs to accomplish that task, rsync being the bit to move the data from source to destination but using common Linux commands such as mount to mount another drive to accomplish other necessary bits. So as I said before, you're using BASH to string all these things together in a sequence to accomplish your task the same way whenever you run your script.
The best way I've found to learn programming/scripting languages is to find something you want to do, automate, create, basically a project. Even better if it is something that is interesting or useful to you in some way such as saving time by automating a task. By getting thrown right into it you're forced to learn what you need to achieve the task at hand at a more accelerated pace. Then by doing this a couple times you're coming across new things to learn and reinforcing things you've came across already, creating a well rounded base knowledge.
Along with being able to create very useful scripts you can manually run, you can also run scripts on a schedule through something called Cron similar to using Window's Task Scheduler.
You can also script tasks to be launched on boot and such as well by linking them into /etc/init.d and use rc-update if you're on Gentoo to add them to the boot run level to be ran during boot. There are also other run levels such as on shutdown, you can read the man page to get an idea of what else is possible.
ln /home/<user name>/scripts/login_script.sh /etc/init.d/example_script rc-update add example_script boot
For systemd systems this method will not work and will be a bit different, you can find the necessary information to do the equivalent on systemd here.
There's an abundance of resources available, I'll be listing a bunch here for reference. These are resources I have used myself, so I am sharing them here as others will likely find them as useful as I have when they go to write scripts of their own.
Guides and other important references
While many people have varying opinions of which style you should code in including how variable names should be formatted (camel case?), whether you should double space or use tabs, etc. it really comes down to being as clean and descriptive as you can, indent anything that's nested, comment your functions, etc.
The purpose of this and the base importance everyone is trying to portray is that you should have a consistent and good style that will make your code readable and maintainable whether by you or someone else in the future. This increases your code quality as well, quality code should be a goal.
The Linux Command Line is a free book that is aimed a those newer to Linux, the command line, and BASH. It is a reasonable length at 500~ pages, yet goes into advanced topics and slowly works you to get to that point while giving you the knowledge and tools to be successful. Additionally, it is even offered for free to help the community.
Linux Command Reference
Loops for, while and until
Functions are important if you find yourself reusing the same bits of code over and over through out your script. You can put it in a function and instead replace that repeated code by the functions name which will call it, think of it as a direct substitution. An important bonus of this is if you are repeating that same code, if you ever need to change it you change it in one place not many.