November 19, 2014

Scripting made fun: Creating a melody of simplicity

Last time I uncovered a language that created a two-way communication tunnel with my Linux system. When you learn a two-way method of communication, the intentions of both communicators are understood. My Linux systems understand my intentions. It knows that my objective is to make my system very simple to operate in accordance to my standard of simplicity. This way I can understand more thoroughly how my system works. Once approved, more of the underlining functions of my system are revealed. What I started creating was a melody of simplicity.

Last time, I wrote a blog titled “scripting made fun”. The article was to inspire a new way of scripting that removed boredom and fear of learning programming. When you enjoy what you are doing, you do more of it and differently. I found my unique communication style.

My system must be psychic; a voice repeatedly recited, “take a sentence of mundane commands and reduce them to one word”. I did this using variables. From variables now moving to actually writing scripts with multiple lines of code. For assistance, you can learn how scripts work by reading script files like “fstab” or “init.d”. Take time to dissect them. When learning Linux, allow yourself time to take things apart.

I kept the scripts in my home folder, and modified the default search path. This time, they have been placed in one of the already declared default search folders. As I furthered my readings of The LPILinux essentials study material, It was recommended to place compiled or custom made programs in the “/usr/local/ directory”. I don't have to worry about my scripts being moved when my system upgrades.

When I placed the scripts in this directory, the owner changed from me to “root”. Give me back what is rightfully mine. I am not running “sudo” before my OWN programs. Management is under revision.

The command “chown” changes the ownership of a program. 

#sudo chown <new profile name> <name of file or diretory> 

Your files, directories, or scripts will have your profile name as the owner. That means, no sudo (HA!) 

These are the scripts in prototype form.

  1. endsystem

  2. opendvd

  3. playdvd

  4. systemrestart

  5. update_debian

Most of them are of basic “command and argument” format, “do this on/to this”. Simple? Perhaps. But something happened. I took it a step further. I am now using the if-then-else statements. Rather than just following orders, you follow orders based on logical conditions. Lets look at the “playdvd” script as an example.





#This script will run vlc on DVD drive mounted in the /media folder as cdrom0

#If not, it will run vlc on dvd device /dev/sr0


[ -d /media/cdrom0 ]


vlc /media/cdrom0;


vlc /dev/sr0;




The if-then-else programming statements simply mean, if a condition is satisfied, execute a command on that condition, otherwise run the alternative if the condition is not.



[ -d /media/cdrom0 ]


vlc /media/cdrom0;”


This statement means “if the directory '/media/cdrom0' exists, then run 'vlc' on that directory. The “-d” switch represents a directory as I have come to understand. In fact, if you were to run, “#ls -al” on the “/usr” directory, you would see that same “d” switch in the output attributes of a directory.


ls -al

total 132

drwxr-xr-x 10 root root 4096 Jun 23 10:09 .

drwxr-xr-x 22 root root 4096 Aug 31 22:51 ..

drwxr-xr-x 2 root root 65536 Nov 8 08:52 bin

drwxr-xr-x 2 root root 4096 Jun 23 10:22 games

drwxr-xr-x 18 root root 4096 Jun 23 10:24 include

drwxr-xr-x 163 root root 20480 Nov 8 08:52 lib

drwxr-xr-x 10 root root 4096 Jun 23 10:09 local

drwxr-xr-x 2 root root 12288 Oct 27 14:47 sbin

drwxr-xr-x 277 root root 12288 Nov 8 08:52 share

drwxr-xr-x 6 root root 4096 Oct 21 14:23 src


If you look at the line ending with “games”, you will notice that it begins with a “d”. This “d” label means “directory”. Going back to the [ -d /media/cdrom0 ] code line, what we are saying, if you find the directory “-d” of “/media/cdrom0”, then run “vlc /media/cdrom0”.

The “then” statement tells the script what to do after the first condition has been met.


vlc /media/cdrom0”

The program looks for a directory named, “/media/cdrom0”. My dvd drive mounts itself in this directory whenever I insert a DVD or audio CD.

If for some reason, the directory “/media/cdrom0” does not exist, then the script must an. Alternative. “/dev/sr0” is the actual DVD/CD-ROM device. This line tells the script to run vlc on this directory if the first condition is not met.


vlc /dev/sr0;”



You must also end a conditional script with an “fi” which means “end if”, otherwise the program won't know when to quite.

For every script created, it must be made executable, meaning it has to look like something the shell has to run not read. The command “chmod” does just that. The “chmod” command tells the shell what type of file permissions to give a user or group. There are three types, execute, read and write. Well, I wanted to give myself execute permissions on this script. The shell then allows me to run the script as a program.

#sudo chmod u+x playdvd = “u” means “the user, “x” means execute. The “+” means add the permission.

This command tells the shell to make the “playdvd” file an execution program. When the shell reads the commands “playdvd” it will execute all the lines in the file and perform the action.

Me and my mouse need consulting. I am spending way too much time on the terminal than on the point-and-click device. Can't help it. All I have to do is press a three-key combination, terminal opens, and I type my desired program. I even stopped physically opening up the dvd drive. I type a command to do that, and a command to close it.

Looking at it from another perspective. I am learning how to operate my system with or without the mouse.

Click Here!