#!/usr/bin/ksh
tail -f /ms/user/s/shettkus/bcp.C18.LedgerJournal.log | {
while read myline; do
lines_read=`echo $myline| cut -d ” ” -f 1`
expr $lines_read + 0 > /dev/null 2>&1
if [ $? -eq 0 ]
then
done=1.0;
done=`echo $done*100*$lines_read/108406239 | bc -l`
#done=$(($done*100))
int_done=$((100*$lines_read/108406239))
i=1
printf “|”
while [[ $i -le $int_done ]]
do
printf “#”
i=$(($i+1))
done
i=$(($int_done+1))
while [[ $i -le 100 ]]
do
printf ” “
i=$(($i+1))
done
printf “| “
printf “%.4f%%” $done
if [[ $int_done -eq 100 ]]
then
printf “\n”
exit
fi
printf “\b\b\b\b\b\b\b\b\b”
i=100
while [[ $i -ge 0 ]]
do
printf “\b”
i=$(($i-1))
done
printf “\b”
fi
done }
vimrc
June 11, 2008This is my .vimrc file:
hi Comment ctermfg=5
set nu
set ts=2
set ai
set foldmethod=marker
set foldcolumn=1
set foldtext=MyFoldText()
function MyFoldText()
let line=getline(v:foldstart)
let sub = substitute(line, ‘##{{{‘,”,’g')
return v:folddashes . sub
endfunction
highlight Folded ctermbg=0
highlight Folded ctermfg=7
highlight foldColumn ctermbg=0
highlight foldColumn ctermfg=7
Sendmail in a shell script
May 28, 2008Someone asked me to write a script that will send mails to a particular email id. I had not used any such script before. So I had to search quite a lot. Here is the simple shell script that will send mail to the specified email ids. Currently it does not support attachments.
#!/usr/bin/ksh
#———————————————————————-
# Name: SendMail
# Purpose: To send mails using the sendmail command
# Usage: SendMail
# Owner: Ketan Joshi
# Setting: Just change the variables at the start of the script to
# appropriate values. Create a message by modifying the string BODY
# You can even have html tags in the body.
# Limitation: Currently, this does not support attachments.
#——————————————————————–
#Temporary file for containing the mail message
tmp=/tmp/mail-body-`date +%F`;
touch $tmp && chmod 600 $tmp;
#Set up the various headers for sendmail to use
TO=’ketan.joshi@oracle.com,saurabh.abhishek@oracle.com’;
CC=”;
FROM=’ketan.joshi@yahoo.com’;
SUBJECT=’Test Mail’;
MIMEVersion=’1.0′;
CONTENTType=”text/html; charset=us-ascii”;
#Here write the content of your mail.
BODY=”
<b>Hello from ketan.</b>
This is test mail.
“;echo Sending the mail.
echo -e “To: $TO” > $tmp;
echo -e “Cc: $CC” >> $tmp;
echo -e “From: $FROM” >> $tmp;
echo -e “Content-Type: $CONTENTType”>>$tmp;
echo -e “MIME-Version: $MIMEVersion”>>$tmp;
echo -e “Subject: $SUBJECT”>>$tmp;
echo -e “Body: $BODY”>>$tmp;/usr/sbin/sendmail -t < $tmp;
rm -rf $tmp;
VI commands
May 24, 2008VI COMMANDS
I got this list somewhere on the net. I have not reviewed it completely, but at the first glance, this looks correct. Enjoy…
CURSOR & LINE POSITIONING
h Move left one character.
i Insert text move into insert mode before the current character.
j Move down one line.
k Move up one line.
l Move right one character.
0 Move to beginning of line.
$ Move to end of line.
Backspace Move left one character.
Enter Move to beginning of next line.
( Move backward one sentence.
) Move forward one sentence.
+ Move down to beginning of next line.
- Move upto the beginning of previous line.
G Move to last line in file.
nG Move to line no. n in file.
WORD POSITIONING
B Back up one space-delimited word.
b Back up one word.
W Move forward one space-delimited word.
w Move forward one word.
e Move to the end of the current word.
WINDOW POSITIONING
H Move to first line on screen i.e. “Home”.
M Move to middle line on screen.
L Move to last line on screen.
^f Move forward one screen of text.
^b Back up one screen of text.
^d Move down half a page.
^u Move up half a page.
TEXT EDITING
a Append text move into insert mode after the current character.
A Append text at end of current line.
i Inserts text at cursor.
I Inserts text at beginning of current line.
Esc Leave insert mode, return to command mode.
R Overwrite text from cursor position.
r Replace the current character with the next pressed.
O Open new line for insert above the current line.
o Open new line for insert below the current line.
U Undo replace current line if changed.
u Undo the last change made to the file.
:e file Edit a specified file without leaving vi.
C Change text through the end of line.
c Change text in the specified range cw changes the following word,
whereas c} changes the next paragraph.
{ Move backward one paragraph.
} Move forward one paragraph.
DELETION
x Delete a single character at current position.
X Delete to left of cursor.
dw Delete a word from cursor to the next space/punctuation.
dd Delete a line.
nx,ndw,ndd Delete n chars,n words,n lines.
d0 Delete line from cursor to beginning of line.
d$ Delete line from cursor to end of line.
MISCELLANEOUS
^g Show current line number and other information about the file.
^v Prevent vi from interpreting the next character.
^l Clears and redraws the current window.
:! Invoke specified UNIX command.
J Joins the line below current line with current line.
~ Changes current char to Upper case from lower case and vice versa.
:sh Return to Shell. Type exit to get back to vi.
. Repeats action performed by last command
!! Replace current line with output of UNIX command.
!} Replace current paragraph with the results of piping it through
the specified UNIX program or programs.
QUITTING
ZZ Write buffer to file and quit.
:w Write the edit buffer to the system.
:q Quit vi if changes have been written.
:q! Quit vi throwing away any changes made.
:w file Writes buffer to specified file.
: w! file Overwrites specified file with contents of buffer.
SEARCHING
/pattern Search forward for the next line using a specified pattern.
?pattern Search backward for the next line using a specified pattern.
n Repeats the last search command.
N Repeats search command in opposite direction.
BLOCK COMMANDS
:r file Read the contents of a specified file, including it in
the current edit buffer.
:m,n d Deletes lines from m to n.
:m,n mo p Moves lines m to n after line p.
:m,n co p Copies lines m to n after line p.
:m,n w file Writes lines m to n to specified file.
:m,n w>>file Appends lines m to n to specified file.
:r !command Execute shell command and output of command is read
at current position.
FIND AND REPLACE
:s/str1/str2 Replaces first occurence of str1 with str2 in current line.
:s/str1/str2/g Replaces all occurences of str1 with str2 in current line.
:m,n s/str1/str2/g range of command from m to n.
:1,$ s/str1/str2/g range of command from first to last line.
:.,$ s/str1/str2/g range of command from current line to last line.
:1,. s/str1/str2/g range of command from first line to last line.
DELETE AND PASTE
“nP To Paste nth latest deletion after current line.n range is 1-9.
“xdd,xndd,xdw,xndw Deletes 1 or n lines, words and stores in buffer named x.
(x can be any alphabet)
“xp Pastes from buffer named x at current cursor position.
COPY(Yank) AND PASTE
yw Yanks word from cursor position.
yy Yanks line from cursor position.
y$ Yanks line from cursor position to end of line.
Y0 Yanks line from cursor position to beginning of line.
nP Pastes nth latest yanked buffer. n range is 1-9.
“xyy,”xnyy Yanks 1/n lines to buffer named x.
“xyw,”xnyw Yanks 1/n words to buffer named x.
“xp Pastes buffer x at current position.
ABBREVIATION
:abbr a bcd Define abbreviation a for phrase bcd.
:abbr Show current abbreviations, if any.
:una a Unabbreviates the abbreviation a.
:map a bcd Map key a to the vi commands bcd.
:map Show current key mappings, if any.
MULTIPLE FILES
vi fn1,fn2,fn3 Loads fn1,fn2,fn3 into vi for editing.
:n Move to the next file in the file list.
:n! Move to next file in list without saving current file.
:rew Move to first file in list.
:rew! Move to first file in list without saving current file.
:args Displays file list in buffer.
:f Displays name of current file.
SET COMMANDS
:set nonu Turn off line numbering.(Default)
:set nu Turn on line numbering.
:set eb Turn Speaker on.(Default)
:set noeb Turn speaker Off.
:set ai Turn auto indent on.
:set noai Turn auto indent off.(Default)
:set ic Ignore case in Pattern search.
:set noic Do not Ignore case in Pattern search.(Default)
:set mesg Permit reciept of message from other terminals.
:set nomesg Do not recieve messages. (Default)
:set showmode Display current working mode.
:set noshowmode Do not display current working mode.(Default)
:set aw Auto write buffer to disk before switching to next file.
:set noaw Do not write buffer to disk before switching to next file.(Default)
Taking backup of your files
May 22, 2008Here is a small script that will automatically create a backup directory and take a backup of your files.
The script needs many improvements but, in its simplest form, I found it useful. I’ll improve it as and when I get some time.
#! /usr/bin/ksh
echo “Backing up $1″;
file=$1;
vDate=`date +%Y%m%d_%H%M%S%p`;
# User can mention relative or full path of the filename.
# in this case, extract the basename.
#fileName=split(‘/’,$1)
newFile=${file%\.*}_$vDate.${file##*.};
if [[ $1 = "" ]]
then
echo “Usage: backup <filename>”
exit;
fi
if ! [ -d 'bkp' ]
then
echo “bkp directory is not present. Creating the same.”
mkdir bkp;
fi
echo “copying $1 to bkp/${newFile}”;
cp $1 ./bkp/${newFile};
chmod -wx ./bkp/${newFile};
How to use this?
I have saved this script as “backup” and given it execute permission.
To take a backup of a file, run the following command at command prompt:
$ backup <filename>
This will first check if a directory “bkp” is present in the current directory. If not, it will create it and copy the file to it with name changed to reflect the date and time of copying.
Currently, it handles only one file at a time, I need to modify this to handle multiple files. But I guess I will do that in Perl instead of shell as it looks simpler.
Posted by KeJo
Posted by KeJo
Posted by KeJo