83
CIS 90 - Lesson 12 Lesson Module Status • Slides – draft • Properties - done • Flash cards – • No-stress quiz – done • Web calendar summary – done • Web book pages – done • Commands – • Lab – • Supplies () • Email tech to class - • Class PC's – na • Scripts () – done 1

CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

Embed Size (px)

Citation preview

Page 1: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Lesson Module Status• Slides – draft• Properties - done• Flash cards – • No-stress quiz – done • Web calendar summary – done • Web book pages – done• Commands – • Lab – • Supplies ()• Email tech to class -• Class PC's – na• Scripts () – done

1

Page 2: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Quiz

Please close your books, turn off your monitor, take out a blank piece of paper and answer the following questions:

• How do you send a SIGKILL to one of your own processes?

• What vi command is used to exit vi without saving any of the changes you made?

• What vi commands are used for copy and paste?

2

Page 3: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Objectives Agenda

• Be able to set, view and unset shell variables

• Describe the difference between the set and env commands

• Explain the importance of the export command.

• Describe three actions that are handled by the .bash_profile file

• Define user-defined aliases• Explain the . (dot) command and the

exec command.

• Quiz

• Housekeeping

• test 3 results

• Spell checking

• vi

• Final project prep

• Variables

• The shell environment

• Aliases

• .bash_profile

• .bashrc

The Shell Environment

3

Page 4: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Housekeeping

4

Page 5: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Previous material and assignment

1. Lab 9 due midnight tonight

2. Five posts due midnight tonight

3. Questions?• vi• lab 9• test 3

5

Note: posts in the practice forum don’t count

What commands did you use to submit your work?

Page 6: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Test 3Results

6

Page 7: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

1) 2) 3) x4) 5) xxxxx6) x7) 8) 9) 10) x11) xxxxxxxxxx12) xxx13) xxxxxxxxxx14) xxxxxxxxxxx15) xxx

7

16) xxxxxxx17) xx 18) xxxxx19) xxxxxxxxx20) xxxxxxxxxxx21) 22) xxxxx23) xxxxxxx24) xxxxxxxxxxx25) xxxxxxx26) xxxxxxxxxxxxxx27) 28) xxxxxx29) xxxx30) xxxxxxxxx31) xxxxxxxxxxx

No points off for 26 and if you answered it correctly you got 1 point extra credit

Page 8: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Ayshiremashpit

and personaldictionaries

8

Page 9: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

9

Page 10: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

spell command

spell command flags CIS as misspelled word.

How can we add CIS to the dictionary?

Hmmm. No man page for spell ????????????

OK, the actual command is aspell

10

Page 11: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

spell command

spell command flags CIS as misspelled word. How can we add CIS to the dictionary?

Hmmm. No man page for spell ????????????

OK, the actual command is aspell

11

Page 12: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

ASPELL(1) Aspell Abbreviated User’s Manual ASPELL(1)

NAME aspell - interactive spell checker

SYNOPSIS aspell [options] <command>

DESCRIPTION aspell is a utility that can function as an ispell -a replacement, as an independent spell checker, as a test utility to test out Aspell features, and as a utility for managing dictionaries.

COMMANDS <command> is one of:

-?,help display the help message

-c,check file to spell-check a file

CIS 90 - Lesson 12

spell command

There must be a way to add CIS …. but … lets try google12

Page 13: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

spell command

Googling "linux aspell personal dictionary" yields this page

Bingo! Thank you Samat Jain 13

Page 14: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

spell command

This is how you would add your own custom dictionary to be used with spell checks

14

Page 15: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Make a Personal Dictionary

15

cdecho "personal_ws-1.1 en 0" > .aspell.en.pwsecho "mashpit" >> .aspell.en.pwsecho "Ayshire" >> .aspell.en.pwscat .aspell.en.pws

cd edits/spell small_town

Page 16: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

vi

16

Page 17: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

http://vim.wikia.com/wiki/Main_Page

17

Page 18: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

The Mug of vi

18

Page 19: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

/home/cis90/simmsben $ mail roddydukSubject: Good bonesHey Duke,I really appreciate thatbone you sent me last week.Let me knwo if you want to go mark some fench poststhis weekend.Later,Ben

