Linux Shell Scripting –Intro/Review

Linux Shell Scripting –Intro/Review

Linux shell scripting –intro/review David Morgan © David Morgan 2012-17 You should already know how to log in run programs at the command line use pipelines and redirection ( | < > ) put jobs in the background ( & ) create and edit files make scripts executable ( chmod ) © David Morgan 2012-17 1 UNIX software tools do one thing well process lines of text, not binary use regular expressions default to standard I/O aren’t chatty give same output format as got from input let someone else do the hard part © David Morgan 2012-17 let someone do the hard part -- subcontractors “The shell’s dependence on other programs to do most of the work is arguably a defect, but also inarguably a strength: you get the concise notation of a scripting language plus the speed and efficiency of programs written in C (etc.) --Robbins and Beebe p. ix specialized subcontractor examples – sed – for dynamic editing – find – for selective, arbitrary file processing – bc – for arbitrary precision math they lack the shell’s programming constructs the shell lacks their specialized capabilities strategy: employ them in mutual alliance © David Morgan 2012-17 2 Command shell definition a shell is just another program, like cal or ls defined by what it does – cal: prints a calendar – ls: prints a file list – shell: prompts for commands, tries to run them running commands for users is what, precisely, makes a shell a shell (and not an editor, browser, or calculator) © David Morgan 2012-17 What features does a shell have? Primary! Essential! Must have ability to cause a command to run … distant second Nice to have whatever other features were coded into it by that shell’s author. If any. I don’t know. © David Morgan 2012-17 3 Scripting in context Brief feature summary for bash: Command processing – parse – expand – execute Scripting: a possible feature that a shell may implement I/O redirection bash, for example, does (but don’t take it for granted.) Piping Environment control Background processing Shell scripts © David Morgan 2012-17 dshell – a feature -poor shell causes commands to run (so, it’s a shell!) nothing else (certainly not scripting) © David Morgan 2012-17 4 bash – a feature -rich shell causes commands to run (so, it’s a shell!) but has a zillion times more code doing tons of useful extra things (all optional) © David Morgan 2012-17 Some other, tutorial shells dshell – my dirt-simple shell simpleshell – http://teaching.idallen.org csimpleshell – http://rik0.altervista.org/snippets/csimpleshell.html mini-shell – http://code.google.com/p/mini-shell © David Morgan 2012-17 5 Bash source code © David Morgan 2012-17 Prominent “production ” shells Korn shell from AT&T C shell Berkeley Bourne again shell GNU Z shell Princeton student Almquist shell Ken Almquist © David Morgan 2012-17 6 Shells installed on our systems ksh tcsh bash zsh mksh dash yash © David Morgan 2012-17 ksh KSH-93 is the most recent version of the KornShell by David Korn of AT&T Bell Laboratories. KornShell is a shell programming language, which is upward compatible with "sh" (the Bourne Shell). tcsh Tcsh is an enhanced but completely compatible version of csh, the C shell. Tcsh is a command language interpreter which can be used both as an interactive login shell and as a shell script command processor. Tcsh includes a command line editor, programmable word completion, spelling correction, a history mechanism, job control and a C language like syntax. © David Morgan 2012-17 7 bash The GNU Bourne Again shell (Bash) is a shell or command language interpreter that is compatible with the Bourne shell (sh). Bash incorporates useful features from the Korn shell (ksh) and the C shell (csh). Most sh scripts can be run by bash without modification. zsh The zsh shell is a command interpreter usable as an interactive login shell and as a shell script command processor. Zsh resembles the ksh shell (the Korn shell), but includes many enhancements. Zsh supports command line editing, built-in spelling correction, programmable command completion, shell functions (with autoloading), a history mechanism, and more. © David Morgan 2012-17 mksh mksh is the MirBSD enhanced version of the Public Domain Korn shell (pdksh), a bourne-compatible shell which is largely similar to the original AT&T Korn shell. It includes bug fixes and feature improvements in order to produce a modern, robust shell good for interactive and especially script use, being a bourne shell replacement, pdksh successor and an alternative to the C shell. dash DASH is a POSIX-compliant implementation of /bin/sh that aims to be as small as possible. It does this without sacrificing speed where possible. In fact, it is significantly faster than bash (the GNU Bourne-Again SHell) for most tasks. © David Morgan 2012-17 8 yash Yash is a command line shell that conforms to the POSIX.1 (IEEE Std 1003.1, 2008 Edition) standard for the most part. Yash also has its own features beyond POSIX, such as: * global aliases * random numbers * socket redirections and other special redirections * right prompt * command completion © David Morgan 2012-17 Bash conformant -izability --posix or -o posix +B get rid of brace expansion calling bash as /bin/sh softlink © David Morgan 2012-17 9 Which shell to script for? #!/path/to/shell © David Morgan 2012-17 10.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    10 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us