SlideShare a Scribd company logo
UNIX Shell-Scripting Basics
Agenda What is a shell?  A shell script? Introduction to  bash Running Commands Applied Shell Programming
What is a shell? % ▌
What is a shell? /bin/bash
What is a shell? #!/bin/bash
What is a shell? INPUT shell OUTPUT ERROR
What is a shell? Any Program But there are a few popular shells…
Bourne Shells /bin/sh /bin/bash “Bourne-Again Shell” Steve Bourne
Other Common Shells C Shell ( /bin/csh ) Turbo C Shell ( /bin/tcsh ) Korn Shell ( /bin/ksh )
An aside: What do I mean by /bin ? C Shell ( /bin/csh ) Turbo C Shell ( /bin/tcsh ) Korn Shell ( /bin/ksh )
An aside: What do I mean by /bin ? /bin, /usr/bin, /usr/local/bin /sbin, /usr/sbin, /usr/local/sbin /tmp /dev /home/borwicjh
What is a Shell Script? A Text File With Instructions Executable
What is a Shell Script? % cat > hello.sh <<MY_PROGRAM #!/bin/sh echo ‘Hello, world’ MY_PROGRAM % chmod +x hello.sh % ./hello.sh Hello, world
What is a Shell Script?  A Text File % cat > hello.sh <<MY_PROGRAM #!/bin/sh echo ‘Hello, world’ MY_PROGRAM % chmod +x hello.sh % ./hello.sh Hello, world
An aside: Redirection cat > /tmp/myfile cat >> /tmp/myfile cat 2> /tmp/myerr cat < /tmp/myinput cat  <<INPUT Some input INPUT cat > /tmp/x  2>&1 0 1 2 INPUT env OUTPUT ERROR
What is a Shell Script?  How To Run % cat > hello.sh <<MY_PROGRAM #!/bin/sh echo ‘Hello, world’ MY_PROGRAM % chmod +x hello.sh % ./hello.sh Hello, world
What is a Shell Script?  What To Do % cat > hello.sh <<MY_PROGRAM #!/bin/sh echo ‘Hello, world’ MY_PROGRAM % chmod +x hello.sh % ./hello.sh Hello, world
What is a Shell Script?  Executable % cat > hello.sh <<MY_PROGRAM #!/bin/sh echo ‘Hello, world’ MY_PROGRAM % chmod +x hello.sh % ./hello.sh Hello, world
What is a Shell Script?  Running it % cat > hello.sh <<MY_PROGRAM #!/bin/sh echo ‘Hello, world’ MY_PROGRAM % chmod +x hello.sh % ./hello.sh Hello, world
Finding the program: PATH % ./hello.sh echo  vs.  /usr/bin/echo % echo $PATH /bin:/usr/bin:/usr/local/bin: /home/borwicjh/bin % which echo /usr/bin/echo
Variables and the Environment % hello.sh bash: hello.sh: Command not found % PATH=“$PATH:.” % hello.sh Hello, world
An aside: Quoting % echo  ‘ $USER ’ $USER % echo  “ $USER ” borwicjh % echo “ \” ” ” % echo “deacnet \\ sct” deacnet\sct % echo  ‘ \” ’ \”
Variables and the Environment % env […variables passed to sub-programs…] % NEW_VAR=“Yes” % echo $NEW_VAR Yes % env […PATH but not NEW_VAR…] % export NEW_VAR % env […PATH and NEW_VAR…]
Welcome to Shell Scripting! Shebang! The Environment PATH Input, Output, and Error chmod
How to Learn man man bash man cat man man man –k man –k manual Learning the Bash Shell , 2 nd  Ed. “ Bash Reference” Cards http://www.tldp.org/LDP/abs/html/
Introduction to  bash
Continuing Lines: \ % echo This \ Is \ A \ Very \ Long \ Command Line This Is A Very Long Command Line %
Exit Status $? 0 is True % ls /does/not/exist % echo $? 1 % echo $? 0
Exit Status:  exit % cat > test.sh <<_TEST_ exit 3 _TEST_ % chmod +x test.sh % ./test.sh % echo $? 3
Logic: test % test 1 -lt 10 % echo $? 0 % test 1 == 10 % echo $? 1
Logic: test test [ ] [ 1 –lt 10 ]  [[ ]] [[ “this string” =~ “this” ]] (( )) (( 1 < 10 ))
Logic: test [ -f /etc/passwd ] [ ! –f /etc/passwd ] [ -f /etc/passwd –a –f /etc/shadow ] [ -f /etc/passwd –o –f /etc/shadow ]
An aside:  $(( ))  for Math % echo $(( 1 + 2 )) 3 % echo $(( 2 * 3 )) 6 % echo $(( 1 / 3 )) 0
Logic: if if  something then : # “elif” a contraction of “else if”: elif  something-else then : else then : fi
Logic: if if  [ $USER –eq “borwicjh” ] then : # “elif” a contraction of “else if”: elif  ls /etc/oratab then : else then : fi
Logic: if # see if a file exists if  [ -e /etc/passwd ] then echo “/etc/passwd exists” else echo “/etc/passwd not found!” fi
Logic: for for i in 1 2 3 do echo $i done
Logic: for for i in  /* do echo “Listing $i:” ls -l $i read done
Logic: for for i in /* do echo “Listing $i:” ls -l $i read done
Logic: for for i in /* do echo “Listing $i:” ls -l $i read done
Logic: C-style for for (( expr1  ; expr2  ; expr3  )) do list done
Logic: C-style for LIMIT=10 for ((  a=1   ; a<=LIMIT  ; a++  )) do echo –n “$a ” done
Logic: while while  something do : done
Logic: while a=0; LIMIT=10 while [  &quot;$a&quot; -lt &quot;$LIMIT&quot;  ] do echo -n &quot;$a ” a=$(( a + 1 )) done
Counters COUNTER=0 while [ -e “$FILE.COUNTER” ] do COUNTER=$(( COUNTER + 1)) done Note: race condition
Reusing Code: “Sourcing” % cat > /path/to/my/passwords <<_PW_ FTP_USER=“sct” _PW_ % echo $FTP_USER %  .  /path/to/my/passwords % echo $FTP_USER sct %
Variable Manipulation % FILEPATH=/path/to/my/output.lis % echo $FILEPATH /path/to/my/output.lis % echo ${FILEPATH %.lis } /path/to/my/output % echo ${FILEPATH #*/ } path/to/my/output.lis % echo ${FILEPATH ##*/ } output.lis
It takes a long time to become a bash guru…
Running Programs
Reasons for Running Programs Check Return Code $? Get Job Output OUTPUT=`echo “Hello”` OUTPUT=$(echo “Hello”) Send Output Somewhere Redirection:  < ,  > Pipes
Pipes Lots of Little Tools echo “Hello”  |  \ wc -c INPUT echo OUTPUT ERROR 0 1 2 INPUT wc OUTPUT ERROR 0 1 2 A Pipe!
Email Notification % echo “Message” | \ mail –s “Here’s your message” \ [email_address]
Dates % DATESTRING=`date +%Y%m%d` % echo $DATESTRING 20060125 % man date
FTP the Hard Way ftp –n –u server.wfu.edu <<_FTP_ user  username password put FILE _FTP_
FTP with  wget wget \ ftp://user:pass@server.wfu.edu/file wget –r \ ftp://user:pass@server.wfu.edu/dir/
FTP with  curl curl –T upload-file \ -u username:password \ ftp://server.wfu.edu/dir/file
Searching:  grep % grep rayra /etc/passwd % grep –r rayra /etc % grep –r RAYRA /etc % grep –ri RAYRA /etc % grep –rli rayra /etc
Searching:  find %  find /home/borwicjh \ -name ‘*.lis’ [all files matching *.lis] % find /home/borwicjh \ -mtime -1 –name ‘*.lis’ [*.lis, if modified within 24h] % man find
Searching:  locate % locate .lis [files with .lis in path] % locate log [also finds “/var/log/messages”]
Applied Shell Programming
Make Your Life Easier TAB completion Control+R history cd - Study a UNIX Editor
pushd/popd % cd /tmp %  pushd  /var/log /var/log /tmp % cd .. % pwd /var %  popd /tmp
Monitoring processes ps ps –ef ps –u oracle ps –C sshd man ps
“DOS” Mode Files #!/usr/bin/bash^M FTP transfer in ASCII, or dos2unix infile > outfile
sqlplus JOB=“ZZZTEST” PARAMS=“ZZZTEST_PARAMS” PARAMS_USER=“BORWICJH” sqlplus $BANNER_USER/$BANNER_PW << _EOF_ set serveroutput on set sqlprompt &quot;&quot; EXECUTE WF_SATURN.FZ_Get_Parameters('$JOB', '$PARAMS', '$PARAMS_USER'); _EOF_
sqlplus sqlplus $USER/$PASS @$FILE_SQL \ $ARG1 $ARG2 $ARG3 if [ $? –ne 0 ] then exit 1 fi if [  -e /file/sql/should/create  ] then […use SQL-created file…] fi Ask Amy Lamy!  
Passing Arguments % cat > test.sh <<_TEST_ echo “Your name is \ $1  \ $2 ” _TEST_ % chmod +x test.sh % ./test.sh John Borwick ignore-this Your name is John Borwick
INB Job Submission Template $1 : user ID $2 : password $3 : one-up number $4 : process name $5 : printer name % /path/to/your/script $UI $PW \ $ONE_UP $JOB $PRNT
Scheduling Jobs % crontab -l 0 0 * * * daily-midnight-job.sh 0 * * * * hourly-job.sh * * * * * every-minute.sh 0 1 * * 0 1AM-on-sunday.sh %  EDITOR=vi  crontab –e % man  5  crontab
It's Over!
Other Questions? Shells and Shell Scripts bash Running Commands bash  and Banner in Practice

More Related Content

PDF
Course 102: Lecture 20: Networking In Linux (Basic Concepts)
PDF
XPDS13: Xen in OSS based In–Vehicle Infotainment Systems - Artem Mygaiev, Glo...
PPTX
Cgroups, namespaces and beyond: what are containers made from?
PPTX
Kubernetes for Beginners: An Introductory Guide
PDF
How to write a Dockerfile
PDF
docker installation and basics
PDF
Docker containers : introduction
PDF
Course 102: Lecture 2: Unwrapping Linux
Course 102: Lecture 20: Networking In Linux (Basic Concepts)
XPDS13: Xen in OSS based In–Vehicle Infotainment Systems - Artem Mygaiev, Glo...
Cgroups, namespaces and beyond: what are containers made from?
Kubernetes for Beginners: An Introductory Guide
How to write a Dockerfile
docker installation and basics
Docker containers : introduction
Course 102: Lecture 2: Unwrapping Linux

What's hot (20)

PDF
Docker in real life
PDF
Docker internals
PPT
A Quick Introduction to Linux
PDF
Evolution of containers to kubernetes
PDF
BigData_Chp5: Putting it all together
PPT
Best practices in deploying IBM Operation Decision Manager Standard 8.8.0
PDF
Gitlab CI : Integration et Déploiement Continue
PDF
Diving Through The Layers: Investigating runc, containerd, and the Docker eng...
PDF
Android ipm 20110409
PDF
Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...
PPT
coursMerise.ppt
PDF
Android IPC Mechanism
PPT
Red Hat Certified engineer course
PPTX
Multiprocessor system
PPTX
Docker 101 - Nov 2016
PPT
Basic Linux Internals
ODP
Kubernetes Architecture
PDF
Docker multi-stage build
PDF
Docker 101: An Introduction
PDF
Docker and Kubernetes 101 workshop
Docker in real life
Docker internals
A Quick Introduction to Linux
Evolution of containers to kubernetes
BigData_Chp5: Putting it all together
Best practices in deploying IBM Operation Decision Manager Standard 8.8.0
Gitlab CI : Integration et Déploiement Continue
Diving Through The Layers: Investigating runc, containerd, and the Docker eng...
Android ipm 20110409
Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...
coursMerise.ppt
Android IPC Mechanism
Red Hat Certified engineer course
Multiprocessor system
Docker 101 - Nov 2016
Basic Linux Internals
Kubernetes Architecture
Docker multi-stage build
Docker 101: An Introduction
Docker and Kubernetes 101 workshop
Ad

Viewers also liked (12)

PPTX
BMC Control M Advantage
PPTX
The Power of Simple: Whats New in BMC Control-M 8
PPT
Unix/Linux Basic Commands and Shell Script
PPT
Shell Scripting in Linux
PDF
Quick start bash script
ODP
OpenGurukul : Language : Shell Scripting
PDF
Intro to Linux Shell Scripting
PDF
Unix Shell Scripting
PPT
Basic command ppt
PDF
Let us c(by yashwant kanetkar) chapter 2 solution
PPT
Linux command ppt
PPTX
Linux ppt
BMC Control M Advantage
The Power of Simple: Whats New in BMC Control-M 8
Unix/Linux Basic Commands and Shell Script
Shell Scripting in Linux
Quick start bash script
OpenGurukul : Language : Shell Scripting
Intro to Linux Shell Scripting
Unix Shell Scripting
Basic command ppt
Let us c(by yashwant kanetkar) chapter 2 solution
Linux command ppt
Linux ppt
Ad

Similar to Unix Shell Scripting Basics (20)

PPT
Unix Shell Scripting Basics
PPTX
Unix shell scripting basics
PPT
Unix And Shell Scripting
DOCX
What is a shell script
PDF
Shell scripting
PPT
PPT
Shell programming
PPT
ShellProgramming and Script in operating system
PPTX
First steps in C-Shell
PPTX
Shell & Shell Script
PPTX
Shell & Shell Script
PDF
PPT
34-shell-programming asda asda asd asd.ppt
DOCX
Quize on scripting shell
PPTX
Scripting 101
PPTX
Shell scripting
PPTX
Bash shell scripting
PPT
34-shell-programming.ppt
Unix Shell Scripting Basics
Unix shell scripting basics
Unix And Shell Scripting
What is a shell script
Shell scripting
Shell programming
ShellProgramming and Script in operating system
First steps in C-Shell
Shell & Shell Script
Shell & Shell Script
34-shell-programming asda asda asd asd.ppt
Quize on scripting shell
Scripting 101
Shell scripting
Bash shell scripting
34-shell-programming.ppt

More from Dr.Ravi (20)

PDF
Corporate Overview
PDF
Excel For The Ceo
PDF
Project Specs Pf
PDF
Pf Day5
PDF
Assignments Programming Fundamentals
PDF
Hdd Chssc
PDF
Chssc Day3
PDF
Chssc Day1
PDF
Pf Day3
PDF
Ldd Pf
PDF
Chssc Assignments
PDF
Chssc Day4
PDF
Chssc Day2
PPT
Talk Unix Shell Script
PPT
Shell Scripts
PPT
Chap06
PPT
Airlover 20030324 1
PPT
Unix Basics
PPT
Unix Lec2
PDF
Unix Book
Corporate Overview
Excel For The Ceo
Project Specs Pf
Pf Day5
Assignments Programming Fundamentals
Hdd Chssc
Chssc Day3
Chssc Day1
Pf Day3
Ldd Pf
Chssc Assignments
Chssc Day4
Chssc Day2
Talk Unix Shell Script
Shell Scripts
Chap06
Airlover 20030324 1
Unix Basics
Unix Lec2
Unix Book

Recently uploaded (20)

PPTX
Spectroscopy.pptx food analysis technology
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
MYSQL Presentation for SQL database connectivity
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
KodekX | Application Modernization Development
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Machine learning based COVID-19 study performance prediction
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PPTX
Big Data Technologies - Introduction.pptx
PPTX
Cloud computing and distributed systems.
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Spectroscopy.pptx food analysis technology
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Diabetes mellitus diagnosis method based random forest with bat algorithm
Unlocking AI with Model Context Protocol (MCP)
Review of recent advances in non-invasive hemoglobin estimation
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
MYSQL Presentation for SQL database connectivity
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Chapter 3 Spatial Domain Image Processing.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
KodekX | Application Modernization Development
“AI and Expert System Decision Support & Business Intelligence Systems”
20250228 LYD VKU AI Blended-Learning.pptx
Machine learning based COVID-19 study performance prediction
MIND Revenue Release Quarter 2 2025 Press Release
Big Data Technologies - Introduction.pptx
Cloud computing and distributed systems.
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows

Unix Shell Scripting Basics

  • 2. Agenda What is a shell? A shell script? Introduction to bash Running Commands Applied Shell Programming
  • 3. What is a shell? % ▌
  • 4. What is a shell? /bin/bash
  • 5. What is a shell? #!/bin/bash
  • 6. What is a shell? INPUT shell OUTPUT ERROR
  • 7. What is a shell? Any Program But there are a few popular shells…
  • 8. Bourne Shells /bin/sh /bin/bash “Bourne-Again Shell” Steve Bourne
  • 9. Other Common Shells C Shell ( /bin/csh ) Turbo C Shell ( /bin/tcsh ) Korn Shell ( /bin/ksh )
  • 10. An aside: What do I mean by /bin ? C Shell ( /bin/csh ) Turbo C Shell ( /bin/tcsh ) Korn Shell ( /bin/ksh )
  • 11. An aside: What do I mean by /bin ? /bin, /usr/bin, /usr/local/bin /sbin, /usr/sbin, /usr/local/sbin /tmp /dev /home/borwicjh
  • 12. What is a Shell Script? A Text File With Instructions Executable
  • 13. What is a Shell Script? % cat > hello.sh <<MY_PROGRAM #!/bin/sh echo ‘Hello, world’ MY_PROGRAM % chmod +x hello.sh % ./hello.sh Hello, world
  • 14. What is a Shell Script? A Text File % cat > hello.sh <<MY_PROGRAM #!/bin/sh echo ‘Hello, world’ MY_PROGRAM % chmod +x hello.sh % ./hello.sh Hello, world
  • 15. An aside: Redirection cat > /tmp/myfile cat >> /tmp/myfile cat 2> /tmp/myerr cat < /tmp/myinput cat <<INPUT Some input INPUT cat > /tmp/x 2>&1 0 1 2 INPUT env OUTPUT ERROR
  • 16. What is a Shell Script? How To Run % cat > hello.sh <<MY_PROGRAM #!/bin/sh echo ‘Hello, world’ MY_PROGRAM % chmod +x hello.sh % ./hello.sh Hello, world
  • 17. What is a Shell Script? What To Do % cat > hello.sh <<MY_PROGRAM #!/bin/sh echo ‘Hello, world’ MY_PROGRAM % chmod +x hello.sh % ./hello.sh Hello, world
  • 18. What is a Shell Script? Executable % cat > hello.sh <<MY_PROGRAM #!/bin/sh echo ‘Hello, world’ MY_PROGRAM % chmod +x hello.sh % ./hello.sh Hello, world
  • 19. What is a Shell Script? Running it % cat > hello.sh <<MY_PROGRAM #!/bin/sh echo ‘Hello, world’ MY_PROGRAM % chmod +x hello.sh % ./hello.sh Hello, world
  • 20. Finding the program: PATH % ./hello.sh echo vs. /usr/bin/echo % echo $PATH /bin:/usr/bin:/usr/local/bin: /home/borwicjh/bin % which echo /usr/bin/echo
  • 21. Variables and the Environment % hello.sh bash: hello.sh: Command not found % PATH=“$PATH:.” % hello.sh Hello, world
  • 22. An aside: Quoting % echo ‘ $USER ’ $USER % echo “ $USER ” borwicjh % echo “ \” ” ” % echo “deacnet \\ sct” deacnet\sct % echo ‘ \” ’ \”
  • 23. Variables and the Environment % env […variables passed to sub-programs…] % NEW_VAR=“Yes” % echo $NEW_VAR Yes % env […PATH but not NEW_VAR…] % export NEW_VAR % env […PATH and NEW_VAR…]
  • 24. Welcome to Shell Scripting! Shebang! The Environment PATH Input, Output, and Error chmod
  • 25. How to Learn man man bash man cat man man man –k man –k manual Learning the Bash Shell , 2 nd Ed. “ Bash Reference” Cards http://www.tldp.org/LDP/abs/html/
  • 27. Continuing Lines: \ % echo This \ Is \ A \ Very \ Long \ Command Line This Is A Very Long Command Line %
  • 28. Exit Status $? 0 is True % ls /does/not/exist % echo $? 1 % echo $? 0
  • 29. Exit Status: exit % cat > test.sh <<_TEST_ exit 3 _TEST_ % chmod +x test.sh % ./test.sh % echo $? 3
  • 30. Logic: test % test 1 -lt 10 % echo $? 0 % test 1 == 10 % echo $? 1
  • 31. Logic: test test [ ] [ 1 –lt 10 ] [[ ]] [[ “this string” =~ “this” ]] (( )) (( 1 < 10 ))
  • 32. Logic: test [ -f /etc/passwd ] [ ! –f /etc/passwd ] [ -f /etc/passwd –a –f /etc/shadow ] [ -f /etc/passwd –o –f /etc/shadow ]
  • 33. An aside: $(( )) for Math % echo $(( 1 + 2 )) 3 % echo $(( 2 * 3 )) 6 % echo $(( 1 / 3 )) 0
  • 34. Logic: if if something then : # “elif” a contraction of “else if”: elif something-else then : else then : fi
  • 35. Logic: if if [ $USER –eq “borwicjh” ] then : # “elif” a contraction of “else if”: elif ls /etc/oratab then : else then : fi
  • 36. Logic: if # see if a file exists if [ -e /etc/passwd ] then echo “/etc/passwd exists” else echo “/etc/passwd not found!” fi
  • 37. Logic: for for i in 1 2 3 do echo $i done
  • 38. Logic: for for i in /* do echo “Listing $i:” ls -l $i read done
  • 39. Logic: for for i in /* do echo “Listing $i:” ls -l $i read done
  • 40. Logic: for for i in /* do echo “Listing $i:” ls -l $i read done
  • 41. Logic: C-style for for (( expr1 ; expr2 ; expr3 )) do list done
  • 42. Logic: C-style for LIMIT=10 for (( a=1 ; a<=LIMIT ; a++ )) do echo –n “$a ” done
  • 43. Logic: while while something do : done
  • 44. Logic: while a=0; LIMIT=10 while [ &quot;$a&quot; -lt &quot;$LIMIT&quot; ] do echo -n &quot;$a ” a=$(( a + 1 )) done
  • 45. Counters COUNTER=0 while [ -e “$FILE.COUNTER” ] do COUNTER=$(( COUNTER + 1)) done Note: race condition
  • 46. Reusing Code: “Sourcing” % cat > /path/to/my/passwords <<_PW_ FTP_USER=“sct” _PW_ % echo $FTP_USER % . /path/to/my/passwords % echo $FTP_USER sct %
  • 47. Variable Manipulation % FILEPATH=/path/to/my/output.lis % echo $FILEPATH /path/to/my/output.lis % echo ${FILEPATH %.lis } /path/to/my/output % echo ${FILEPATH #*/ } path/to/my/output.lis % echo ${FILEPATH ##*/ } output.lis
  • 48. It takes a long time to become a bash guru…
  • 50. Reasons for Running Programs Check Return Code $? Get Job Output OUTPUT=`echo “Hello”` OUTPUT=$(echo “Hello”) Send Output Somewhere Redirection: < , > Pipes
  • 51. Pipes Lots of Little Tools echo “Hello” | \ wc -c INPUT echo OUTPUT ERROR 0 1 2 INPUT wc OUTPUT ERROR 0 1 2 A Pipe!
  • 52. Email Notification % echo “Message” | \ mail –s “Here’s your message” \ [email_address]
  • 53. Dates % DATESTRING=`date +%Y%m%d` % echo $DATESTRING 20060125 % man date
  • 54. FTP the Hard Way ftp –n –u server.wfu.edu <<_FTP_ user username password put FILE _FTP_
  • 55. FTP with wget wget \ ftp://user:[email protected]/file wget –r \ ftp://user:[email protected]/dir/
  • 56. FTP with curl curl –T upload-file \ -u username:password \ ftp://server.wfu.edu/dir/file
  • 57. Searching: grep % grep rayra /etc/passwd % grep –r rayra /etc % grep –r RAYRA /etc % grep –ri RAYRA /etc % grep –rli rayra /etc
  • 58. Searching: find % find /home/borwicjh \ -name ‘*.lis’ [all files matching *.lis] % find /home/borwicjh \ -mtime -1 –name ‘*.lis’ [*.lis, if modified within 24h] % man find
  • 59. Searching: locate % locate .lis [files with .lis in path] % locate log [also finds “/var/log/messages”]
  • 61. Make Your Life Easier TAB completion Control+R history cd - Study a UNIX Editor
  • 62. pushd/popd % cd /tmp % pushd /var/log /var/log /tmp % cd .. % pwd /var % popd /tmp
  • 63. Monitoring processes ps ps –ef ps –u oracle ps –C sshd man ps
  • 64. “DOS” Mode Files #!/usr/bin/bash^M FTP transfer in ASCII, or dos2unix infile > outfile
  • 65. sqlplus JOB=“ZZZTEST” PARAMS=“ZZZTEST_PARAMS” PARAMS_USER=“BORWICJH” sqlplus $BANNER_USER/$BANNER_PW << _EOF_ set serveroutput on set sqlprompt &quot;&quot; EXECUTE WF_SATURN.FZ_Get_Parameters('$JOB', '$PARAMS', '$PARAMS_USER'); _EOF_
  • 66. sqlplus sqlplus $USER/$PASS @$FILE_SQL \ $ARG1 $ARG2 $ARG3 if [ $? –ne 0 ] then exit 1 fi if [ -e /file/sql/should/create ] then […use SQL-created file…] fi Ask Amy Lamy! 
  • 67. Passing Arguments % cat > test.sh <<_TEST_ echo “Your name is \ $1 \ $2 ” _TEST_ % chmod +x test.sh % ./test.sh John Borwick ignore-this Your name is John Borwick
  • 68. INB Job Submission Template $1 : user ID $2 : password $3 : one-up number $4 : process name $5 : printer name % /path/to/your/script $UI $PW \ $ONE_UP $JOB $PRNT
  • 69. Scheduling Jobs % crontab -l 0 0 * * * daily-midnight-job.sh 0 * * * * hourly-job.sh * * * * * every-minute.sh 0 1 * * 0 1AM-on-sunday.sh % EDITOR=vi crontab –e % man 5 crontab
  • 71. Other Questions? Shells and Shell Scripts bash Running Commands bash and Banner in Practice