Best Practise - /bin/mail and vi

You are composing a message and you spot some typos … CRUD … what can you do?

19

Page 20: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

/home/cis90/simmsben $ mail roddydukSubject: Good bonesHey Duke,I really appreciate thatbone you sent me last week.Let me knwo if you want to go mark some fench poststhis weekend.Later,Ben~v

/bin/mail and vi

Well … you could try the ~v command

20

Page 21: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

/bin/mail and vi

The message is loaded into vi where changes or additions can be made. :wq is used to save and quit vi

21

Page 22: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

/bin/mail and vi

The earlier text with typos is still showing, however the corrected version is what is actually sent.

/home/cis90/simmsben $ mail roddydukSubject: Good bonesHey Duke,I really appreciate thatbone you sent me last week.Let me knwo if you want to go mark some fench poststhis weekend.Later,Ben~v(continue).Cc:/home/cis90/simmsben $

22

Page 23: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

/home/cis90/roddyduk $ mailMail version 8.1 6/6/93. Type ? for help."/var/spool/mail/roddyduk": 1 message 1 unread>U 1 [email protected] Mon Nov 10 20:25 22/782 "Good bones"& 1Message 1:From [email protected] Mon Nov 10 20:25:32 2008Date: Mon, 10 Nov 2008 20:25:32 -0800From: Benji Simms <[email protected]>To: [email protected]: Good bones

Hey Duke,I really appreciate that bone you sent me last week.Let me know if you want to go mark some fence poststhis weekend.Later,Ben

&

CIS 90 - Lesson 12

/bin/mail and vi

The message Duke reads has all the typos fixed.

23

Page 24: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

viBest Practices

What new vi operations have you read about or googled and liked?

24

Page 25: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

finalproject

25

Page 26: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Final Project

You now have the necessary skills to begin the final project!

26

Page 27: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Final Project

This script has been updated with everyone's name and directory links

27

/home/cis90/bin/allscripts

Page 28: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Final Project/home/cis90/bin/allscripts

For every student name in the menu, there is a link to that student's myscript file

#!/bin/bash## menu: A simple menu template#while truedo clear echo -n " Spring 2009 CIS 90 Projects 1) Bilal 2) Craig 3) Dan 4) Doug 5) Duke 6) Edgar D. 7) Edgar O. 8) Gabriel 9) George 10) Glen 11) Jaime 12) Janet 13) Joe F. 14) Joe P. 15) Junious 16) Kang 17) Lieven 18) Linda 19) Michael 20) Patrick 21) Talley 22) Todd 23) William 99) Exit

Enter Your Choice: " read RESPONSE case $RESPONSE in 1) # Bilal /home/cis90/hussabil/bin/myscript ;; 2) # Craig /home/cis90/langlcra/bin/myscript ;; 3) # Dan /home/cis90/conydan/bin/myscript ;; 4) # Doug /home/cis90/kittldou/bin/myscript ;; 5) # Duke /home/cis90/roddyduk/bin/myscript ;; 6) # Edgar D. /home/cis90/delacedg/bin/myscript ;; 7) # Edgar O. /home/cis90/ortegedg/bin/myscript ;; 8) # Gabriel /home/cis90/pantogab/bin/myscript ;; 9) # George /home/cis90/balesgeo/bin/myscript ;; 10) # Glen /home/cis90/matligle/bin/myscript ;; 11) # Jaime /home/cis90/cervajai/bin/myscript ;; 12) # Janet /home/cis90/tumajan/bin/myscript ;; 13) # Joe F. /home/cis90/ferrajoe/bin/myscript ;; 14) # Joe P. /home/cis90/pragejoe/bin/myscript ;; 15) # Junious /home/cis90/rossjun/bin/myscript ;; 16) # Kang /home/cis90/leekan/bin/myscript ;; 17) # Lieven /home/cis90/mambulie/bin/myscript ;; 18) # Linda /home/cis90/donohlin/bin/myscript ;; 19) # Michael /home/cis90/georgmic/bin/myscript ;; 20) # Patrick /home/cis90/caseypat/bin/myscript ;; 21) # Talley /home/cis90/senantal/bin/myscript ;; 22) # Todd /home/cis90/krametod/bin/myscript ;; 23) # William /home/cis191/tumawil/bin/myscript ;;

