Quantcast
Channel: Linux Candy » homepost
Viewing all articles
Browse latest Browse all 10

Shelling out some $hell $cripts! Part 2

$
0
0

Hey Guys ‘n’ Gals! Welcome to part 2 of the LinuxCandy Shell Scripting Tutorials! Its been quite some time, and I’ve been dying to post this one! Some really good suggestions were given in the last post, and I’ll be doing some more basics in this post.

What will we learn today?
     In today’s post, we will learn a little bit about the plethora of text editors available for you in Linux. This post is pretty important, as learning the intricacies of terminal-based editing is a very useful skill when you learn to use shell scripting. When I am done with you guys, you ought to be able to edit files in the terminal, even in your sleep!

Lets Get Cracking Then . . . .
       Editing is one of the most common things that you, as a shell scripting programmer will be doing. Most of you guys are probably using the popular gui-based tool called G-edit in Gnome based systems, or K-write if using KDE. However, since your work involves deploying your scripts from the terminal itself, don’t you think it will be better to be able to edit directly from the terminal itself?

I Hear You, So What Next?
       When it comes to terminal-based text editing, there are some tools that rule the roost :  vi Editor (improved version is called vim or vi-Improved), nano & cat. From what I have seen, for beginners, the easiest would be nano, while vim has a steep learning curve, and is not so easy for beginners to work with. However, vim is quite powerful, and so is nano, and in the end, its a personal choice. I use both nano and vi, and am partial to nano for reasons that will become obvious in the coming sections.

So, vim, eh?
      Vi editor, is a really powerful text editor and is pretty much all you need to start shell script writing.

When VIM is started

This is how your terminal will look when you type “vi” or “vim” in your shell prompt. This screen welcomes you and provides a set of basic commands that you can use to work with vim.  However, as enthusiastic as you may be, refrain from typing them out directly.  there are certain modes of vim that you need to know before starting:

ESC key is your best friend…
     The Escape Key is  the most useful key to help you get out of a sticky situation. In case you find that your key presses are not doing what you think they should, pressing the escape key brings you into the normal mode, where you can decide what to do next.

a. Normal Mode: This is the mode in which vim usually opens. You use this mode to go into the other modes. Pressing the Escape key will bring you to the normal mode.

b. Command Mode: In this mode, you enter the various commands that can be used with vi. The command mode is just an extension of the normal mode. Also called as the last line mode, as the commands you enter in this mode are visible in the bottom most line of the editor. the commands may be saving, exiting or other specific commands.

c. Insert Mode: This is the mode in which you enter the text that forms the document you are creating. All the lines of code are to be entered in this mode.

Now that all that boring stuff is over, lets get to the interesting part.   Lets open/create a file in vi

we open the file as shown in this screenshot. Note that vi will open the file if it already exists, and will create an empty new file if it does not exist.

vi <filename>

Once it opens, you will find yourself unable to type anything. That is because you are in normal mode. Enter into insert mode by pressing any of the following keys:

i  -  Simply inserts text at cursor position (Most common button you will use)
I –  Inserts the new text at the beginning of the line on which your cursor is positioned.
a  - This adds text after the cursor.
A – This one adds your text at the ending of the line on which your cursor is positioned.
o – Opens up a new line below the current line for you to add the new text.
O – Opens up a new line above the current line for you to add the new text.
s  - Substitutes the letter underneath the cursor with letter you type to  insert text.
S  or c –  This Deletes the current line and substitutes it with text that you then type.
R or C  - This one replaces the current text with whatever text you then type.

Other than these options, you could use the [INSERT] key on your keyboard to enter the text. Take care, however, as the INSERT key acts as a toggle between [INSERT] and [REPLACE], as shown in the 2 screenshots below [Screenshot3,4]

This key first enters into INSERT mode when pressed once, and if pressed once more, starts replacing the text with new text.

Point to Ponder over:  Once you start using vi for coding, you  will often find yourself correcting the first line because you forgot to enter into inert mode before typing. For example, in C/C++ you would usually start with “#include<*.h>” but when you forget to enter into insert mode, you will find that your line looks like “nclude<*.h>“. Why? Because Vim did not recognize “#”, but took the next letter “i”, as a command to enter insert mode, and the rest is history. Take care about that.

Now lets type up a simple shell script that greets the user. Type out the shell script as shown here in the vi editor in Insert mode.

#!/bin/bash
echo hello world
echo "Welcome to the Shell Scripting Tutorial"
echo "We hope, dear $USER, that you will enjoy your stay"

Now that the text is all typed, we need to save it. Do this by pressing the ESC key to enter normal mode, and then press “:” (colon) to enter the command mode. You will notice that the “:” symbol will show up at the bottom-most line of the window. This means that the vim editor is expecting a command from you.

