shell programming part 1
play

Shell Programming (Part 1) Devin J. Pohly - PowerPoint PPT Presentation

Systems and Internet i Infrastructure Security i Institute for Networking and Security Research Department of Computer Science and Engineering Pennsylvania State University, University Park, PA Shell Programming (Part 1) Devin J. Pohly


  1. Systems and Internet i Infrastructure Security i Institute for Networking and Security Research Department of Computer Science and Engineering Pennsylvania State University, University Park, PA Shell Programming (Part 1) Devin J. Pohly <djpohly@cse.psu.edu> CMPSC 311: Introduction to Systems Programming Page 1

  2. Vim + Make • Vim integrates with make ‣ Type :make target (or just :make ) to build ‣ Vim will read the output and jump to each error or warning • Next error: :cn • Previous error: :cp • Show current error again: :cc CMPSC 311: Introduction to Systems Programming Page 2

  3. Shell programming • aka “shell scripting,” “Bash scripting” • What is it? ‣ Series of commands ‣ Programming with programs • What for ‣ Automating ‣ System administration ‣ Prototyping CMPSC 311: Introduction to Systems Programming Page 3

  4. A sample script: shello • First line: interpreter #! /bin/bash ‣ The #! is important! # Greetings! • Comment: # to end-of-line echo Shello world • Give the file execute # Use a variable permission echo Shello "$USER" ‣ chmod +x shello # Set a variable ‣ Not determined by file greetz=Shellutations extension echo "$greetz world" ‣ Typical: .sh or none • Run it ‣ ./shello CMPSC 311: Introduction to Systems Programming Page 4

  5. Shell variables • Setting/unsetting ‣ export var=value ‣ No spaces! ‣ unset var • Using the value ‣ $var • Untyped by default ‣ Behave like strings ‣ (See help declare for more) CMPSC 311: Introduction to Systems Programming Page 5

  6. Special variables • Change shell behavior or give you information ‣ PWD : current directory ‣ USER : name of the current user ‣ HOME : the current user’s home directory ◾ Can usually be abbreviated as a tilde ( ~ ) ‣ PATH : where to search for executables ‣ PS1 : Bash prompt (will see later) CMPSC 311: Introduction to Systems Programming Page 6

  7. Exercise • Make a directory ~/bin • Move shello script there • Prepend the directory to your $PATH ‣ PATH=~/bin:$PATH • Change to home dir • Run by typing shello CMPSC 311: Introduction to Systems Programming Page 7

  8. Shell initialization • Set custom variables • At startup, bash runs shell commands from ~/.bashrc ‣ Just a shell script • This script can do whatever you want CMPSC 311: Introduction to Systems Programming Page 8

  9. Fun with prompts • Main prompt: $PS1 • Special values ‣ \u: username ‣ \h: hostname ‣ \w: working dir ‣ \e: escape (for colors) ‣ many others • This is something you can set in your .bashrc Very detailed treatment: http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/ CMPSC 311: Introduction to Systems Programming Page 9

  10. Aside: Vim initialization • Vim reads ‘ : ’ commands from ~/.vimrc ‣ Color scheme colorscheme koehler ‣ Indenting preferences set autoindent set autowrite ‣ Backup files set backup set number ‣ Appearance preferences set showmatch ◾ Line numbers set title filetype plugin indent on ◾ Highlighting matched syntax on parentheses, braces, etc. ◾ Titlebar in terminal ‣ Remapping keys CMPSC 311: Introduction to Systems Programming Page 10

  11. Special characters • echo Penn State is #1 • echo Micro$oft Windows • echo Steins;Gate • What happened? CMPSC 311: Introduction to Systems Programming Page 11

  12. Special characters • echo Penn State is #1 • echo Micro$oft Windows • echo Steins;Gate • What happened? • Many special characters ‣ Whitespace ‣ #$*&^?!~'`"\{}[]<>()|; • What if we want these characters? CMPSC 311: Introduction to Systems Programming Page 12

  13. Quoting • Removes specialness • Hard quotes: '…' ‣ Quote everything except closing ' • Soft quotes: "…" ‣ Allow variables (and some other things) ‣ Good practice: "$var" • Backslash (escaping) ‣ Quotes next character CMPSC 311: Introduction to Systems Programming Page 13

  14. Arguments • In C: argc and argv[] • Split at whitespace ‣ How can we override this? • Arguments to a script ‣ ./script foo bar ‣ $# is the same as argc ‣ "$@" : all args ‣ "$1" to "$9" : individual CMPSC 311: Introduction to Systems Programming Page 14

  15. Debug mode • Shows each command ‣ Variables expanded ‣ Arguments quoted • Run with bash -x ‣ Temporary – just for that run ‣ bash -x shello ‣ Use -xv for even more info CMPSC 311: Introduction to Systems Programming Page 15

  16. Exercises • Make a script that: ‣ Prints its first argument doubled ./script1 foo foofoo ‣ Prints its first four args in brackets, one per line ./script2 "foo bar" baz [foo bar] [baz] [] [] CMPSC 311: Introduction to Systems Programming Page 16

  17. Redirecting input/output • Assigns stdin and/or stdout to a file • echo hello > world • echo hello >> world • tr h j < world CMPSC 311: Introduction to Systems Programming Page 17

  18. Pipelines • Connect stdout of one command to stdin of the next • echo hello | tr h j • … | rev • … | hexdump -C • … | grep 06 • UNIX philosophy at work! CMPSC 311: Introduction to Systems Programming Page 18

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend