500 likes | 1.03k Views
Introduction to UNIX and Shell Scripting. Course Coverage. Introduction to Unix and its architecture Learn to use basic Unix commands Learn to use vi editor Learn to write shell scripts Learn to register and run shell scripts from oracle applications. Introduction to Unix. What is UNIX ?
E N D
Course Coverage • Introduction to Unix and its architecture • Learn to use basic Unix commands • Learn to use vi editor • Learn to write shell scripts • Learn to register and run shell scripts from oracle applications
Introduction to Unix What is UNIX ? UNIX is an operating system co-created by AT&T Bell Labs researchers Dennis Ritchie and Ken Thompson in the late 1960s. Unix is a multitasking, multiuser, programming environment.
Unix Architecture Kernel – is the single large program which resides in the memory which is the operating system. It manages File system, Memory, I/O and Processes. Shell – is a command interpreter which provides the user interface for the UNIX operating system.
UNIX Flavors • HP-UX - HP UNIX developed by HP • SunOS and Solaris – Developed by Sun Microsystems • AIX – Developed by IBM • SCO Unix – Developed by SCO • Linux - Free Source code • BSD – Berkley Software Design
Types of Shells • Bourne shell (sh) • C shell (csh) • TC shell (tcsh) • Korn shell (ksh) • Bourne Again SHell (bash)
Summary of shell facilities * not the default setting for this shell
File Permissions There are three types of file access supported by UNIX. • r– read, view the contents of a file or a directory • w – write, edit file/directory contents • x– execute, run executable file
File Permissions For example: Suppose you type in ls -land the result is - rwxr-xr-- 1 user1oracle 858 Feb 22 22:28file1.txt owner type File name links Modification date/time group User permissions size Group permissions Other Permissions
UNIX Commands ls - List directory contents cd - Change the current directory cp - Copy files and directories mv - Move (rename) files mkdir - Make a directory rm - Remove files or directories (Use with Caution) rmdir – Delete a directory (Use with Caution) echo – Display a line of text
UNIX Commands cat – Concatenate files and print on the std output date – Print the system date and time head – Output the first part of files tail – Output the last part of files pwd – Print name of current/Working Directory man – Format and display the on-line manual pages who – Show who is logged on chmod - Change file access permissions
UNIX Commands grep – Print lines matching a pattern find – Search for files in a directory hierarchy diff – Find differences between two files ps - Report process status cut – Remove sections from each line of files su – run a shell with substitute user and group IDs wc - Print the number of bytes, words, and lines in files ln - Make links between files
UNIX Commands alias/unalias - Shorthand for a command or commands sort - Sort lines of text files exit – Exit the current shell with status shift – Shift positional parameters env – Display the environment variables logout - Exit a login shell
Unix Variables There are 2 types of variables in Unix. • Environment variables • Shell variables As per conventions environment variables will be in uppercase and Shell variables will be in lowercase. Example : APPL_TOP=/srv/115102/inst/visappl pathseg=/home/oracle/bin today=`date` export – to export the variable to the environment
I/O Redirection Redirection operators: Output redirection : >, |, >> Input redirection : < Example: cat test1 test2 > test3 cat test2 >> test1 ls –l | grep new sort < test.txt > sortedtest.txt
vi Text Editor – King of all editors vi – Visual text editor vi <file_name> - to open the any text file in vi editor. Two modes of vi • Command mode – Esc key • Insert mode – a or i
Some Simple VI Commands a - enter append mode i - enter insert mode h - move cursor left j - move cursor down k - move cursor up l - move cursor right x - delete char under cursor r - replace one character under the cursor u - undo the last change to the file
Some Simple VI Commands ^ - Goto the beginning of the line $ - Goto the end of the line [n]dd - delete line/lines from the cursor position [n]yy - yank (copy) line/lines from the cursor position p - paste the yanked line/lines below the cursor position ctrl-f - Scroll forwards one page ctrl-b - Scroll backwards one page :w - Save the file :q - quit vi
Shell scripting Conventionally, a shell script should start with a line: #!/bin/ksh Example shell script #!/bin/bash echo “Hello $USER” echo “Today is “ `date` echo “You are in directory $PWD” exit 0
Command line arguments Ex: ls –lrt, myshell.sh oracle $1 to $9 – will give the arguments 1 to 9. To get remaining we need to use shiftcommand. $@ - will give the complete list of all the arguments to that shell.
Shell scripting Conditionals, if/then/elif if list then list [elif list then list] ... [else list] fi Example: if [ $x -lt $y ] # is $x less than $y ? then echo “$y is greater than $x” fi
Shell scripting For loops for name in w1 w2 ... do command-list done Example: for X in red green blue do echo $X done
Shell scripting While Loops while command-list1 do command-list2 done Example: x=0 while [ $x -le 20 ] do echo $x x=`expr $x + 1` done
Default shell variables $? - returns 0 if the last command is executed successfully, else non zero. $# - returns the number of arguments. $! - returns the last command PID run in bg (using &) $$ - returns the current shell PID
Connect to DB and run a SQL sqlplus -s <userid>/<passwd>@<dbsid> @<filepath>/<filename> Example 1: sqlplus -s $UID/$PWD@$CONSTR@$EXECDIR/sql/oa_com_monitor_cmrun Example 2 : st_date=`sqlplus -s $UID/$PWD@$CONSTR << EOF set head off set feedback off select to_char(sysdate-15,'DD-MON-YYYY') from dual; EOF`
Steps to register a shell script The shell script can have either of the 2 extensions. .prog or .sh .prog : 1. Create a soft link to the shell without extension to $FND_TOP/bin/fndcpesr Ex: ln -s $FND_TOP/bin/fndcpesr $FND_TOP/bin/TEST 2. Grant execute permission to the both the files (.prog and the file without extension) Ex: chmod +x TEST.prog TEST .sh : No need to create a soft link.
Differences b/w .prog and .sh .prog: will get the following parameters as default to the shell. $1 - Connection string (userid/passwd@dbsid) $2 - Fnd user id $3 - Fnd user $4 - Request id .sh : will only get one parameter which as all the above along with some additional ones. Ex: FCP_REQID=250898 FCP_LOGIN="APPS/APPS" FCP_USERID=1117 FCP_USERNAME="SRVCMGR" FCP_PRINTER="noprint" FCP_SAVE_OUT=Y FCP_NUM_COPIES=0