The Saving/Exiting commands are:

:w  - Save the current file.
:w <filenename> – Save the current contents into a new file. (Does not save changes made to original file)
:q – Quit vim
:wq – Save and then Quit vim
:q! – Quit without saving any changes made since last save.

That is the basic stuff completed.  Lets now move on to the other popular editor, nano.  We will learn more about vim as we go along.

Lets save and exit vim with the command

:wq

Here comes Nano!

Open the same text file now in nano. This can be done as you usually would:

nano <filename>

When Nano opens up, we can directly set about typing the text without worrying about modes. Just set your cursor to the spot you want, and type away! Also, nano is helpful in that it provides a set of commands at the bottom, for quick reference.

Add the following parts at the end of the script.

echo "your current working directory is `pwd`"
echo "Thank you for running this script!"

A little bit about the script: In this Shell Script, we have used the word “$USER” which is a special variable. In shell scripting, a variable’s content can be obtained by using the ‘$’ symbol as a prefix to the variable. For example, “echo $HOME” would display the current user’s home  directory path, and “echo $USER” would display the username of the current user who runs the script. That shows how your script can be used in a flexible way, without having to type out specific scripts for each user. Also, note that we have used double quotes for the second echo statement, but not for the first. These work the same way, but using double quotes with echo is generally good programming practice. We will learn about weak and hard quoting in the upcoming parts of this series. BackQuote can be used to nest one command in another command, as shown in the line 5, where “pwd” command is nested in the echo. Go ahead, run this and see what you get.

 Now that we have finished typing, we save the file by pressing ctrl+O, [or press ctrl+x to save and quit],
As soon as you type ctrl+x/ctrl+o, you will be asked the filename to save as. The default filename is already there, and if you don’t want to create a new file, you can simply press “Y” to save the file. Otherwise, you can change the name and then press “Y” to save in a different name, without modifying the original file.
Once saved, nano will exit (if ctrl+x) or will come back to the editing mode so as to allow you to continue typing(ctrl+o).
Colorize your text!
Yes, both vim and nano right now look as colored as a black and white pic, but you can change all that. both these powerful editors can recognize code and color the different parts in a logical fashion. Here’s how to do this
In vim:
         In normal mode,  type
:syntax on
Thats it. Your syntax will be color-highlighted. Also, you can disable this feature by using
:syntax off 

In nano:
         Enabling this feature in nano is a little different:
Firstly, open the file “/etc/nanorc” in your favorite editor.

Find the commented lines(starting with #) that begin with programming language names,  as shown here

And uncomment the languages for which you need syntax highlighting. For shell Scripting, uncomment the Bourne Shell Scripts line, which goes

include "/usr/share/nano/sh.nanorc"
Thats it! Syntax Color Highlighting will now be enabled!


The next time you open a file in nano, if you use a dark color combo, you may not like the color highlighting. This can be remedied by changing the terminal profile preference as shown here

Note that both vi and nano detect code content even in files that have a txt extension! Pretty powerful, eh?

Line Numbers Display!
          The two editors can also show line numbers, which is a life saver for us programmers, for debugging, and for gloating to our friends about the number of lines we coded today! :P
So here’s how to do this in both the editors
In vim:
         In normal mode,  type
:set nu
Thats it. Your line numbers will become visible!.
Also, you can disable line numbers by using
:set nu! or
:set nonu

In nano:
      While opening a file, open it with the -c switch, like below:

nano -c <filename> 

      Note that Nano displays line numbers at the bottom, while VIM displays them at the beginning of each line
 The CAT that ate the canary . . . .
          The first 2 editors were powerful, and flexible. cat, however, isn’t flexible, but is very useful for those times when slight modifications are all that you need to do.
cat is simple to use, and has 3 modes of use:
1. View the contents of a file
      You can peep into a file just by using
cat filename
this reads the file and simply displays the content on the terminal screen; no editing can be done.
2. Create a new file :
You can create a new file by using the command
cat > filename
Here, the single > symbol tells cat to create the file with the specified filename. If the file already exists, beware, the file will be replaced, and without a single warning of any kind.
3. Append: 
     If you only want to add some extra content at the end of the file, you can use cat like so:
cat >> filename
here, whatever you type gets added at the end of the file.
Saving and Exiting
       In cat, all you have to do is use the ctrl+c sequence to save and exit. Remember to  press enter once and go to a new line before using ctrl+c, or else, the last line you typed will not be registered.
Now this brings us to the end of another session! I hope you guys enjoyed learning as much as I enjoyed writing this article.
:)
Peace Out!
Looking forward to your comments below!
Terminal icon Pic Courtesy: http://blog.tice.de/

Viewing all articles
Browse latest Browse all 10

Trending Articles