c1 - gioi thieu lap trinh shell
TRANSCRIPT
Introduction toIntroduction to Shell programming p g g
Tutor: Lưu Thanh Trà@Email: [email protected]
Shell
A program whose job was executing otherA program whose job was executing other programs on behalf of users.A variety of shell: C shell (csh), Bourne shell y ( ),(sh), Bash shell (bash),…Quick, effective tool that remembers typed , ypcommands, allow to define your own command abbreviations, shortcuts, and other ffeatures.Shells are programmable
CommandsWhere are you?
pwdpwdUsage: locate the current path
Running commands gtype
Usage: show the path of a commandE t lEx: type ls
type –a Usage: show the alias of a command aliasgEx:
alias lf=“ls –la”type –a lftype a lf
whichEx: which ls
apropos:Usage: search manpage names and description for regular expressionEx: apropos hashEqual to : man –k hash
locate/slocateUsage: consult database files about the systemUsage: consult database files about the systemEx: locate aproposNote: update the dbase with updatedb to update the file /var/lib/mlocate/mlocate db/var/lib/mlocate/mlocate.db
File informationls
Usage: list files in a directoryUsage: list files in a directoryEx: ls –la /tmpsEx: ls ld /tmps/*Ex: ls –ld /tmps/
statUsage: display file/filesystem statusUsage: display file/filesystem statusEx: stat /root/Desktop/file1
file:file:Usage: determine file typeEx: file /root/Desktop/pic1 jpgEx: file /root/Desktop/pic1.jpg
ls command
-aDo not hide files starting with . (dot)
-FShow the type of file with one of these trailing type designators: /*@%=|
-lLong listing
-LSh i f ti b t th li k d fil th th th b li li k it lfShow information about the linked file, rather than the symbolic link itself
-QQuote names (GNU extension, not supported on all systems)
-rrReverse sort order
-RRRecurse though subdirectories
-SSSort by file size
-11Short format but only one file per line
Shell quoting
$ echo A coffee is $5?!$ $A coffee is ?!
$ echo "A coffee is $5?!"-bash: !": event not found
$ echo 'A coffee is $5?!'ff $ ?A coffee is $5?!
$ echo 'A coffee is $5 for' "$USER" '?!'A coffee is $5 for jp ?!A coffee is $5 for jp ?!
$ echo "A coffee is \$5 for $USER?\!"A coffee is $5 for jp?\!A coffee is $5 for jp?\!
Built-in and external commands
Built-in commands are integrated in the shellBuilt in commands are integrated in the shellExternal commands can be found on in $PATH$enable:
Usage: stop using built-in commandUsage: stop using built in commandenable –n cdbuiltin cd
Interactive mode
In the interactive mode, systems ask users toIn the interactive mode, systems ask users to confirm commands
#!/usr/bin/env bash# cookbook filename: interactivecase "$-" in*i*) # Code for interactive shell here);;*) # Code for non-interactive shell here;;;;esac
Note: $- is string listing of all the current shell $ g goption flags
Writing a function
function function namefunction function_name{commands to executecommands to execute}
ororfunction_name (){{commands to execute}}
Declare the shell
#!/usr/bin/sh OR #!/bin/sh#!/usr/bin/sh OR #!/bin/sh#!/usr/bin/ksh OR #!/bin/ksh#!/usr/bin/csh OR #!/bin/csh#!/usr/bin/csh OR #!/bin/csh#!/usr/bin/bash OR #!/bin/bash
Control structuresif ... then Statementif [ test command ]if [ test_command ]thencommandscommandsfiif ... then ... else Statementif [ test_command ]thencommandselsecommandscommandsfi
case
case $variable in$match_1)commands_to_execute_for_1;;match_n)
fcommands_to_execute_for_n;;*) (Optional any other value)) (Optional - any other value)commands_to_execute_for_no_match;;;;esac