1 / 31

UNIX Tools G22.2245-001, Fall 2000

Overview of shell core functionality, features of /bin/sh, /bin/ksh, and /bin/csh, including simple and complex commands, input/output redirection, pipes, wildcards, command substitution, background processes, shell variables, and more.

kbegin
Download Presentation

UNIX Tools G22.2245-001, Fall 2000

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. UNIX ToolsG22.2245-001, Fall 2000 Danielle S. Lahmani email: lahmani@cs.nyu.edu Lecture 4 2000 Copyrigths Danielle S. Lahmani

  2. Overview • shell core functionality • /bin/sh • /bin/ksh • /bin/csh 2000 Copyrigths Danielle S. Lahmani

  3. Shell Core Features • Simple and complex commands • redirection of input/output • pipes • wildcards • command substitution • background processes • shell variables • here documents • built-in cmds • programming constructs 2000 Copyrigths Danielle S. Lahmani

  4. The Korn Shell: /bin/ksh • Supports all features described in the Bourne shell (/bin/sh) • Alias mechanism • History mechanism for access of previous commands • Functions • Enhanced job control • Arithmetic • Tilde substitution 2000 Copyrigths Danielle S. Lahmani

  5. The Korn shell: /bin/ksh STARTUP FILES: • /etc/profile • $HOME/.profile • ALIAS: • alias [-tx] [word[=string]] • alias -x : to export alias to child shell • unalias aliasname: to remove an alias 2000 Copyrigths Danielle S. Lahmani

  6. /bin/ksh: History Mechanism • Numbered commands $ PS1='!!’ /* set prompt to contains a ! */ $HISTSIZE default is 128 • using the built-in vi editor • declare VISUAL=vior EDITOR=vi • to edit current line, press ESC key to enter the editor • vi cmds to edit line, when done, press ESC key again, • additional movement: cursor up(k or - ) cursor down (j or +) • additional searching /string or ?string : searches backward and forward through history, respectively. 2000 Copyrigths Danielle S. Lahmani

  7. /bin/ksh (continued) • ARITHMETIC: Usinglet expression • TILDE SUBSTITUTION • ~ $HOME • ~user home directory of user • ~/pathname $HOME/pathname • ~+ $PWD • ~- $OLDPWD 2000 Copyrigths Danielle S. Lahmani

  8. /bin/ksh: FUNCTIONS • Allows functions that may be invoked as shell commands function name { list of commands } or name() { list of commands } 2000 Copyrigths Danielle S. Lahmani

  9. /bin/ksh: Functions (continued) • can use parameters • returning from a function • local variable using typeset • functions can be recursive 2000 Copyrigths Danielle S. Lahmani

  10. /bin/ksh: ENHANCED JOB CONTROL • jobs list your jobs • bg places a specified job in the background • fg places a specified job in the foreground • kill sends an arbitrary signal to a process or job • ^z to stop a foreground job • stop to suspend a background job 2000 Copyrigths Danielle S. Lahmani

  11. /bin/ksh: coprocess PIPES • |& operator supports a simple form of concurrent processing • cmd |& cmd run as a background process whose standard input and output channels are connected to the original parent shell via a two way pipe. 2000 Copyrigths Danielle S. Lahmani

  12. The C Shell: /bin/csh • Supports all features described in the Bourne shell • simple and list variables • Alias mechanism with arguments • History mechanism for access of previous commands • Enhanced job control • Arithmetic • directory stack 2000 Copyrigths Danielle S. Lahmani

  13. /bin/csh: STARTUP FILES • $HOME/.cshrc • /etc/.login • $HOME/.login 2000 Copyrigths Danielle S. Lahmani

  14. /bin/csh: simple variables • set { name [=word]} * • access • $(name) • ${name} • ${?name} replaced by 1 if name is set, 0 otherwise 2000 Copyrigths Danielle S. Lahmani

  15. /bin/csh: list variables • Variables to which you can assign a list of values • set { name = ( {word}*) } * • Access: • $name[selector] • ${name[selector]} selector can be a range • $#name • ${#name} number of elements in name 2000 Copyrigths Danielle S. Lahmani

  16. /bin/csh: predefined local variables • $< the next line of standard input fully quoted • $noclobber prevents existing files from being overridden by >, and non-existent files from being appended to by >> • $noglob prevents wildcard expansion 2000 Copyrigths Danielle S. Lahmani

  17. /bin/csh: methods for accessing C shell arguments • $argv a list that contains all of the positional parameters, same as $* • $argv[1] is equal to $1 • $#argv number of arguments • $argv[1-n] arguments 1 through n • $argv[0] illegal, must use $0 • $argv[$#argv] last argument  2000 Copyrigths Danielle S. Lahmani

  18. /bin/csh:file inquiry operator • -option filename operator meaning r read access w write access x execute access e existence o ownership z zero length f plain file d directory 2000 Copyrigths Danielle S. Lahmani

  19. /bin/csh: ARITHMETIC EXPRESSION • Assignment of results of an expression: • Set variable to expression @ variable op expression @ variable[index] op expression • example: @ x = 2 + 3 %echo $x 5 2000 Copyrigths Danielle S. Lahmani

  20. /bin/csh:ALIAS • alias [word[string]] • unalias • to share an alias with other subshells, place it under .cshrc 2000 Copyrigths Danielle S. Lahmani

  21. ARGUMENTS IN ALIASES • C shell assumes that all arguments come at the end of the alias definition, unless you specify otherwise • Example • % alias cx chmod +x • % cx * # makes files in all current directory executable • Two common arguments designations to pass arguments to aliases 2000 Copyrigths Danielle S. Lahmani

  22. /bin/csh alias examplereference: The Unix C shell field Guide G, Anderson P. Anderson • find requires a single argument, we must escape ! to suppress interpretation from the C shell %alias loc 'find ~ -name \!^ -print' %loc ttydoc77 % alias ldir 'ls -l \!* | grep "^d"' % ldir ../utils /usr/bin 2000 Copyrigths Danielle S. Lahmani

  23. /bin/csh: history mechanism • For numbered commands • set prompt = '\! %’ • storage of commands • set history = 40 size of history file • set savehist=32 save 32 commands across sessions 2000 Copyrigths Danielle S. Lahmani

  24. /bin/csh: hist mech (continued) • command reexecution • !! reexecute previous command • !number • !prefix • !?substring • command editing • %!even :s/pat1/pat2 substitute pat1 with pat2 • %^pat1^pat2 reexecution of previous command substituting pat1 with pat2 2000 Copyrigths Danielle S. Lahmani

  25. ACCESS PORTION OF A FILENAME • Modifier part of file portion of filename returned • :h head filename minus trailing path • :r root filename minus trailing *.suffix • :e extension trailing .* suffix • :t tail filename minus leading dir path 2000 Copyrigths Danielle S. Lahmani

  26. /bin/csh: CONTROL STRUCTURES • foreach ……. end • if then else endif • switch case … endsw • while … end • onintr [-l label] allows to specify a label to jump to when shell receives a SIGINT 2000 Copyrigths Danielle S. Lahmani

  27. /bin/csh: PIPING • Process1 |& process2 • Redirects standard output and standard error from process 1 to process 2 2000 Copyrigths Danielle S. Lahmani

  28. /bin/csh:MULTIPLE REDIRECTION • Cmd >& file send both standard output and standard error to file • Cmd >&! file same as above, even in noclobber is set • Cmd >>& file append standard error and standard output to end of file • Cmd1 | & cmd2 pipe standard error together with standard output • (cmd > file1) >& file2 send standard output to file1; send standard error to file2 2000 Copyrigths Danielle S. Lahmani

  29. /bin/csh: JOB CONTROL • Same as ksh, plus • stop suspend background process • suspend suspend foreground process • notify notify when current job changes status 2000 Copyrigths Danielle S. Lahmani

  30. /bin/csh: DIRECTORY STACK • pushd[+number|name] pushd pushes the directory onto the directory stack • popd [+number] popd pops a directory from the directory stack • dirs: lists the current directory stack . 2000 Copyrigths Danielle S. Lahmani

  31. Effective and efficient shell progreference: Unix shell Tutorial G.Snyder J.R. Mashey Bell Labs • Minimize number of processes generated • Find out which cmds are built-in and which are not. • Number of data bytes accessed • Minimize Directory searches • Optimize Directory search order and the PATH variable • Minimize arithmetic and character processing • Avoid command substitution when you can • Move loop invariant outside of loop, especially for command substitution 2000 Copyrigths Danielle S. Lahmani

More Related