99) exit 0 ;; *) echo "Please enter a number between 1 and 6" ;; esac echo -n "Hit the Enter key to return to menu " read dummydone 28

Page 29: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Final Project/home/cis90/$LOGNAME/bin/myscript

Getting Started

1)On Opus, cd to your bin directory and enter:vi myscript

then type i to enter insert mode

2) In your web browser, view the CIS 90 calendar page and click on the project link for Lesson 15. Select the template code and copy it to the clipboard.

3) Click back on the vi session and click the right mouse button to paste the template code.

4) Save the code with Esc and the :wq

5) Give myscript execute permissions with chmod +x myscript29

Page 30: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Final Project/home/cis90/$LOGNAME/bin/myscript

Your initial template code will look like this in vi

vi understands shell scripts and will use color styling.

30

Page 31: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Final Project/home/cis90/$LOGNAME/bin/myscript

Customize your menu title

Add a menu entry

Add some sample dialog code using variables

31

Page 32: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Final Project/home/cis90/$LOGNAME/bin/myscript

A variable ($ means "the value of")

32

another variable

another variable

Variables ($ means "the value of")

Page 33: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Final Project/home/cis90/$LOGNAME/bin/myscript

A new command

33

another new command

Page 34: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Final Project/home/cis90/$LOGNAME/bin/myscript

case statement begins here

34

First case of case statement starts here

First case ends here

Page 35: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Final Project/home/cis90/$LOGNAME/bin/myscript

35

Comments begin with a #

Page 36: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Final Project/home/cis90/$LOGNAME/bin/myscript

Customize your menu title

Customize the first menu entry

Add this sample dialog code using variables

36

Page 37: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

ShellVariables

37

Page 38: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

• Shell variables are names consisting of alpha-numeric characters.

• Variables defined by the Operating System are uppercase, e.g. TERM, PS1, PATH

• The set command will display the shell’s current variables and their values.

• Shell variables are initialized using the assignment operator: TERM=vt100Note: Quotes must be used for white space: VALUE="any value"

• Variables may be viewed using the echo command: echo $TERMThe $ in front of a variable name denotes the value of that variable.

• To remove the value from a variable, use the unset command: unset PS1

• Shell variables hold their values for the duration of the session i.e. until the shell is exited

Shell Variables

38

Page 39: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Shell Variables

/home/cis90/simmsben/Poems $setBASH=/bin/bashBASH_ARGC=()BASH_ARGV=()BASH_ENV=/home/cis90/simmsben/.bashrcBASH_LINENO=()BASH_SOURCE=()BASH_VERSINFO=([0]="3" [1]="2" [2]="25" [3]="1" [4]="release" [5]="i686-redhat-linux-gnu")BASH_VERSION='3.2.25(1)-release'COLORS=/etc/DIR_COLORS.xtermCOLUMNS=80CVS_RSH=sshDIRSTACK=()EUID=1160GROUPS=()G_BROKEN_FILENAMES=1HISTFILE=/home/cis90/simmsben/.bash_historyHISTFILESIZE=1000HISTSIZE=1000HOME=/home/cis90/simmsbenHOSTNAME=opus.cabrillo.eduHOSTTYPE=i686IFS=$' \t\n'IGNOREEOF=10INPUTRC=/etc/inputrcLANG=en_US.UTF-8LESSOPEN='|/usr/bin/lesspipe.sh %s'LINES=24LOGNAME=simmsben

LS_COLORS='no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe=00;32:*.com=00;32:*.btm=00;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00;35:*.xpm=00;35:*.png=00;35:*.tif=00;35:'MACHTYPE=i686-redhat-linux-gnuMAIL=/var/spool/mail/simmsbenMAILCHECK=60OLDPWD=/home/cis90/simmsbenOPTERR=1OPTIND=1OSTYPE=linux-gnuPATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/cis90/simmsben/../bin:/home/cis90/simmsben/bin:.PIPESTATUS=([0]="0")PPID=26514PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\007"'PS1='$PWD $'PS2='> 'PS4='+ 'PWD=/home/cis90/simmsben/PoemsSHELL=/bin/bashSHELLOPTS=braceexpand:emacs:hashall:histexpand:ignoreeof:interactive-comments:monitorSHLVL=1SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpassTERM=xtermUID=1160USER=simmsbenUSERNAME=_=envconsoletype=pty

