To really take advantage of automating tasks using shell scripts, it's important to organize all common tasks in reusable commands, and to have them available in the path. To do this, it's a good idea to create the bin folder inside the home directory for the scripts and bin slash lib folder for storing common pieces of code. When working with lots of shell script, it's important to reuse large pieces of functionality. This can be achieved by writing library functions for your shell scripts, functions that you can call from multiple places. Here we will create a library script called util.sh, which will be sourced in other scripts. By sourcing the script we get access to functions and variables from inside the library script.
We will start by adding the print IP function from a previous script. Now we will add another function called get Tarik, which will be used by other scripts for reading command line arguments and values, we will simply paste it from our clipboard history using clip it to select it. And you can learn more about clip it by checking our clip in the video. This is just a simple function that will receive a parameter name as the first argument, the list of arguments as the second argument, and it will assert inside the list of arguments to find the parameter name. We will also see it in action later on. The last function we are going to create is called get public IP.
It is similar in terms of functionality with the print IP function, only that it will be used to print the computer's public IP. That means that if you are connected to a wireless router, and you access the internet, you will get the IP of the router as in the IP that the other sites see The print IP function just shows the IP address from the private subnet. The command is already copied in the clipboard. It's called dig, and we are using it to access open DNS comm in order to read the public IP, you can find more information about it in its main page or by googling it. Now that we have our library functions in place, let's go and create our productivity booster scripts. Let's create a script called IP utils where we will add some common tasks for reading IP addresses.
We'll start by adding the shebang followed by a neat little trick for making sure we are always in the same folder as the executed script. We'll be using the bash source variable to determine the value of the current working directory. You see here we are using nested sub shells in order to achieve this Next, we will source the util script so that the library functions are exported into memory. Then we can access them from the current script. Let's add a simple cult or get arc function using subshell and search for the command argument. Also, let's echo what we found so that we can test our script.
The next thing we need to do is to give the script execution rights using the change mode command. Also, in order to run the script from anywhere, the bin folder must be in the same PATH variable called the variable and check that the bin folder is there and if not, update the variable in the actual configuration file. Alright, let's test the script by using a command line parameter with the get our function and acquainted if your search For the IP OTS command in the terminal using tab for autocomplete, and the command doesn't seem to exist, that is probably because you need to tell sexual to reload its path arguments. To do this issue the rehash command. Now run this command, this should work from within any folder and it should print IP on the screen. Now that we verified everything is alright, let's write some code for our command line arguments.
If you run the script, with the command IP flags, the script should print that on the screen. This can be done with the already familiar case statement. Here. We also want to pass in another argument interface to get the interface that's needed for printing the IP. It's also good practice to add a default case and echo message saying invalid argument. Save the script and let's test it.
First thing let's get the interface in From the IP config command and then let's go and test the script. We can see it's printing our private IP on the screen. Now let's add our last command to the script public IP. For this, we just called the get public IP function from our utility lib, Save and Run. And we see that the command worked our public IPs printed on the screen. In this video, I've shown you how to create shell scripts that automate a lot of tasks that you commonly use.
The IPO script can also be used as a library script in other scripts because, well, because why would you write the same code twice? Now what I recommend is that you identify what tasks you commonly execute, and you automate them so that you can do your job as quickly and as efficiently as possible. To give you an example of while ago, there were a bunch of articles on the internet about this guy who used to automate everything that required him more than 90 seconds to do. He wrote scripts like ordering the coffee machine to start making all that data so that by the time he gets there from his desk, the latter will be finished, and he doesn't need to wait. The guy also wrote one script that sends the text message late at work to his wife, and automatically picks reasons from a preset list when there was activity with his login on the company's servers after 9pm.
Of course, this example is a little bit extreme, but in the end, it's all about your imagination. well written automation scripts can export your routine work and leave you to explore your creative potential.