____________________________________________________________ ____________________________________________________________ ____________________________________________________________ [BUTTON Input] (not implemented)______________ [BUTTON Input] (not implemented)______ Comment goes here You should log in and post some comments! The link is up there in the toolbar. Go nuts! Programming in Linux Linux and CVS Checking for damage with rootkit hunter -- .emacs file like so: (add-to-list 'load-path "~/elisp/") (require 'auto-header) There is a section of the auto-header.el file that defines the characters that are used for commented areas for different programming languages. The headers for the file need to be inside a commented region at the beginning of your source code file. The file includes 20 different programming languages, but PHP, which I use a lot, is missing. So I just added an entry for it between Perl and Postscript: (perl-mode . ("#" "" "##" "#")) (php-mode . ("/*" "*/" " *" "*")) (postscript-mode . ("%" "" "%%" "%")) -- that it's going to make your work and your life a whole lot easier. Our First BASH Script The first thing that a BASH script needs is the proverbial 'shebang'. These are two characters: #! Following this, you should include the path to the BASH interpreter. So the first line of your script should look like this: #!/bin/bash If your default shell is BASH, the line: #!/bin/sh does the same thing. It's just a symbolic link to /bin/bash. But if -- From there on, you're free to do what the shell allows. Shell scripts created for administration purposes (which are the majority of scripts) are made up of lines that invoke other commands. Let's look at a simple example. Let's say you have email users on your system but you don't have a quota in place. Still, you want to monitor the sizes of the mailboxes to make sure that people aren't taking up more space than they should. This script, run from crontab, would do the trick nicely: Except for the shebang, comment lines start with # #!/bin/sh # show us the size of email spools email spools # date in YYYY-MM-DD format today=`date +%Y-%m-%0e`; # subject and recipient variables -- # end script First off, you'll see that we've declared some variables. These variables are not prefixed by any characters when declared but they are prefixed by the dollar sign ($) when used. You've also noticed that variables can be other commands, as in this example with the date command. When you use a command as a variable, it must be put inside backticks (` `). First, the script changes to the directory where the mail spools are located. The the scripts performs an 'ls' with options and presents a list where the biggest spools are displayed first with their size in human readable format. This is piped to awk, which sorts out the size and the user name. The awk output is grepped for those spools which are -- script with frequently used built in variables. #!/bin/sh echo "You are user $UID on $HOSTNAME" echo "Your home directory is: $HOME" echo "$HOSTNAME is running $OSTYPE" The output of this script should yield something similar to this: You are user 500 on penguin.linux.ork Your home directory is: /home/mike penguin.linux.ork is running linux-gnu As you can see, we didn't have to previously declare any of these. That's why they're known as built-in variables. Their use will save you a lot of time in writing your scripts. You can find a complete list of built-in variables in theGNU BASH Reference Manual Interactive Scripts Though we mentioned that the main use of BASH scripts is for automating administrative tasks, there may be times when you need users to interact with scripts. If you want a user to input information, you need to use the variableread. Let's take a look at the following example: #!/bin/sh echo -n "Enter the name of a city: " read CITY echo -n "$CITY is " case $CITY in -- After, we have several options for each case. If the user types in the name of a city we've contemplated here, he/she will be given a message as to where the city is. If not, the script will display a message that it doesn't know where the city is. Any answer is represented by the asterisk (*) Making Sure You Have What You Need If you have to manipulate the contents of a file, it's a good idea to check if this file exists first. Here is a simple BASH routine to do this using the if command: #!/bin/sh if test -f /var/log/mail.log; then printf "The file existsn"; fi -- #!/bin/sh PS3="Choose the number of the correct word to fill in the blank: " echo "The emergency brake let go and car rolled ______ the hill" select SENT1 in up down along beside do if [ "$SENT1" == "" ]; then echo -e "You need to enter somethingn" continue elif [ "$SENT1" != down ]; then echo -e "Sorry. Incorrectn" echo "1. Incorrect" >> eoiexam.dat elif [ "$SENT1" == down ]; then