The set command by itself will show all the shell variables

39

Page 40: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Shell Variables

create some new shell variables

print the values of the shell variables

print the names of the shell variables

40

Page 41: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Class Exercise

41

Create and intialize three new variables:defrost=onac=offfan=medium

Show the names of the variables:echo defrost ac fan

Show the values of the variables:echo $defrost $ac $fan

Page 42: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Shell Variables

remove some new shell variables

Non-existing variables have null values

42

Page 43: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Class Exercise

43

Create and intialize three new variables:unset defrostunset ac fan

Show the names of the variables:echo defrost ac fan

Show the values of the variables:echo $defrost $ac $fan

Page 44: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Shell Variables

Any new variables you initialize will show in the output of the set command

font reduced for the other variables to fit on slide

44

Page 45: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Shell Variables

Using grep to find a variable in the output of the set command

45

Page 46: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Shell Variables

Using a variable in a script

Add execute permissions

Run script

46

Page 47: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Class Exercise

Now try the dialog script:

vi input_ac

add the following lines then save #!/bin/bashecho -n "Turn the Air Conditioning on or off? "read acecho "Air Conditioning set to $ac"exit

chmod +x input_ac

./input_ac

47

Page 48: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

aliases

48

Page 49: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

alias [-p] [name[=value] ...] Alias with no arguments or with the -p option prints the list of aliases in the form alias name=value on standard output. When arguments are supplied, an alias is defined for each name whose value is given. A trailing space in value causes the next word to be checked for alias substitution when the alias is expanded. For each name in the argument list for which no value is supplied, the name and value of the alias is printed. Alias returns true unless a name is given for which no alias has been defined.

Note aliases are not expanded by default in non-interactive shell, and it can be enabled by setting the expand_aliases shell option using shopt.

alias command(a shell builtin)

49

Page 50: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

alias command(a shell builtin)

We make an alias for the cp command and use it

The type command shows it is an alias to the cp command

The alias command without an "=" sign shows what the alias is.

Use unalias to remove an alias

50

Page 51: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

alias command(a shell builtin)

Make an alias, called s, that prints the first 10 lines of smalltown

51

Page 52: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

alias an alias

And break it too

You can alias an alias

52

Page 53: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

single and double quotes

$ ac=on$ fan=medium$ defrost=off

$ alias p='echo $ac $fan $defrost'$ alias palias p='echo $ac $fan $defrost'$ pon medium off$ ac=off$ poff medium off

$ alias p="echo $ac $fan $defrost"$ alias palias p='echo on medium off'$ pon medium off$ ac=off$ pon medium off

Note: using single quotes prevents bash from expanding the variables when setting up the alias

53

singledouble

Page 54: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Class Exercise

Make some aliases

For example:

• alias mypath="echo $PATH" • mypath

• alias details=file • details /usr/bin/spell

Now invent 2-3 of your own

54

Page 55: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

ShellEnvironment

55

Page 56: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

exporting variables

• When a shell forks a child, not all of the variables get passed on to the child. • Only the variables in the shell’s environment are passed on to the child.

• Use env to see the variables that are in the shell’s environment.

• Use the export command to add a variable to the environment .

/

PID: 501

PPID: 250

bash

PID: 582

PPID: 501

PID: 582

PPID: 501

PID: 501

PPID: 250

PID: 501

PPID: 250

bashfork()

Xexec()

wait()

exit()bash cmd

bash

56

Page 57: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

environment variablesfan is a shell variableLOGNAME is an environment variable (It has been exported)

LOGNAME shows up in both env and set output

fan only shows up in set output

Only LOGNAME, an environment variable) is available to the child process

57

/home/cis90/roddyduk $ fan=medium/home/cis90/roddyduk $ echo $fan $LOGNAMEmedium roddyduk

