Python scripts vs Bash scripts in Linux

February 11, 2008
Almost all Linux users who are at least familiar with bash shell commands will be at home in writing simple bash scripts to automate tasks. For those who do not know how to write a bash script, here is how you do it.

Open a new file in your favorite text editor and save it in any name of your choice but with the extension .sh. For example, let us name it myfirstscript.sh . The sh file extension is not mandatory but is a nice way for us to later remember that this file is a script.
Now in this file (myfirstscript.sh), enter the following line.

#!/usr/bin/bash

This line should always be entered the first thing in any bash script you create. It lets the shell know where to find the bash program.

In some Linux distributions the bash command is located at /bin/bash.


When in doubt, use the which command to find the location as follows :

$ which bash
/usr/bin/bash


# Continuation of the above script ...
# Now lets enter a few commands in this script ...
ls -l
sleep 2
who
sleep 2
w

Nothing spectacular here. Note that sleep is used to pause the execution process for certain time in seconds. Next fire up a console (xterm, gnome-terminal ...) and set the executable bit for the script myfirstscript.sh as follows :

$ chmod u+x myfirstscript.sh

This lets you execute the script by its name as follows :

$ ./myfirstscript.sh

All this may seem easy.

But you can get added benefits if you substitute bash with Python language to write your scripts.

Noah Gift provides compelling reasons to pick up Python programming language skills and start writing your scripts in this language.

If you do not know Python language and is looking for some direction then you should look at the two books Core Python programming and Python phrasebook which will give you a head start in mastering this powerful but easy to learn language.

5 comments:

  • nice article for shell programmes to learn python,
    i not sure sleep as an internal command, sleep is an extrnal command.

    #whereis sleep
    sleep: /bin/sleep

    -prakash

  • Ravi

    Thanks Prakash. I stand corrected. :-)

  • The problem with python is that it's not universally available like bash. For example, if you're hosting a web site, you'll have to hunt down a web host provider that provides python--they don't all do.

    On the other hand, python is becoming very popular, so it might be worth it ...

  • Jerome Baum

    > #whereis sleep
    > sleep: /bin/sleep

    Please don't rely on that. Use "type":

    $ whereis test
    test: /bin/test /usr/bin/test /usr/share/man/man1/test.1.gz

    $ type test
    test is a shell builtin

    $ type -a test
    test is a shell builtin
    test is /usr/bin/test
    test is /bin/test

    See how "test" is actually a builtin, but whereis will return an external executable?