1 / 32

Shells

Shells. shell basics. Shell Review. Command Processor Typed commands on a terminal Executed by the shell Boune family C family many others… Note: examples will center on the bash shell Shells do vary on implementation of some features. Pattern Matching: Wild Cards. Filenames.

errin
Télécharger la présentation

Shells

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. Shells

  2. shell basics

  3. Shell Review • Command Processor • Typed commands on a terminal • Executed by the shell • Boune family • C family • many others… • Note: examples will center on the bash shell • Shells do vary on implementation of some features

  4. Pattern Matching: Wild Cards Filenames Wild Card Examples • Replace parts of names with arbitrary matching character(s) • Combination of known and unspecifed characters • ?, *, […]

  5. Standard Files: Input/Ouput/Error • Standard input (std in) • Where the data is coming from • File • Stream • Usually the keyboard or terminal • Standard output (std out) • Where the data is going to • File • Stream • Usually the display or terminal • Standard error (std err) • Where error messages are sent • File • Stream • Usually the display or terminal • Default is same as Standard output

  6. Data Sources/Redirection • Terminal • Keyboard - source • Screen – sink • File redirection • > and >> • Send the standard data to a file • < • Receive the standard data from a file • Piping • | • Send the output of one program to the input of another • Different utilities and programs will handle defaults for std in and std out differently

  7. Example • wc • word count • counts the number of • lines • words • characters from the input • Examples of data source and sink using wc: • No parameters: data will follow from std in: • wcThis is a line of dataThis is another<ctrl-d> 2 9 34 • File as a parameter • wc /dir/file 8 50 1084 /dir/file • Note it has the filename in the output • Redirection from a file • wc < /dir/file 8 50 1084 • Piped from another program • ls | wc 6 6 60

  8. File Descriptor • Standard files have numeric representations • 0 – Standard input • 1 – Standard output • 2 – Standard error • Example: • #cat bad.filecat: bad.file: No such file or directory#cat bad.file 2> err.msg#wc err.msg 1 7 41 err.msg#more err.msgcat: bad.file: No such file or directory

  9. Problem: want std out and std err to go to same file • Example: file1 exists, file2 does not • #cat file1 file2file 1 data cat: file2: No such file or directory • redirect std out • #cat file1 file2 1> reportcat: file2: No such file or directory#more reportfile 1 data • redirect std err • #cat file1 file2 2> reportfile 1 data#less reportcat: file2: No such file or directory • cannot coherently redirect both streams to the same file, need another method • Can use >> for one or replicating descriptors • May show order differently or not work at all

  10. Replicating Descriptors • 1>&2 • send std out to destination of std err • 2>&1 • send std err to destination of std out • redirect std err, std out • #cat file1 file2 2> report 1>&2#less reportfile 1 data cat: file2: No such file or directory

  11. Resume 8/21

  12. Special files • /dev/null • “bit bucket” • /dev/tty • your default terminal • useful when different users log on • everyone can use /dev/tty as their terminal

  13. Pipes • Send output of one command as the input to another command • Examples • #ls | wc31 32 530 • Sent the short directory listing to wc • #ls –l | wc32 282 2121 • Sent the long directory listing towc

  14. Tee • Sends data to std out and a file • Not part of the shell • Example: • #who | tee users.txtajk tty7 2013-02-16 22:14 (:0)ajk pts/0 2013-03-01 08:45 (:0.0)#cat users.txtajk tty7 2013-02-16 22:14 (:0)ajk pts/0 2013-03-01 08:45 (:0.0)

  15. Command substitution • Command arguments can be obtained or substituted from the std out of a program: • Use backticks ` to denote • That is not the single quote ' • AKA Accent Gravé • Examples: • #echo This year is `date +%Y`This year is 2013 • #ls –la `cat filelist`ls: cannot access file2: No such file or directoryls: cannot access file4: No such file or directory-rw-r-r- 1 ajkombol ajkombol 14 Mar 3 16:34 file1-rw-r-r- 1 ajkombol ajkombol 14 Mar 3 16:34 file3 #cat filelistfile1 file2file3 file4

  16. Shell variables • Can assign values to variables • myvar=myvalue • Important: no spaces! • Use by putting $ in front • $myvar • Example: • #ext=.sh#name=doit#compname=$name$ext#echo $compnamedoit.sh

  17. Scripts Intro

  18. Scripts Intro • Shells can execute groups of commands in a file • Scripts • Script basics • They have basic control sequences • e.g. conditionals and looping • if, for, while • They may contain commands • They must have execute permission

  19. Environment preview Using the shell to modify your runtime environment

  20. Shell variables - Environment • Two shell variable types: • Environment • Used by a user in general • PATH • HOME • SHELL • Etc. • Note: • By convention environment variables are UPPER CASE • Local • Used for specific purposes • Typically available to current process only • Case sensitive

  21. Local Variables • Easy to create for temporary use • my_var=value • Restricted in scope

  22. Environment Variables • Export to create an Environmental Variable • export ENV_VAR • Can apply value at creation or later • Good for creating a set of common definitions

  23. customizing the environment Using the shell

  24. Setting the default shell • What shell is set as your default? • echo $SHELL • Returns something like: • /bin/bash-or- • /usr/bin/bash • Depends on distro • Popular shells • bash • csh • korne • bourne

  25. Environmental Variables • Available in the user’s total environment • Sub-shells • Scripts they run • Editors • Mail commands • etc. • Local variables • Only available to the current shell • set • displays all variables in the current shell • env • shows only environment variables

  26. export • Makes a variable visible to all child processes • Form: • export ENV_VAR

  27. Common Environment Variables

  28. Aliases • Use alternate names • "Shorthand" for commonly used commands • #alias vi='vim' • will always run vim when vi is typed • can run vi by \vi • Assign common options • #alias cp="cp -i" • will change cp to always be interactive • Ask if duplicate names found • #alias cp • will return the current assignment • #unalias cp • will get rid of the alias

  29. Command history • Allows recalling previous commands • Shows all the previous commands with event numbers • holds about 500 events • #history n • shows last n commands • #!n • executes event n • #!n:p • prints event n (does not execute)

  30. Tilde • Shorthand for the current users home directory • Notes: • #cd ~ • changes to current user’s home directory • #cd ~userid • changes to userid’s home directory

  31. Using set • By default, set shows all variables • Interesting options • #set –o noclobber • prevents accidental overwriting of existing files with redirection (the > and >> symbols) • #set –o ignoreeof • prevents accidents termination of script (<ctrl>d) • #set –o notify • allows completed background jobs to notify when done

  32. Initialization scripts • login script • runs once on log in • varies by distro • .bash_profile • .profile • .bash_login • usually in users home directory • rc script • runs every time an interactive sub-shell is created • varies by distro, usually has rc in its name • .bashrc • Use to customize the users environment • The prompt is usually set in one of these

More Related