/home/cis90/roddyduk $ env | grep fan/home/cis90/roddyduk $ env | grep LOGNAMELOGNAME=roddyduk/home/cis90/roddyduk $ set | grep fanfan=medium/home/cis90/roddyduk $ set | grep LOGNAMELOGNAME=roddyduk

/home/cis90/roddyduk $ bash[roddyduk@opus ~]$ echo $fan $LOGNAMEroddyduk[roddyduk@opus ~]$ exitexit/home/cis90/roddyduk $

pare

nt

child

bash command runs another shell as a child process

Page 58: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

environment variables

fan is a normal shell variable

fan is not available to the child process

export fan so it is available to children

fan is now available to the child process

the child modifies the variable

any changes made by a child will not effect the parent's variable 58

/home/cis90/roddyduk $ fan=medium/home/cis90/roddyduk $ echo $fanmedium

/home/cis90/roddyduk $ bash[roddyduk@opus ~]$ echo $fan[roddyduk@opus ~]$ exitexit

/home/cis90/roddyduk $ echo $fanmedium/home/cis90/roddyduk $ export fan

/home/cis90/roddyduk $ bash[roddyduk@opus ~]$ echo $fanmedium[roddyduk@opus ~]$ fan=high[roddyduk@opus ~]$ echo $fanhigh[roddyduk@opus ~]$ exitexit

/home/cis90/roddyduk $ echo $fanmedium

pare

nt

child

child

pare

nt

pare

nt

Page 59: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

environment variables

/home/cis90/roddyduk $ env | grep PS1/home/cis90/roddyduk $ set | grep PS1PS1='$PWD $ '

/home/cis90/roddyduk $ bash[roddyduk@opus ~]$ exitexit/home/cis90/roddyduk $

Why did the prompt change?

59

Page 60: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

EnvironmentVariables

60

Page 61: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Shell Variable Description

HOME Users home directory (starts here after logging in and returns with a cd command (with no arguments)

LOGNAME User's username for logging in with.

PATH List of directories, separated by :'s, for the Shell to search for commands (which are program files) .

PS1 The prompt string.

PWD Current working directory

SHELL Name of the Shell program being used.

TERM Type of terminal device , e.g. dumb, vt100, xterm, ansi, etc.

Shell (Environment) Variablescommon environment variables

61

Page 62: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Shell (Environment) Variablesenv command – show all environment variables

62

Page 63: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Shell (Environment) Variablesexport command – show all exported variables

63

Page 64: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Shell (Environment) Variablesexport command – show all exported variables

To create your own environment variable use the export command

export fan and it become out 25th exported variable

64

Page 65: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Environment variablesPATH, TERM, PS1, HOME

[rsimms@nosmo ~]$ echo $PATH/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/rsimms/bin

[rsimms@nosmo ~]$ echo $TERMxterm

[rsimms@nosmo ~]$ echo $HOME/home/rsimms

[rsimms@nosmo ~]$ echo $PS1[\u@\h \W]\$

[rsimms@nosmo ~]$ PS1="By your command >"By your command >By your command >PS1="What can I do for you $LOGNAME? "What can I do for you rsimms?What can I do for you rsimms? PS1="[\u@\h \W]\$ "[rsimms@nosmo ~]$

Use = (no spaces) to change value

Use echo $_____ to show value

user name hostname working directory65

Page 66: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

bash shell tipchanging the prompt

CIS 90 - Lesson 1

Prompt Code Meaning

\! history command number

\# session command number

\d date

\h hostname

\n new line

\s shell name

\t time

\u user name

\w entire path of working directory

\W only working directory

\$ $ or # (for root user)

The prompt string can have any combination of text, variables and these codes.

66

Page 67: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

bash shell tipchanging the prompt

CIS 90 - Lesson 1

Prompt string Result

PS1='$PWD $' /home/cis90/simmsben/Poems $

PS1="\w $" ~/Poems $

PS1="\W $" Poems $

PS1="\u@\h $" simmsben@opus $

PS1='\u@\h $PWD $' simmsben@opus /home/cis90/simmsben/Poems $

PS1='\u@\$HOSTNAME $PWD $' [email protected] /home/cis90/simmsben/Poems $

PS1='\u \! $PWD $' simmsben 825 /home/cis90/simmsben/Poems $

PS1="[\u@\h \W/\$" [simmsben@opus Poems/$

PS1='$PWD $' /home/cis90/simmsben/Poems $

Important: Use single quotes around variables that change. For example if you use $PWD with double quotes, the prompt will not changes as you change directories! 67

Page 68: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

bash startup files

68

Page 69: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

bash startup files

/etc/profile (all)o adds root's special path

/etc/profile.d/*.sh (all)o kerberos directories added to patho adds color, vi aliaseso language, character sets

.bash_profile (user specific)o adds user's bin to path

.bashrc (user specific)o add aliases here

/etc/bashrc (all)o changes umask to 0002 for regular userso sets final prompt string

only executed when logging in

69

Page 70: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

.bash_profile

70

Page 71: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

• The .bash_profile is a shell script that sets up a user's shell environment.

• This script is executed each time the user logs in.

• The .bash_profile is used for initializing shell variables, running the user's .bashrc file, running basic commands like umask and set -o options.

.bash_profile

71

Page 72: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

[roddyduk@opus ~]$ cat .bash_profile# .bash_profile

# Get the aliases and functionsif [ -f ~/.bashrc ]; then . ~/.bashrcfi

# User specific environment and startup programs

PATH=$PATH:$HOME/../bin:$HOME/bin:.BASH_ENV=$HOME/.bashrcUSERNAME=""PS1='$PWD $ 'export USERNAME BASH_ENV PATHumask 002set -o ignoreeofstty suspeval `tset -s -m vt100:vt100 -m :\?${TERM:-ansi} -r -Q `

[roddyduk@opus ~]$

.bash_profile

72

Page 73: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

.bashrc

73

Page 74: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

The .bashrc is a shell script that is executed during user login and whenever a new shell is invoked. This file usually contains the user defined aliases. e.g.

    alias bye="clear; exit"    alias rm="rm -i"

.bashrc

74

Page 75: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

The .bashrc is a shell script that is executed during user login and whenever a new shell is invoked. This file usually contains the user defined aliases. e.g.

[roddyduk@opus ~]$ cat .bashrc# .bashrc

# User specific aliases and functions

# Source global definitionsif [ -f /etc/bashrc ]; then . /etc/bashrcfialias print="echo -e"[roddyduk@opus ~]$

.bashrc

75

Page 76: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Class Exercise

Modify .bashrc

Add a new alias to the end of the file:

• alias me="finger $LOGNAME"

When finished logout and login again and verify the alias is permanent.

76

Page 77: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

. and exec

77

Page 78: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

In normal execution of a unix command, shell-script or binary, the child process in unable to affect the login shell environment.

Sometimes it is desireable to run a shell script that will initialize or change shell variables in the parent environment. To do this, the shell (bash) provides a . (dot) or source command, which instructs the shell to execute the shell script itself, without spawning a child process to run the script.

. myscript or source myscript

In this example, the commands in the file shscript are run by the parent shell, and therefore, any changes made to the environment will last for the duration of the login session.

If a UNIX command is run using the exec command, the shell will terminate upon the exiting of that command:

exec clear

This will have the effect of clearing the screen and logging off the computer.

. and exec

78

Page 79: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Lab 10

79

Page 80: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Wrap up

80

Page 81: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 191 - Lesson 12

New commands:. - source the commandsalias - create or show an aliasunalias - remove an aliasset - show all variablesenv - show environment variablesexport - export variable so child can useexec - replace with new codesource - same as .

New Files and Directories:.bash_profile - executed at login.bashrc - executed at login and new shells

81

Page 82: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Next Class

Assignment: Check Calendar Page on web site to see what is due next week.

Quiz questions for next class:

•How do you make an alias setting permanent?

•What must you do to a variable so a child can use it?

•How would you use an alias to make a command named copy … that would do what the cp command does?

82

Page 83: CIS 90 - Lesson 12 Lesson Module Status Slides – draft Properties - done Flash cards – No-stress quiz – done Web calendar summary – done Web book pages

CIS 90 - Lesson 12

Backup

83