際際滷

際際滷Share a Scribd company logo
Bash scripting. Advanced.
于亠亟亠仆亳亠 于 GNU/LiNUX
Linux administration course.
May 5, 2020
1 Manipulate the different I/O streams with I/O Redirection
2 Repeat operations with loops.
3 Group pieces of code.
4 Expansions cont.
5 if alternatives.
6 Debugging scripts.
7 Command types.
Linux administration course. 1
1 Manipulate the different I/O streams with I/O Redirection
2 Repeat operations with loops.
3 Group pieces of code.
4 Expansions cont.
5 if alternatives.
6 Debugging scripts.
7 Command types.
Linux administration course. 2
stdin, stdout, stderr
C 从舒亢亟仄 仗仂亠仂仄 于磶舒仆 仗仂仂从亳 于于仂亟舒于于仂亟舒  舒亶仍仂于亠
亟e从亳仗仂 stdin, stdout, stderr.
亳仄亠. 仂仄亠舒 舒亶仍仂于 亟e从亳仗仂仂于 亳 仂亶于.
1 echo / dev / std*
2 echo / dev / std* | xargs t n 1 readlink
3 lsof ap $BASHPID d 0 ,1 ,2
Linux administration course. 2
仂仆于亠亠
STDIN process
STDERR
STDOUT
 舒亢亟仂亠 仗亳仍仂亢亠仆亳亠 仂从于舒亠 3 舒仆亟舒仆 舒亶仍仂于
亟亠从亳仗仂舒 (file descriptor) stdin (fd 0), stdout(fd 1), stderr
(fd 2)
Linux administration course. 3
仂仆于亠亠
STDIN process STDIN processSTDIN process
STDERR
STDERR
STDERR
STDOUT STDOUTSTDOUT
 舒亢亟仂亠 仗亳仍仂亢亠仆亳亠 仂从于舒亠 3 舒仆亟舒仆 舒亶仍仂于
亟亠从亳仗仂舒 (file descriptor) stdin (fd 0), stdout(fd 1), stderr
(fd 2)
 亳仍仂亢亠仆亳 仄仂亞 舒弍仂舒 从舒从 亳仍 亳亰 STDIN 于
STDOUT, 仄仂亢仆仂 仂弍亠亟亳仆 仆亠从仂仍从仂 仗亳仍仂亢亠仆亳亶 于
从仂仆于亠亶亠
 弌亳仆舒从亳 <app1> | <app2>
Linux administration course. 3
亠亠仆舒仗舒于仍亠仆亳 于 舒亶仍
 亠亠仆舒仗舒于仍亠仆亳亠 stdout FD=1
 弌 仂亰亟舒仆亳亠仄 仆仂于仂亞仂 舒亶仍舒
command > file 亳仍亳 command 1> file
舒仗亳仄亠 cat file1 file2 > file3
 弌 亟仂仗仂仍仆亠仆亳亠仄 亠于ム亠亞仂
command >> file
Linux administration course. 4
亠亠仆舒仗舒于仍亠仆亳 于 舒亶仍
 亠亠仆舒仗舒于仍亠仆亳亠 stdout FD=1
 弌 仂亰亟舒仆亳亠仄 仆仂于仂亞仂 舒亶仍舒
command > file 亳仍亳 command 1> file
舒仗亳仄亠 cat file1 file2 > file3
 弌 亟仂仗仂仍仆亠仆亳亠仄 亠于ム亠亞仂
command >> file
 亠亠仆舒仗舒于仍亠仆亳 stdin FD=0
command < file 亳仍亳 command <&0 file
Linux administration course. 4
亠亠仆舒仗舒于仍亠仆亳 于 舒亶仍
 亠亠仆舒仗舒于仍亠仆亳亠 stdout FD=1
 弌 仂亰亟舒仆亳亠仄 仆仂于仂亞仂 舒亶仍舒
command > file 亳仍亳 command 1> file
舒仗亳仄亠 cat file1 file2 > file3
 弌 亟仂仗仂仍仆亠仆亳亠仄 亠于ム亠亞仂
command >> file
 亠亠仆舒仗舒于仍亠仆亳 stdin FD=0
command < file 亳仍亳 command <&0 file
 亠亠仆舒仗舒于仍亠仆亳 stderr FD=2
command1 2>&1 | command2
command 1>file 2>&1
command 2>file 1>&2
Linux administration course. 4
亳仄亠仆亠仆亳亠 仗亠亠仆舒仗舒于仍亠仆亳 仗仂仂从仂于.
舒弍仂舒亠  仍ミ英仄 亳仗仂仄 舒亶仍仂于.
 弌仂亰亟舒 仆仂于亶 舒亶仍 亳仍亳 仂弍仆仍亳 于ム亳亶 >
 亠亠仆舒仗舒于亳 亟仍亳仆仆亶 于于仂亟 从仂仄舒仆亟 于 舒亶仍 >
 仂仍舒仍亳于仂亠 于仗仂仍仆亠仆亳亠 从仂仄舒仆亟 >/dev/null
 丼亠仆亳亠 亳亰 仗亠舒亶仍舒 </dev/urandom, /dev/zero
 丼亠仆亳亠 亳亰 亟舒仆仆 亳亰 舒亶仍舒 <
 舒仂亶从舒 亳亠仄. echo > 仂仗亠亟亠仍亠仆仆亠 舒亶仍 于 /proc/
亳仍亳 /sys/
 cat /dev/zero > /dev/sda  亟舒仍亳 亳亠仄
Linux administration course. 5
1 Manipulate the different I/O streams with I/O Redirection
2 Repeat operations with loops.
3 Group pieces of code.
4 Expansions cont.
5 if alternatives.
6 Debugging scripts.
7 Command types.
Linux administration course. 6
仆仂于仆亠 从仂仆从亳亳 亟仍 亳从仍仂于
 for  亳从仍 仗仂仄仂舒 (foreach), 亳从仍 仂 亠亳从仂仄
 while, until  亳从仍  仗亠亟仍仂于亳亠仄
 break, continue  亟仂仂仆亶 于仂亟, 仗仂仗从 亳亠舒亳亳
Linux administration course. 6
丶亳从仍 for. 亳仄亠.
亠亶于亳亠 仆舒亟 舒亶仍舒仄亳.
1 f o r file in *
2 do md5sum $file
3 done
亠亠亳仍亠仆亳亠 仍亠仄亠仆仂于.
1 f o r planet in Mars Earth Mercury Saturn
2 do ssh $planet uname a > $planet
3 done
Linux administration course. 7
丶亳从仍 for. 丶亳仂于舒 仗仂仍亠亟仂于舒亠仍仆仂.
亳仄亠 亞亠仆亠舒亳亳.
1 f o r num in 1 2 3 4 5 6 7 8 9 10 # 仗仂仂亠
仗亠亠亳仍亠仆亳亠
2 do ping 1 9 2 . 1 6 8 . 1 0 . $num
3 done
4
5 f o r num in $ ( seq 1 10) # 亞亠仆亠舒亳 亳亰 于仆亠仆亠亶
从仂仄舒仆亟
6 do ping 1 9 2 . 1 6 8 . 1 0 . $num
7 done
8
9 f o r num in { 1 . . 1 0 } # 亞亠仆亠舒亳 于仂亠仆仆仄亳
亠亟于舒仄亳
10 do ping 1 9 2 . 1 6 8 . 1 0 . $num
11 done
Linux administration course. 8
丶亳从仍 for. 丶亳仂于舒 仗仂仍亠亟仂于舒亠仍仆仂.
亳仄亠亳亠从亳亶 仂仄舒 (Clike)
1 f o r ( ( i =1; i <11; i ++) )
2 do
3 echo $i
4 done
亠从仂仍从仂 仗亠亠仄亠仆仆
1 f o r ( ( a =1 , b =1; a <= LIMIT ; a ++ , b ++) )
2 do
3 echo n $a$b
4 done
Linux administration course. 9
丶亳从仍 for. 仂亟 亳亰 亳从仍舒.
亠 于舒亢亠仆亳. 亠亰仍舒 仗仂 仄仂仍舒仆亳 1.
1 f o r ( ( i =1; ; i ++) )
2 do
3 echo $i
4 [  $ i  eq 10 ] && break
5 done
Linux administration course. 10
丶亳从仍 while,until
1 while expr1 ; . . . exprN
2 do
3 op
4 done
亳仄亠仆ム 从仂亞亟舒 仆亢仆仂 仗仂于仂 亟仂 于仗仂仍仆亠仆亳 从舒从仂亞仂仂
仂弍亳, 从仂亞亟舒 从仂仍亳亠于仂 仍亠仄亠仆仂于 仆亠亳亰于亠仆仂 亰舒舒仆亠亠
仍亳弍仂 亳亰仄亠仆磳 亟亳仆舒仄亳亠从亳.
舒仗亳仄亠 o从仂仆舒仆亳亠 舒亶仍舒, 仗仂仍亠仆 仗仂仍亠亟仆亳亶 舒亞仄亠仆
从仂仄舒仆亟仆仂亶 仂从亳, 于于仂亟 亠从舒 仗仂仍亰仂于舒亠仍亠仄, 仂亢亳亟舒仆亳亠 仂舒
于 亠亳 仗仂仍亠 仗亠亰舒亞亰从亳.
Linux administration course. 11
亳仄亠 亳仗仂仍亰仂于舒仆亳 while
亠亠弍亳舒亠仄 舒亞仄亠仆.
1 while [ [ n $1 ] ]
2 do
3 echo $1
4 s h i f t # rename the p o s i t i o n a l parameters
$N +1 , $N+2 . . . to $1 , $2 (N=1)
5 done
Linux administration course. 12
IFS  internal field separator
IFS
亠亠仄亠仆仆舒, 亠亞仍亳ム舒 舒亰亟亠仍亠仆亳亠 仗舒舒仄亠仂于
(舒亞仄亠仆仂于) 仆舒 仍仂于舒.
仗仂仍亰亠:
 于仂 于亠仄 舒从亳 仗舒舒仄亠仂于 从仂仄舒仆亟仆仂亶 仂从亳 仗亠亠亟
于仗仂仍仆亠仆亳亠仄
 亠亟舒从亳仂于舒仆亳亠 从仂仄舒仆亟仆仂亶 仂从亳 (亟舒仍亠仆亳亠 仍仂于舒,
Ctrl+W)
 亠仆亳亠 于于仂亟舒 仗仂仍亰仂于舒亠仍 从仂仄舒仆亟仆仂亶 read
仆舒亠仆亳亠 仗仂 仄仂仍舒仆亳: "<仗仂弍亠仍><舒弍仍亳><仗亠亠于仂亟
仂从亳> "
Linux administration course. 13
亠亠仆舒仗舒于仍亠仆亳亠 亳亰 亳从仍舒.
舒亠.
1 while IFS= :  read name pass uid guid comment
home shell ; do
2 echo $name $uid $guid $home $shell
3 done < / etc / passwd
仂仂仆仂亠 亠仆亳亠 亳亰 舒亶仍舒.
1 while IFS= read r line ; do
2 printf %s  n   $ l i n e 
3 done <  $ f i l e 
Linux administration course. 14
仆亠仆亳亠 从仂仄舒仆亟.
舒仂于亠 仂仗亠舒亳亳  舒亶仍舒仄亳 舒仆舒仍仂亞 亳从仍仂于
仂仄舒仆亟舒 find
1 find . name  *. c  exec stat { }  ;
仂仄舒仆亟舒 xargs
1 echo / dev / std* | xargs n1 readlink
Linux administration course. 15
丶亳从仍 until. 亳仄亠.
亢亳亟舒亠仄 仂 仗仂仍亠 仗亠亠亰舒亞亰从亳.
1 u n t i l ping q c 3 $host 1 >/ dev / null 2>&1 &&
nc z $host 22
2 do
3 sleep 1
4 echo unavailable ;
5 done
6
Linux administration course. 16
1 Manipulate the different I/O streams with I/O Redirection
2 Repeat operations with loops.
3 Group pieces of code.
4 Expansions cont.
5 if alternatives.
6 Debugging scripts.
7 Command types.
Linux administration course. 17
个仆从亳亳
 仄亠仆仂于舒仆仆亠
 亠亳仄亠仆仂于舒仆仆亠
个仆从亳亳 于 shell 仄仂亞 亳仗仂仍亰仂于舒 从舒从 仂弍仆亠 仗仂亞舒仄仄,
从仂仂亠:
 亳仆亳仄舒ム 仗仂亰亳亳仂仆仆亠 仗舒舒仄亠;
 于仂亰于舒舒ム 舒;
 仂亞 亳仗仂仍亰仂于舒 于 从舒亠于亠 亳仂仆亳从舒 仍亳弍仂
仗亳亠仄仆亳从舒 仗亳 仗亠亠仆舒仗舒于仍亠仆亳 于于仂亟舒/于于仂亟舒.
Linux administration course. 17
个仆从亳亳: 亳仆舒从亳
 仍舒亳亠从亳亶 亳仆舒从亳 c 从仍ム亠于仄 仍仂于仂仄 function:
1 function function_name {
2 command . . .
3 }
 仂舒弍亠仍仆亶 (Cstyle):
1 function_name ( )
2 {
3 command . . .
4 }
 亟仆仂仂仆亶:
1 function_name ( ) { command . . . ; }
Linux administration course. 18
亳仄亠 (仆舒舒仍仂)
1 # ! / bin / bash
2
3 function help {
4 echo 仗仂仍亰仂于舒仆亳亠 : $0 < string >
5 e x i t 1
6 }
7
8 f1 ( ) {
9 echo 亰于舒仆舒 仆从亳 $FUNCNAME  $# 舒亞仄亠仆舒仄亳
10 }
11
12 f2 ( ) {
13 while read str ; do
14 echo $ { FUNCNAME } : 仗仂亳舒仆舒 仂从舒 : $str
15 done
16 }
Linux administration course. 19
亳仄亠 (仂从仂仆舒仆亳亠)
1 [ $# eq 0 ] && help
2
3 f1 $@
4
5 { f o r ( ( i =0; i <5; i ++) ) ; do
6 echo $@
7 done } | f2
8
9 e x i t
Linux administration course. 20
仂从舒仍仆亠 仗亠亠仄亠仆仆亠
亠亠仄亠仆仆亠 仂弍磦仍亠仆仆亠  仗亠亳从仂仄 local 于亳亟仆 仂仍从仂
于仆亳 仂弍磦仍亠仆仆仂亞仂 弍仍仂从舒.
1 # ! / bin / bash
2
3 VAR= t e s t
4 f1 ( ) {
5 l o c a l VAR=test1
6 echo Function $ {
FUNCNAME } : VAR=$VAR
7 }
8 f2 ( ) {
9 VAR=test2
10 echo Function $ {
FUNCNAME } : VAR=$VAR
11 }
1 echo Before f1 : VAR=$VAR
2 f1
3 echo Before f2 : VAR=$VAR
4 f2
5 echo After f2 : VAR=$VAR
6
7 e x i t
Linux administration course. 21
1 Manipulate the different I/O streams with I/O Redirection
2 Repeat operations with loops.
3 Group pieces of code.
4 Expansions cont.
5 if alternatives.
6 Debugging scripts.
7 Command types.
Linux administration course. 22
仂亟舒仆仂于从舒  亟仂仄舒仆 亟亳亠从仂亳
Tilde expansion ~
1 echo ~
2 echo ~ / . ssh
3 echo $HOME / . ssh
4 echo ~test01 / . ssh /
Linux administration course. 22
仂亟舒仆仂于从舒  亟仂仄舒仆 亟亳亠从仂亳
Tilde expansion ~
1 echo ~
2 echo ~ / . ssh
3 echo $HOME / . ssh
4 echo ~test01 / . ssh /
 ~  仂从舒亠仆亳亠 $HOME
 ~user/  $HOME 亟仍 仗仂仍亰仂于舒亠仍 user
 /  亳仄于仂仍 亰舒于亠舒亠 亟亠亶于亳亠 ~
丿亳仂从仂 仗亳仄亠仆磳 于 从亳仗舒, 仆舒 舒仆亳舒 亟仂从仄亠仆舒亳亳
Linux administration course. 22
仂亟舒仆仂于从舒 从仂仄舒仆亟
弌亳仆舒从亳:
 油command油
 $(command)
Linux administration course. 23
仂亟舒仆仂于从舒 从仂仄舒仆亟
弌亳仆舒从亳:
 油command油
 $(command)
舒亟舒仆亳亠
亳于仂亳 仗亠亠仄亠仆仆仂亶 LIST 亠亰仍舒 于仗仂仍仆亠仆亳 从仂仄舒仆亟 ls
-1
于亠亳 仆舒 从舒仆 仗亠亠仄亠仆仆 LIST
Linux administration course. 23
弌仗亠亳仄于仂仍
 #   仂从舒 仗仂仍亠 # 磦仍磳 从仂仄仄亠仆舒亳亠仄
 ;  舒亰亟亠仍亠仆亳亠 从仂仄舒仆亟
 :  NOP 仂仗亠舒仂 (仗仂仂亢 仆舒 于仂亠仆仆亶 于亰仂于 true)
 source 亳仍亳 .  从亳仗 于仗仂仍仆磳 于 亠从亠仄 从亰亠仄仗仍亠
shell
Linux administration course. 24
1 Manipulate the different I/O streams with I/O Redirection
2 Repeat operations with loops.
3 Group pieces of code.
4 Expansions cont.
5 if alternatives.
6 Debugging scripts.
7 Command types.
Linux administration course. 25
丕仗舒于仍ム亳亠 仂仗亠舒仂
仂亢仆仂 亟亠仍舒 亠仗仂从亳 从仂仄舒仆亟:
command1 && command2 || command3
command1 && command2 && command3 && ...
亳仄亠仆亠仆亳亠 仂仗亠舒仂仂于 && 亳 ||:
 亰仄亠仆ム 仗仂于亠亟亠仆亳亠 从仂亟舒 于 亰舒于亳亳仄仂亳 仂 仗亠仆仂亳
于仗仂仍仆亠仆亳 从仂仄舒仆亟
 弍亠亟亳仆ム 从仂仄舒仆亟
 丕仍舒ム 亳舒亠仄仂 从仂亟舒 亟仍 仗仂 仗仂于亠仂从. 亟仆舒
仂从舒 vs 亳 于 if
 仂 亟仍亳仆仆亠 亠仗仂从亳 仍仂亢仆仂 仂仍舒亢亳于舒 亳 仗仂亟亟亠亢亳于舒
Linux administration course. 25
Command chain example
It only takes three commands to install Gentoo
Linux administration course. 26
Command chain example
It only takes three commands to install Gentoo
1 cfdisk / dev / hda && mkfs . xfs / dev / hda1 &&
mount / dev / hda1 / mnt / gentoo / && chroot / mnt
/ gentoo / && envupdate && . / etc / profile &&
emerge sync && cd / usr / portage && scripts /
bootsrap . sh && emerge system && emerge vim
&& vi / etc / fstab && emerge gentoodev
sources && cd / usr / src / linux && make
menuconfig && make install modules_install
&& emerge gnome mozillafirefox openoffice
&& emerge grub && cp / boot / grub / grub . conf .
sample / boot / grub / grub . conf && vi / boot /
grub / grub . conf && grub && init 6
Linux administration course. 26
Command chain example
It only takes three commands to install Gentoo
1 cfdisk / dev / hda && mkfs . xfs / dev / hda1 &&
mount / dev / hda1 / mnt / gentoo / && chroot / mnt
/ gentoo / && envupdate && . / etc / profile &&
emerge sync && cd / usr / portage && scripts /
bootsrap . sh && emerge system && emerge vim
&& vi / etc / fstab && emerge gentoodev
sources && cd / usr / src / linux && make
menuconfig && make install modules_install
&& emerge gnome mozillafirefox openoffice
&& emerge grub && cp / boot / grub / grub . conf .
sample / boot / grub / grub . conf && vi / boot /
grub / grub . conf && grub && init 6
That is the first one
Linux administration course. 26
丕仍仂于仆亠 仂仗亠舒仂 && ||
仗仂仍仆亳 从仂仄舒仆亟:
1 cd video && echo Exit code $? Is OK . I am
watching video .
2 mkdir video # 亰舒仗亳 仗亠亟亟 从仂仄舒仆亟 亠亠
舒亰
Linux administration course. 27
丕仍仂于仆亠 仂仗亠舒仂 && ||
仗仂仍仆亳 从仂仄舒仆亟:
1 cd video && echo Exit code $? Is OK . I am
watching video .
2 mkdir video # 亰舒仗亳 仗亠亟亟 从仂仄舒仆亟 亠亠
舒亰
弌亳仆舒从亳:
command1 && command2
O弍仂仍仂从舒 于仗仂仍仆磳 command2 亠仍亳 仗亠仆仂 于仗仂仍仆亳仍舒
command1. 仂亞亳亠从舒 仂仗亠舒亳  (AND)
Linux administration course. 27
丕仍仂于仆亠 仂仗亠舒仂 && ||
仗仂仍仆亳 从仂仄舒仆亟:
1 cd video && echo Exit code $? Is OK . I am
watching video .
2 mkdir video # 亰舒仗亳 仗亠亟亟 从仂仄舒仆亟 亠亠
舒亰
弌亳仆舒从亳:
command1 && command2
O弍仂仍仂从舒 于仗仂仍仆磳 command2 亠仍亳 仗亠仆仂 于仗仂仍仆亳仍舒
command1. 仂亞亳亠从舒 仂仗亠舒亳  (AND)
仗仂仍仆亳 从仂仄舒仆亟:
Linux administration course. 27
丕仍仂于仆亠 仂仗亠舒仂 && ||
仗仂仍仆亳 从仂仄舒仆亟:
1 cd video && echo Exit code $? Is OK . I am
watching video .
2 mkdir video # 亰舒仗亳 仗亠亟亟 从仂仄舒仆亟 亠亠
舒亰
弌亳仆舒从亳:
command1 && command2
O弍仂仍仂从舒 于仗仂仍仆磳 command2 亠仍亳 仗亠仆仂 于仗仂仍仆亳仍舒
command1. 仂亞亳亠从舒 仂仗亠舒亳  (AND)
仗仂仍仆亳 从仂仄舒仆亟:
1 cd video | | echo Exit code $ ? . Video is not
available
2 rmdir video # 丕亟舒仍亳仄 亳 仗仂于仂亳仄 亠亠 舒亰 仗亠于
从仂仄舒仆亟 .
Linux administration course. 27
丕仍仂于仆亠 仂仗亠舒仂 && ||
仗仂仍仆亳 从仂仄舒仆亟:
1 cd video && echo Exit code $? Is OK . I am
watching video .
2 mkdir video # 亰舒仗亳 仗亠亟亟 从仂仄舒仆亟 亠亠
舒亰
弌亳仆舒从亳:
command1 && command2
O弍仂仍仂从舒 于仗仂仍仆磳 command2 亠仍亳 仗亠仆仂 于仗仂仍仆亳仍舒
command1. 仂亞亳亠从舒 仂仗亠舒亳  (AND)
仗仂仍仆亳 从仂仄舒仆亟:
1 cd video | | echo Exit code $ ? . Video is not
available
2 rmdir video # 丕亟舒仍亳仄 亳 仗仂于仂亳仄 亠亠 舒亰 仗亠于
从仂仄舒仆亟 .
Linux administration course. 27
1 Manipulate the different I/O streams with I/O Redirection
2 Repeat operations with loops.
3 Group pieces of code.
4 Expansions cont.
5 if alternatives.
6 Debugging scripts.
7 Command types.
Linux administration course. 28
从仍ム亠仆亳亠 亠亢亳仄舒 仂仍舒亟从亳 I
仗仂仍亰亠 从仂仄舒仆亟舒 set 亟仍 舒从亳于亳亰舒亳亳 舒亰仍亳仆
亠亢亳仄仂于 舒弍仂 bash.
从仍ム亠仆亳亠 亠亢亳仄舒 仗仂亳亰于仂亟亳  仗仂仄仂 ,
舒 仂从仍ム亠仆亳亠  +.
Linux administration course. 28
从仍ム亠仆亳亠 亠亢亳仄舒 仂仍舒亟从亳 II
亳仄亠 于从仍ム亠仆亳 亠亢亳仄舒 仂仍舒亟从亳.
1 bash x . / script . sh # 仂仗亳 从仂仄舒仆亟仆仂亶 仂从亳
2
3 # ! / bin / bash x # 于仆亳 从亳仗舒 仂仗亳亠亶
4 [ . . script . . ]
5
6 # ! / usr / bin / env bash
7 set x # 于仆亳 从亳仗舒 从仂仄舒仆亟仂亶
8
9 # ! / usr / bin / env bash
10 [ . . irrelevant code . . ]
11 set x # 于从仍ム舒亠仄 仂仍舒亟从 仆舒 舒 从仂亟舒
12 [ . . relevant code . . ]
13 set +x # 于从仍ム舒亠仄 仂仍舒亟从
14 [ . . irrelevant code . . ]
Linux administration course. 29
仍ム亳 仂仍舒亟从亳 从仂仄舒仆亟 set I
 set -v  于于仂亟 仆舒 从舒仆 亳仗仂仍仆磳仄仂亶 仂从亳
1 set v
2 echo $HOME
 set -x  于于仂亟 仆舒 从舒仆 亳仗仂仍仆磳仄仂亶 仂从亳 
舒于仂仄舒亳亠从仂亶 仗仂亟舒仆仂于从仂亶 亰仆舒亠仆亳亶 仗亠亠仄亠仆仆
1 set x
2 echo $HOME
 set -n  仗仂于亠从舒 亳仆舒从亳舒 从亳仗舒
1 bash n t e s t . sh
Linux administration course. 30
仍ム亳 仂仍舒亟从亳 从仂仄舒仆亟 set II
 set -f  仂从仍ム亠仆亳亠 亞亠仆亠舒亳亳 亳仄亠仆 舒亶仍仂于 
亳仗仂仍亰仂于舒仆亳亠仄 仄亠舒亳仄于仂仍仂于 (globbing)
1 echo ~ / . *
2 set f
3 echo ~ / . *
Linux administration course. 31
仍ム亳 仂仍舒亟从亳 从仂仄舒仆亟 set III
 set -e  仂舒仆仂于从舒 于仗仂仍仆亠仆亳 从亳仗舒, 亠仍亳 从舒从舒仍亳弍仂
从仂仄舒仆亟舒 于仂亰于舒磳 errorstatus 仆亠 舒于仆亶 0
1 # ! / bin / bash
2
3 set e
4 f a l s e | | true
5 echo Working
6 f a l s e
7 echo Still working
Linux administration course. 32
仍舒亟仂仆亠 仗亠亠仄亠仆仆亠
$LINENO 仆仂仄亠 亠从亠亶 仂从亳
$FUNCNAME 仄舒亳于 仂亟亠亢亳 亳仄亠仆舒 于亠 仆从亳亶 亳亰
亠从舒 于亰仂于仂于. 0 仍亠仄亠仆 亳仄 亠从亠亶
仆从亳亳
$BASH_SOURCE 仄舒亳于 仂亟亠亢亳 亳仄亠仆舒 仗仂亟从仍ム亠仆仆
舒亶仍仂于 source
$SHLVL 仂于亠仆 于仍仂亢亠仆仆仂亳 亳仆亠仗亠舒仂舒
$PIPESTATUS 仄舒亳于 舒仂于 亰舒于亠亠仆亳 于亠 从仂仄舒仆亟
于 pipe
仍亠仆舒亳于仆亶 于亳亟 PS4.
1 export PS4=  +( $ { BASH_SOURCE } : $ { LINENO } ) : $ {
FUNCNAME [ 0 ] : + $ {FUNCNAME [ 0 ] } ( ) : } 
Linux administration course. 33
弌亠从 于亰仂于仂于
 caller [N]  仆从亳 于于仂亟亳 仆舒 从舒仆 仆仂仄亠 仂从亳,
亳仄亠仆舒 仆从亳亳 亳 舒亶仍舒 于亰于舒ム亠亞仂 从亳仗舒
1 # ! / bin / bash
2 backtrace ( ) {
3 echo Backtrace :
4 f o r ( ( i=$SHLVL ; i >=0; i)) ; do
5 c a l l e r $i
6 done
7 }
8 f1 ( ) { echo Function $FUNCNAME at $LINENO &&
backtrace ; }
9 f2 ( ) { f1 ; }
10 f2
Linux administration course. 34
丐亳仗亳仆亠 仂亳弍从亳 于 仍仂于仆仂仄 于舒亢亠仆亳亳
舒仗亳舒 从亳仗 仗仆亳仄舒ム亳亶 仂亟亳仆 舒亞仄亠仆 亳
仂仗亠亟亠仍ム亳亶 舒亶仍 仍亳 仂. 仍亳 舒亶仍 于于仂亟亳 仆舒 从舒仆
仂从 regular file detected 于 仍舒亠 仗亠舒, 亠亟于舒亳亠仍仆仂
仂亰亟舒: 舒亶仍 c 亳仄亠仆舒仄亳 file, my file
check.sh  亳仗舒于亳
1 filename=$1
2
3 [f $filename ] && echo  regular f i l e detected 
| | echo  not regular f i l e 
4 e x i t # to run code below comment i t
5 # or v a r i a n t with i f
6 i f [f $filename ] ; then
7 echo  re g ular f i l e detected
8 else
9 echo  not regular f i l e 
Linux administration course. 35
弌仂仂弍亠仆亳 仂弍 仂亳弍从舒
亳仄亠.
1 check . sh : line 4 : [f : command not found
2
3 check . sh : line 4 : [ : missing ] 
4
5 . / check . sh # i n c o r r e c t code l o g i c . No
arguments .
6 re g ular f i l e detected
7
8 . / check . sh : l i n e 5 : [ : my: binary operator
expected
9
10 . / check . sh : l i n e 112: syntax e r r o r : unexpected
end of f i l e
11
12 bash : t e s t : too many argumentsLinux administration course. 36
1 Manipulate the different I/O streams with I/O Redirection
2 Repeat operations with loops.
3 Group pieces of code.
4 Expansions cont.
5 if alternatives.
6 Debugging scripts.
7 Command types.
Linux administration course. 37
舒仗从 仗仂亞舒仄仄 亳亰 从仂仄舒仆亟仆仂亶 仂从亳
 舒仂亟亳仄 仗亳亞仍舒亠仆亳亠 从仂仄舒仆亟仆仂亶 仂从亳 $, #, user@host: $
 于仂亟亳仄 亳仄 从仂仄舒仆亟, 舒亞仄亠仆 亳 亰舒仗从舒亠仄 仆舒
于仗仂仍仆亠仆亳亠 仆舒亢舒亳亠仄 <Enter>
丼仂 舒从仂亠 从仂仄舒仆亟?
 亳仗仂仍仆磳仄舒 仗仂亞舒仄仄舒 (弍亳仆舒仆亶 舒亶仍, 从亳仗)
 于仂亠仆仆亠 于 仂弍仂仍仂从 从仂仄舒仆亟 (shell builtins)
 仆从亳 仂弍仂仍仂从亳
 仂从舒亠仆亳亠 从仂仄舒仆亟 (an alias)
Linux administration course. 37
舒亟舒仆亳亠. 亳亟 从仂仄舒仆亟 于 仂弍仂仍仂从亠
仂仄舒仆亟舒 type 仂仂弍舒亢舒亠 亳仗 从仂仄舒仆亟. 仗仂仍仆亳仄 亠亠 亟仍
舒亰仍亳仆 从仂仄舒仆亟.
1 type type cd help a l i a s read
2 type dmesg rm
3 type i f
4 type a ls
5 type a echo pwd t e s t
于舒 亳仗舒 从仂仄舒仆亟.  仂仆仂 仆舒仄 仆舒亟仂?  仍亳 舒亰仆亳舒?
Linux administration course. 38
舒亟舒仆亳亠. 亳亟 从仂仄舒仆亟 于 仂弍仂仍仂从亠
仂仄舒仆亟舒 type 仂仂弍舒亢舒亠 亳仗 从仂仄舒仆亟. 仗仂仍仆亳仄 亠亠 亟仍
舒亰仍亳仆 从仂仄舒仆亟.
1 type type cd help a l i a s read
2 type dmesg rm
3 type i f
4 type a ls
5 type a echo pwd t e s t
于舒 亳仗舒 从仂仄舒仆亟.  仂仆仂 仆舒仄 仆舒亟仂?  仍亳 舒亰仆亳舒?
仂亠仆仆亠 亳 于仆亠仆亳亠 从仂仄舒仆亟
 于亠亞亟舒 仗亳于ム 于 亳仆亠仗亠舒仂亠, 于仆亠仆亳 仄仂亢亠 亳
仆亠 弍 仆舒 亟亳从亠
 仂亟仆仂仂弍舒亰仆亶 亳仆舒从亳 仆舒 舒亰仆 仗仍舒仂仄舒
(仗亠亠仆仂亳仄仂 从亳仗仂于)
 从舒从 仗舒于亳仍仂 于仗仂仍仆ム 弍亠亠, .从. 从仂亟 仆舒仂亟亳 于
仗舒仄亳
 亠 亠亟于舒, 仂弍 于从仍ム亳 于仂亠仆仆亠 从仂仄舒仆亟,Linux administration course. 38
丕仍仂于仆亠 仂仗亠舒仂: case
1 case  $ v a r i a b l e
 in
2 pattern1 )
command1
3
command2
4 ; ;
5 pattern2 |
pattern3 )
6
command3
7
command4
8 ; ;
9 esac
Linux administration course. 39
丕仍仂于仆亠 仂仗亠舒仂: case
1 case  $ v a r i a b l e
 in
2 pattern1 )
command1
3
command2
4 ; ;
5 pattern2 |
pattern3 )
6
command3
7
command4
8 ; ;
9 esac
亳仄亠:
1 # ! / bin / bash
2
3 cmd=$1 ; var=$2
4 case $cmd in
5 print|echo )
6 echo 丕舒 , 仗亠舒舒亠仄 !  ; ;
7 abc *| xyz *)
8 echo 弌舒仆仆舒 从仂仄舒仆亟舒 $cmd
; ;
9 *)
10 echo 亊 舒从亳 从仂仄舒仆亟 仆亠
亰仆舒 : $cmd 1>&2
11 e x i t 1 ; ;
12 esac
13 [ ! z  $var  ] && echo 
仗亠亠仄亠仆仆舒  $var = $var 
14 e x i t 0Linux administration course. 39

More Related Content

What's hot (20)

"亠仗仍仂亶 从仂亟舒 仗仂亠亟" 舒 舒弍亳仍仂于 (Avito)
"亠仗仍仂亶 从仂亟舒 仗仂亠亟" 舒 舒弍亳仍仂于 (Avito)"亠仗仍仂亶 从仂亟舒 仗仂亠亟" 舒 舒弍亳仍仂于 (Avito)
"亠仗仍仂亶 从仂亟舒 仗仂亠亟" 舒 舒弍亳仍仂于 (Avito)
AvitoTech
舒于亠仍 仂于亞舒仍ミ, 弍舒仆舒 仂仍舒亟从舒
舒于亠仍 仂于亞舒仍ミ, 弍舒仆舒 仂仍舒亟从舒舒于亠仍 仂于亞舒仍ミ, 弍舒仆舒 仂仍舒亟从舒
舒于亠仍 仂于亞舒仍ミ, 弍舒仆舒 仂仍舒亟从舒
Sergey Platonov
仂仆亳从仆仂于亠仆亳亠 于 Docker 仗亳仄亠舒仄亳
仂仆亳从仆仂于亠仆亳亠 于 Docker  仗亳仄亠舒仄亳仂仆亳从仆仂于亠仆亳亠 于 Docker  仗亳仄亠舒仄亳
仂仆亳从仆仂于亠仆亳亠 于 Docker 仗亳仄亠舒仄亳
仄亳亳亶 弌仂仍仂于
仂亠 舒亰于于舒仆亳亠 舒弍仍仂仆仂于 亳 舒亳从亳 于 Mail.ru, 亳从仂仍舒亶 仂仆亟舒仂于
仂亠 舒亰于于舒仆亳亠 舒弍仍仂仆仂于 亳 舒亳从亳 于 Mail.ru, 亳从仂仍舒亶 仂仆亟舒仂于仂亠 舒亰于于舒仆亳亠 舒弍仍仂仆仂于 亳 舒亳从亳 于 Mail.ru, 亳从仂仍舒亶 仂仆亟舒仂于
仂亠 舒亰于于舒仆亳亠 舒弍仍仂仆仂于 亳 舒亳从亳 于 Mail.ru, 亳从仂仍舒亶 仂仆亟舒仂于
Fuenteovejuna
仆亠亟亠仆亳亠 Docker 于 仗仂亠 舒亰舒弍仂从亳 亟亠仄仂仆仂于. 仂从仍舒亟 仂仆舒仆亳仆舒 舒仗仂于舒 仆舒 ...
仆亠亟亠仆亳亠 Docker 于 仗仂亠 舒亰舒弍仂从亳 亟亠仄仂仆仂于. 仂从仍舒亟 仂仆舒仆亳仆舒 舒仗仂于舒 仆舒 ...仆亠亟亠仆亳亠 Docker 于 仗仂亠 舒亰舒弍仂从亳 亟亠仄仂仆仂于. 仂从仍舒亟 仂仆舒仆亳仆舒 舒仗仂于舒 仆舒 ...
仆亠亟亠仆亳亠 Docker 于 仗仂亠 舒亰舒弍仂从亳 亟亠仄仂仆仂于. 仂从仍舒亟 仂仆舒仆亳仆舒 舒仗仂于舒 仆舒 ...
Badoo Development
Docker networking
Docker networkingDocker networking
Docker networking
Badoo Development
仍 亠亞仂 仄 亟亠仍舒仍亳 于仂亶 舒从仂仆亶 亠亶仄于仂从 亳 仂 亳亰 仂亞仂 于仍仂?
仍 亠亞仂 仄 亟亠仍舒仍亳 于仂亶 舒从仂仆亶 亠亶仄于仂从 亳 仂 亳亰 仂亞仂 于仍仂?仍 亠亞仂 仄 亟亠仍舒仍亳 于仂亶 舒从仂仆亶 亠亶仄于仂从 亳 仂 亳亰 仂亞仂 于仍仂?
仍 亠亞仂 仄 亟亠仍舒仍亳 于仂亶 舒从仂仆亶 亠亶仄于仂从 亳 仂 亳亰 仂亞仂 于仍仂?
Yauheni Akhotnikau
"仂亠仄 磶从 Lua 仂 亳仆亠亠仆仂?", 亳从 舒于舒亳从亳亳, (Mail.ru Group)
"仂亠仄 磶从 Lua  仂 亳仆亠亠仆仂?", 亳从 舒于舒亳从亳亳, (Mail.ru Group)"仂亠仄 磶从 Lua  仂 亳仆亠亠仆仂?", 亳从 舒于舒亳从亳亳, (Mail.ru Group)
"仂亠仄 磶从 Lua 仂 亳仆亠亠仆仂?", 亳从 舒于舒亳从亳亳, (Mail.ru Group)
Badoo Development
Java 仂亠仆 2013 仍亠从亳 6
Java 仂亠仆 2013 仍亠从亳 6Java 仂亠仆 2013 仍亠从亳 6
Java 仂亠仆 2013 仍亠从亳 6
Technopark
Linux basics. 舒仆亳亠 3.
Linux basics. 舒仆亳亠 3. Linux basics. 舒仆亳亠 3.
Linux basics. 舒仆亳亠 3.
Vikentsi Lapa
Hunting for a C++ package manager
Hunting for a C++ package managerHunting for a C++ package manager
Hunting for a C++ package manager
corehard_by
亊仆 舒弍亳 - RobotFramework: 舒于仂仄舒亳亰亳仂于舒仆仂亠 亠亳仂于舒仆亳亠 亟仍 于亠
亊仆 舒弍亳 - RobotFramework: 舒于仂仄舒亳亰亳仂于舒仆仂亠 亠亳仂于舒仆亳亠 亟仍 于亠 亊仆 舒弍亳 - RobotFramework: 舒于仂仄舒亳亰亳仂于舒仆仂亠 亠亳仂于舒仆亳亠 亟仍 于亠
亊仆 舒弍亳 - RobotFramework: 舒于仂仄舒亳亰亳仂于舒仆仂亠 亠亳仂于舒仆亳亠 亟仍 于亠
Minsk Linux User Group
Asynchrony and coroutines
Asynchrony and coroutinesAsynchrony and coroutines
Asynchrony and coroutines
corehard_by
于亞亠仆亳亶 亠于, 弌++ 于 仂亳亳: 弌舒仆亟舒 磶从舒 亳 亠亞仂 亠舒仍亳亰舒亳
于亞亠仆亳亶 亠于, 弌++ 于 仂亳亳: 弌舒仆亟舒 磶从舒 亳 亠亞仂 亠舒仍亳亰舒亳于亞亠仆亳亶 亠于, 弌++ 于 仂亳亳: 弌舒仆亟舒 磶从舒 亳 亠亞仂 亠舒仍亳亰舒亳
于亞亠仆亳亶 亠于, 弌++ 于 仂亳亳: 弌舒仆亟舒 磶从舒 亳 亠亞仂 亠舒仍亳亰舒亳
Platonov Sergey
Lightweight Static Analysis for Data Race Detection in Operating System Kernels
Lightweight Static Analysis for Data Race Detection in Operating System KernelsLightweight Static Analysis for Data Race Detection in Operating System Kernels
Lightweight Static Analysis for Data Race Detection in Operating System Kernels
Iosif Itkin
丼仂 仆仂于仂亞仂 于 PHP-5.3
丼仂 仆仂于仂亞仂 于 PHP-5.3 丼仂 仆仂于仂亞仂 于 PHP-5.3
丼仂 仆仂于仂亞仂 于 PHP-5.3
phpclub
Coroutines
CoroutinesCoroutines
Coroutines
Aleksandr Mokrov
Perl in da shell
Perl in da shellPerl in da shell
Perl in da shell
Anton Ovchinnikov
Web 仂亠仆 2013 仍亠从亳 9
Web 仂亠仆 2013 仍亠从亳 9Web 仂亠仆 2013 仍亠从亳 9
Web 仂亠仆 2013 仍亠从亳 9
Technopark
"亠仗仍仂亶 从仂亟舒 仗仂亠亟" 舒 舒弍亳仍仂于 (Avito)
"亠仗仍仂亶 从仂亟舒 仗仂亠亟" 舒 舒弍亳仍仂于 (Avito)"亠仗仍仂亶 从仂亟舒 仗仂亠亟" 舒 舒弍亳仍仂于 (Avito)
"亠仗仍仂亶 从仂亟舒 仗仂亠亟" 舒 舒弍亳仍仂于 (Avito)
AvitoTech
舒于亠仍 仂于亞舒仍ミ, 弍舒仆舒 仂仍舒亟从舒
舒于亠仍 仂于亞舒仍ミ, 弍舒仆舒 仂仍舒亟从舒舒于亠仍 仂于亞舒仍ミ, 弍舒仆舒 仂仍舒亟从舒
舒于亠仍 仂于亞舒仍ミ, 弍舒仆舒 仂仍舒亟从舒
Sergey Platonov
仂仆亳从仆仂于亠仆亳亠 于 Docker 仗亳仄亠舒仄亳
仂仆亳从仆仂于亠仆亳亠 于 Docker  仗亳仄亠舒仄亳仂仆亳从仆仂于亠仆亳亠 于 Docker  仗亳仄亠舒仄亳
仂仆亳从仆仂于亠仆亳亠 于 Docker 仗亳仄亠舒仄亳
仄亳亳亶 弌仂仍仂于
仂亠 舒亰于于舒仆亳亠 舒弍仍仂仆仂于 亳 舒亳从亳 于 Mail.ru, 亳从仂仍舒亶 仂仆亟舒仂于
仂亠 舒亰于于舒仆亳亠 舒弍仍仂仆仂于 亳 舒亳从亳 于 Mail.ru, 亳从仂仍舒亶 仂仆亟舒仂于仂亠 舒亰于于舒仆亳亠 舒弍仍仂仆仂于 亳 舒亳从亳 于 Mail.ru, 亳从仂仍舒亶 仂仆亟舒仂于
仂亠 舒亰于于舒仆亳亠 舒弍仍仂仆仂于 亳 舒亳从亳 于 Mail.ru, 亳从仂仍舒亶 仂仆亟舒仂于
Fuenteovejuna
仆亠亟亠仆亳亠 Docker 于 仗仂亠 舒亰舒弍仂从亳 亟亠仄仂仆仂于. 仂从仍舒亟 仂仆舒仆亳仆舒 舒仗仂于舒 仆舒 ...
仆亠亟亠仆亳亠 Docker 于 仗仂亠 舒亰舒弍仂从亳 亟亠仄仂仆仂于. 仂从仍舒亟 仂仆舒仆亳仆舒 舒仗仂于舒 仆舒 ...仆亠亟亠仆亳亠 Docker 于 仗仂亠 舒亰舒弍仂从亳 亟亠仄仂仆仂于. 仂从仍舒亟 仂仆舒仆亳仆舒 舒仗仂于舒 仆舒 ...
仆亠亟亠仆亳亠 Docker 于 仗仂亠 舒亰舒弍仂从亳 亟亠仄仂仆仂于. 仂从仍舒亟 仂仆舒仆亳仆舒 舒仗仂于舒 仆舒 ...
Badoo Development
仍 亠亞仂 仄 亟亠仍舒仍亳 于仂亶 舒从仂仆亶 亠亶仄于仂从 亳 仂 亳亰 仂亞仂 于仍仂?
仍 亠亞仂 仄 亟亠仍舒仍亳 于仂亶 舒从仂仆亶 亠亶仄于仂从 亳 仂 亳亰 仂亞仂 于仍仂?仍 亠亞仂 仄 亟亠仍舒仍亳 于仂亶 舒从仂仆亶 亠亶仄于仂从 亳 仂 亳亰 仂亞仂 于仍仂?
仍 亠亞仂 仄 亟亠仍舒仍亳 于仂亶 舒从仂仆亶 亠亶仄于仂从 亳 仂 亳亰 仂亞仂 于仍仂?
Yauheni Akhotnikau
"仂亠仄 磶从 Lua 仂 亳仆亠亠仆仂?", 亳从 舒于舒亳从亳亳, (Mail.ru Group)
"仂亠仄 磶从 Lua  仂 亳仆亠亠仆仂?", 亳从 舒于舒亳从亳亳, (Mail.ru Group)"仂亠仄 磶从 Lua  仂 亳仆亠亠仆仂?", 亳从 舒于舒亳从亳亳, (Mail.ru Group)
"仂亠仄 磶从 Lua 仂 亳仆亠亠仆仂?", 亳从 舒于舒亳从亳亳, (Mail.ru Group)
Badoo Development
Java 仂亠仆 2013 仍亠从亳 6
Java 仂亠仆 2013 仍亠从亳 6Java 仂亠仆 2013 仍亠从亳 6
Java 仂亠仆 2013 仍亠从亳 6
Technopark
Linux basics. 舒仆亳亠 3.
Linux basics. 舒仆亳亠 3. Linux basics. 舒仆亳亠 3.
Linux basics. 舒仆亳亠 3.
Vikentsi Lapa
Hunting for a C++ package manager
Hunting for a C++ package managerHunting for a C++ package manager
Hunting for a C++ package manager
corehard_by
亊仆 舒弍亳 - RobotFramework: 舒于仂仄舒亳亰亳仂于舒仆仂亠 亠亳仂于舒仆亳亠 亟仍 于亠
亊仆 舒弍亳 - RobotFramework: 舒于仂仄舒亳亰亳仂于舒仆仂亠 亠亳仂于舒仆亳亠 亟仍 于亠 亊仆 舒弍亳 - RobotFramework: 舒于仂仄舒亳亰亳仂于舒仆仂亠 亠亳仂于舒仆亳亠 亟仍 于亠
亊仆 舒弍亳 - RobotFramework: 舒于仂仄舒亳亰亳仂于舒仆仂亠 亠亳仂于舒仆亳亠 亟仍 于亠
Minsk Linux User Group
Asynchrony and coroutines
Asynchrony and coroutinesAsynchrony and coroutines
Asynchrony and coroutines
corehard_by
于亞亠仆亳亶 亠于, 弌++ 于 仂亳亳: 弌舒仆亟舒 磶从舒 亳 亠亞仂 亠舒仍亳亰舒亳
于亞亠仆亳亶 亠于, 弌++ 于 仂亳亳: 弌舒仆亟舒 磶从舒 亳 亠亞仂 亠舒仍亳亰舒亳于亞亠仆亳亶 亠于, 弌++ 于 仂亳亳: 弌舒仆亟舒 磶从舒 亳 亠亞仂 亠舒仍亳亰舒亳
于亞亠仆亳亶 亠于, 弌++ 于 仂亳亳: 弌舒仆亟舒 磶从舒 亳 亠亞仂 亠舒仍亳亰舒亳
Platonov Sergey
Lightweight Static Analysis for Data Race Detection in Operating System Kernels
Lightweight Static Analysis for Data Race Detection in Operating System KernelsLightweight Static Analysis for Data Race Detection in Operating System Kernels
Lightweight Static Analysis for Data Race Detection in Operating System Kernels
Iosif Itkin
丼仂 仆仂于仂亞仂 于 PHP-5.3
丼仂 仆仂于仂亞仂 于 PHP-5.3 丼仂 仆仂于仂亞仂 于 PHP-5.3
丼仂 仆仂于仂亞仂 于 PHP-5.3
phpclub
Web 仂亠仆 2013 仍亠从亳 9
Web 仂亠仆 2013 仍亠从亳 9Web 仂亠仆 2013 仍亠从亳 9
Web 仂亠仆 2013 仍亠从亳 9
Technopark

Similar to 08 linux-course (20)

Romanova techforum bash
Romanova techforum bashRomanova techforum bash
Romanova techforum bash
kuchinskaya
PowerShell
PowerShellPowerShell
PowerShell
GetDev.NET
Scripting languages
Scripting languagesScripting languages
Scripting languages
Lev Panov
仗亠舒亳仂仆仆亠 亳亠仄 亳 亠亟
仗亠舒亳仂仆仆亠 亳亠仄 亳 亠亟仗亠舒亳仂仆仆亠 亳亠仄 亳 亠亟
仗亠舒亳仂仆仆亠 亳亠仄 亳 亠亟
Alexandr Konfidentsialno
C++ 舒亰仂于亶. 舒仆亳亠 04.
C++ 舒亰仂于亶. 舒仆亳亠 04.C++ 舒亰仂于亶. 舒仆亳亠 04.
C++ 舒亰仂于亶. 舒仆亳亠 04.
Igor Shkulipa
个亳仍亳仗仗 弌亳仆亳亳仆 - 弌亳亠仄 从仂仆仂仍 于亠亳亶
个亳仍亳仗仗 弌亳仆亳亳仆 - 弌亳亠仄 从仂仆仂仍 于亠亳亶个亳仍亳仗仗 弌亳仆亳亳仆 - 弌亳亠仄 从仂仆仂仍 于亠亳亶
个亳仍亳仗仗 弌亳仆亳亳仆 - 弌亳亠仄 从仂仆仂仍 于亠亳亶
Yandex
亠从亳 2. , 仂 于 仂亠仍亳 亰仆舒 仂 仆从亳 于 Python.
亠从亳 2. , 仂 于 仂亠仍亳 亰仆舒 仂 仆从亳 于 Python.亠从亳 2. , 仂 于 仂亠仍亳 亰仆舒 仂 仆从亳 于 Python.
亠从亳 2. , 仂 于 仂亠仍亳 亰仆舒 仂 仆从亳 于 Python.
Roman Brovko
Linux (pipes)
Linux (pipes) Linux (pipes)
Linux (pipes)
Mihail Nesterov
NODE.JS
  NODE.JS   NODE.JS
NODE.JS
Pavel Tsukanov
弍亠从仆仂-亳亠仆亳仂于舒仆仆仂亠 仂亞舒仄仄亳仂于舒仆亳亠 仆舒 C++, 亠从亳亳 1 亳 2
弍亠从仆仂-亳亠仆亳仂于舒仆仆仂亠 仂亞舒仄仄亳仂于舒仆亳亠 仆舒 C++, 亠从亳亳 1 亳 2弍亠从仆仂-亳亠仆亳仂于舒仆仆仂亠 仂亞舒仄仄亳仂于舒仆亳亠 仆舒 C++, 亠从亳亳 1 亳 2
弍亠从仆仂-亳亠仆亳仂于舒仆仆仂亠 仂亞舒仄仄亳仂于舒仆亳亠 仆舒 C++, 亠从亳亳 1 亳 2
Dima Dzuba
The basic design of the PHP language
 The basic design of the PHP language The basic design of the PHP language
The basic design of the PHP language
Vladimir Burdaev
Tech Talks @NSU: 舒从 仗亳亳 亟舒从仂仆舒: 于于亠亟亠仆亳亠 于 LLVM
Tech Talks @NSU: 舒从 仗亳亳 亟舒从仂仆舒: 于于亠亟亠仆亳亠 于 LLVMTech Talks @NSU: 舒从 仗亳亳 亟舒从仂仆舒: 于于亠亟亠仆亳亠 于 LLVM
Tech Talks @NSU: 舒从 仗亳亳 亟舒从仂仆舒: 于于亠亟亠仆亳亠 于 LLVM
Tech Talks @NSU
舒从 仗亳亳 亟舒从仂仆舒: 于于亠亟亠仆亳亠 于 LLVM
舒从 仗亳亳 亟舒从仂仆舒: 于于亠亟亠仆亳亠 于 LLVM舒从 仗亳亳 亟舒从仂仆舒: 于于亠亟亠仆亳亠 于 LLVM
舒从 仗亳亳 亟舒从仂仆舒: 于于亠亟亠仆亳亠 于 LLVM
Tech Talks @NSU
仗亠舒亳仂仆仆亠 亳亠仄
仗亠舒亳仂仆仆亠 亳亠仄仗亠舒亳仂仆仆亠 亳亠仄
仗亠舒亳仂仆仆亠 亳亠仄
yaevents
Enter: legacy code
Enter: legacy codeEnter: legacy code
Enter: legacy code
Kamil Samigullin
亳仆仆亶 DevOps. 弌亠从亠 42.
亳仆仆亶 DevOps. 弌亠从亠 42.亳仆仆亶 DevOps. 弌亠从亠 42.
亳仆仆亶 DevOps. 弌亠从亠 42.
Nikita Borzykh
Streaming replication in practice
Streaming replication in practiceStreaming replication in practice
Streaming replication in practice
Alexey Lesovsky
Git for you
Git for youGit for you
Git for you
Pavel Alexeev
Romanova techforum bash
Romanova techforum bashRomanova techforum bash
Romanova techforum bash
kuchinskaya
Scripting languages
Scripting languagesScripting languages
Scripting languages
Lev Panov
仗亠舒亳仂仆仆亠 亳亠仄 亳 亠亟
仗亠舒亳仂仆仆亠 亳亠仄 亳 亠亟仗亠舒亳仂仆仆亠 亳亠仄 亳 亠亟
仗亠舒亳仂仆仆亠 亳亠仄 亳 亠亟
Alexandr Konfidentsialno
C++ 舒亰仂于亶. 舒仆亳亠 04.
C++ 舒亰仂于亶. 舒仆亳亠 04.C++ 舒亰仂于亶. 舒仆亳亠 04.
C++ 舒亰仂于亶. 舒仆亳亠 04.
Igor Shkulipa
个亳仍亳仗仗 弌亳仆亳亳仆 - 弌亳亠仄 从仂仆仂仍 于亠亳亶
个亳仍亳仗仗 弌亳仆亳亳仆 - 弌亳亠仄 从仂仆仂仍 于亠亳亶个亳仍亳仗仗 弌亳仆亳亳仆 - 弌亳亠仄 从仂仆仂仍 于亠亳亶
个亳仍亳仗仗 弌亳仆亳亳仆 - 弌亳亠仄 从仂仆仂仍 于亠亳亶
Yandex
亠从亳 2. , 仂 于 仂亠仍亳 亰仆舒 仂 仆从亳 于 Python.
亠从亳 2. , 仂 于 仂亠仍亳 亰仆舒 仂 仆从亳 于 Python.亠从亳 2. , 仂 于 仂亠仍亳 亰仆舒 仂 仆从亳 于 Python.
亠从亳 2. , 仂 于 仂亠仍亳 亰仆舒 仂 仆从亳 于 Python.
Roman Brovko
弍亠从仆仂-亳亠仆亳仂于舒仆仆仂亠 仂亞舒仄仄亳仂于舒仆亳亠 仆舒 C++, 亠从亳亳 1 亳 2
弍亠从仆仂-亳亠仆亳仂于舒仆仆仂亠 仂亞舒仄仄亳仂于舒仆亳亠 仆舒 C++, 亠从亳亳 1 亳 2弍亠从仆仂-亳亠仆亳仂于舒仆仆仂亠 仂亞舒仄仄亳仂于舒仆亳亠 仆舒 C++, 亠从亳亳 1 亳 2
弍亠从仆仂-亳亠仆亳仂于舒仆仆仂亠 仂亞舒仄仄亳仂于舒仆亳亠 仆舒 C++, 亠从亳亳 1 亳 2
Dima Dzuba
The basic design of the PHP language
 The basic design of the PHP language The basic design of the PHP language
The basic design of the PHP language
Vladimir Burdaev
Tech Talks @NSU: 舒从 仗亳亳 亟舒从仂仆舒: 于于亠亟亠仆亳亠 于 LLVM
Tech Talks @NSU: 舒从 仗亳亳 亟舒从仂仆舒: 于于亠亟亠仆亳亠 于 LLVMTech Talks @NSU: 舒从 仗亳亳 亟舒从仂仆舒: 于于亠亟亠仆亳亠 于 LLVM
Tech Talks @NSU: 舒从 仗亳亳 亟舒从仂仆舒: 于于亠亟亠仆亳亠 于 LLVM
Tech Talks @NSU
舒从 仗亳亳 亟舒从仂仆舒: 于于亠亟亠仆亳亠 于 LLVM
舒从 仗亳亳 亟舒从仂仆舒: 于于亠亟亠仆亳亠 于 LLVM舒从 仗亳亳 亟舒从仂仆舒: 于于亠亟亠仆亳亠 于 LLVM
舒从 仗亳亳 亟舒从仂仆舒: 于于亠亟亠仆亳亠 于 LLVM
Tech Talks @NSU
仗亠舒亳仂仆仆亠 亳亠仄
仗亠舒亳仂仆仆亠 亳亠仄仗亠舒亳仂仆仆亠 亳亠仄
仗亠舒亳仂仆仆亠 亳亠仄
yaevents
亳仆仆亶 DevOps. 弌亠从亠 42.
亳仆仆亶 DevOps. 弌亠从亠 42.亳仆仆亶 DevOps. 弌亠从亠 42.
亳仆仆亶 DevOps. 弌亠从亠 42.
Nikita Borzykh
Streaming replication in practice
Streaming replication in practiceStreaming replication in practice
Streaming replication in practice
Alexey Lesovsky

08 linux-course

  • 1. Bash scripting. Advanced. 于亠亟亠仆亳亠 于 GNU/LiNUX Linux administration course. May 5, 2020
  • 2. 1 Manipulate the different I/O streams with I/O Redirection 2 Repeat operations with loops. 3 Group pieces of code. 4 Expansions cont. 5 if alternatives. 6 Debugging scripts. 7 Command types. Linux administration course. 1
  • 3. 1 Manipulate the different I/O streams with I/O Redirection 2 Repeat operations with loops. 3 Group pieces of code. 4 Expansions cont. 5 if alternatives. 6 Debugging scripts. 7 Command types. Linux administration course. 2
  • 4. stdin, stdout, stderr C 从舒亢亟仄 仗仂亠仂仄 于磶舒仆 仗仂仂从亳 于于仂亟舒于于仂亟舒 舒亶仍仂于亠 亟e从亳仗仂 stdin, stdout, stderr. 亳仄亠. 仂仄亠舒 舒亶仍仂于 亟e从亳仗仂仂于 亳 仂亶于. 1 echo / dev / std* 2 echo / dev / std* | xargs t n 1 readlink 3 lsof ap $BASHPID d 0 ,1 ,2 Linux administration course. 2
  • 5. 仂仆于亠亠 STDIN process STDERR STDOUT 舒亢亟仂亠 仗亳仍仂亢亠仆亳亠 仂从于舒亠 3 舒仆亟舒仆 舒亶仍仂于 亟亠从亳仗仂舒 (file descriptor) stdin (fd 0), stdout(fd 1), stderr (fd 2) Linux administration course. 3
  • 6. 仂仆于亠亠 STDIN process STDIN processSTDIN process STDERR STDERR STDERR STDOUT STDOUTSTDOUT 舒亢亟仂亠 仗亳仍仂亢亠仆亳亠 仂从于舒亠 3 舒仆亟舒仆 舒亶仍仂于 亟亠从亳仗仂舒 (file descriptor) stdin (fd 0), stdout(fd 1), stderr (fd 2) 亳仍仂亢亠仆亳 仄仂亞 舒弍仂舒 从舒从 亳仍 亳亰 STDIN 于 STDOUT, 仄仂亢仆仂 仂弍亠亟亳仆 仆亠从仂仍从仂 仗亳仍仂亢亠仆亳亶 于 从仂仆于亠亶亠 弌亳仆舒从亳 <app1> | <app2> Linux administration course. 3
  • 7. 亠亠仆舒仗舒于仍亠仆亳 于 舒亶仍 亠亠仆舒仗舒于仍亠仆亳亠 stdout FD=1 弌 仂亰亟舒仆亳亠仄 仆仂于仂亞仂 舒亶仍舒 command > file 亳仍亳 command 1> file 舒仗亳仄亠 cat file1 file2 > file3 弌 亟仂仗仂仍仆亠仆亳亠仄 亠于ム亠亞仂 command >> file Linux administration course. 4
  • 8. 亠亠仆舒仗舒于仍亠仆亳 于 舒亶仍 亠亠仆舒仗舒于仍亠仆亳亠 stdout FD=1 弌 仂亰亟舒仆亳亠仄 仆仂于仂亞仂 舒亶仍舒 command > file 亳仍亳 command 1> file 舒仗亳仄亠 cat file1 file2 > file3 弌 亟仂仗仂仍仆亠仆亳亠仄 亠于ム亠亞仂 command >> file 亠亠仆舒仗舒于仍亠仆亳 stdin FD=0 command < file 亳仍亳 command <&0 file Linux administration course. 4
  • 9. 亠亠仆舒仗舒于仍亠仆亳 于 舒亶仍 亠亠仆舒仗舒于仍亠仆亳亠 stdout FD=1 弌 仂亰亟舒仆亳亠仄 仆仂于仂亞仂 舒亶仍舒 command > file 亳仍亳 command 1> file 舒仗亳仄亠 cat file1 file2 > file3 弌 亟仂仗仂仍仆亠仆亳亠仄 亠于ム亠亞仂 command >> file 亠亠仆舒仗舒于仍亠仆亳 stdin FD=0 command < file 亳仍亳 command <&0 file 亠亠仆舒仗舒于仍亠仆亳 stderr FD=2 command1 2>&1 | command2 command 1>file 2>&1 command 2>file 1>&2 Linux administration course. 4
  • 10. 亳仄亠仆亠仆亳亠 仗亠亠仆舒仗舒于仍亠仆亳 仗仂仂从仂于. 舒弍仂舒亠 仍ミ英仄 亳仗仂仄 舒亶仍仂于. 弌仂亰亟舒 仆仂于亶 舒亶仍 亳仍亳 仂弍仆仍亳 于ム亳亶 > 亠亠仆舒仗舒于亳 亟仍亳仆仆亶 于于仂亟 从仂仄舒仆亟 于 舒亶仍 > 仂仍舒仍亳于仂亠 于仗仂仍仆亠仆亳亠 从仂仄舒仆亟 >/dev/null 丼亠仆亳亠 亳亰 仗亠舒亶仍舒 </dev/urandom, /dev/zero 丼亠仆亳亠 亳亰 亟舒仆仆 亳亰 舒亶仍舒 < 舒仂亶从舒 亳亠仄. echo > 仂仗亠亟亠仍亠仆仆亠 舒亶仍 于 /proc/ 亳仍亳 /sys/ cat /dev/zero > /dev/sda 亟舒仍亳 亳亠仄 Linux administration course. 5
  • 11. 1 Manipulate the different I/O streams with I/O Redirection 2 Repeat operations with loops. 3 Group pieces of code. 4 Expansions cont. 5 if alternatives. 6 Debugging scripts. 7 Command types. Linux administration course. 6
  • 12. 仆仂于仆亠 从仂仆从亳亳 亟仍 亳从仍仂于 for 亳从仍 仗仂仄仂舒 (foreach), 亳从仍 仂 亠亳从仂仄 while, until 亳从仍 仗亠亟仍仂于亳亠仄 break, continue 亟仂仂仆亶 于仂亟, 仗仂仗从 亳亠舒亳亳 Linux administration course. 6
  • 13. 丶亳从仍 for. 亳仄亠. 亠亶于亳亠 仆舒亟 舒亶仍舒仄亳. 1 f o r file in * 2 do md5sum $file 3 done 亠亠亳仍亠仆亳亠 仍亠仄亠仆仂于. 1 f o r planet in Mars Earth Mercury Saturn 2 do ssh $planet uname a > $planet 3 done Linux administration course. 7
  • 14. 丶亳从仍 for. 丶亳仂于舒 仗仂仍亠亟仂于舒亠仍仆仂. 亳仄亠 亞亠仆亠舒亳亳. 1 f o r num in 1 2 3 4 5 6 7 8 9 10 # 仗仂仂亠 仗亠亠亳仍亠仆亳亠 2 do ping 1 9 2 . 1 6 8 . 1 0 . $num 3 done 4 5 f o r num in $ ( seq 1 10) # 亞亠仆亠舒亳 亳亰 于仆亠仆亠亶 从仂仄舒仆亟 6 do ping 1 9 2 . 1 6 8 . 1 0 . $num 7 done 8 9 f o r num in { 1 . . 1 0 } # 亞亠仆亠舒亳 于仂亠仆仆仄亳 亠亟于舒仄亳 10 do ping 1 9 2 . 1 6 8 . 1 0 . $num 11 done Linux administration course. 8
  • 15. 丶亳从仍 for. 丶亳仂于舒 仗仂仍亠亟仂于舒亠仍仆仂. 亳仄亠亳亠从亳亶 仂仄舒 (Clike) 1 f o r ( ( i =1; i <11; i ++) ) 2 do 3 echo $i 4 done 亠从仂仍从仂 仗亠亠仄亠仆仆 1 f o r ( ( a =1 , b =1; a <= LIMIT ; a ++ , b ++) ) 2 do 3 echo n $a$b 4 done Linux administration course. 9
  • 16. 丶亳从仍 for. 仂亟 亳亰 亳从仍舒. 亠 于舒亢亠仆亳. 亠亰仍舒 仗仂 仄仂仍舒仆亳 1. 1 f o r ( ( i =1; ; i ++) ) 2 do 3 echo $i 4 [ $ i eq 10 ] && break 5 done Linux administration course. 10
  • 17. 丶亳从仍 while,until 1 while expr1 ; . . . exprN 2 do 3 op 4 done 亳仄亠仆ム 从仂亞亟舒 仆亢仆仂 仗仂于仂 亟仂 于仗仂仍仆亠仆亳 从舒从仂亞仂仂 仂弍亳, 从仂亞亟舒 从仂仍亳亠于仂 仍亠仄亠仆仂于 仆亠亳亰于亠仆仂 亰舒舒仆亠亠 仍亳弍仂 亳亰仄亠仆磳 亟亳仆舒仄亳亠从亳. 舒仗亳仄亠 o从仂仆舒仆亳亠 舒亶仍舒, 仗仂仍亠仆 仗仂仍亠亟仆亳亶 舒亞仄亠仆 从仂仄舒仆亟仆仂亶 仂从亳, 于于仂亟 亠从舒 仗仂仍亰仂于舒亠仍亠仄, 仂亢亳亟舒仆亳亠 仂舒 于 亠亳 仗仂仍亠 仗亠亰舒亞亰从亳. Linux administration course. 11
  • 18. 亳仄亠 亳仗仂仍亰仂于舒仆亳 while 亠亠弍亳舒亠仄 舒亞仄亠仆. 1 while [ [ n $1 ] ] 2 do 3 echo $1 4 s h i f t # rename the p o s i t i o n a l parameters $N +1 , $N+2 . . . to $1 , $2 (N=1) 5 done Linux administration course. 12
  • 19. IFS internal field separator IFS 亠亠仄亠仆仆舒, 亠亞仍亳ム舒 舒亰亟亠仍亠仆亳亠 仗舒舒仄亠仂于 (舒亞仄亠仆仂于) 仆舒 仍仂于舒. 仗仂仍亰亠: 于仂 于亠仄 舒从亳 仗舒舒仄亠仂于 从仂仄舒仆亟仆仂亶 仂从亳 仗亠亠亟 于仗仂仍仆亠仆亳亠仄 亠亟舒从亳仂于舒仆亳亠 从仂仄舒仆亟仆仂亶 仂从亳 (亟舒仍亠仆亳亠 仍仂于舒, Ctrl+W) 亠仆亳亠 于于仂亟舒 仗仂仍亰仂于舒亠仍 从仂仄舒仆亟仆仂亶 read 仆舒亠仆亳亠 仗仂 仄仂仍舒仆亳: "<仗仂弍亠仍><舒弍仍亳><仗亠亠于仂亟 仂从亳> " Linux administration course. 13
  • 20. 亠亠仆舒仗舒于仍亠仆亳亠 亳亰 亳从仍舒. 舒亠. 1 while IFS= : read name pass uid guid comment home shell ; do 2 echo $name $uid $guid $home $shell 3 done < / etc / passwd 仂仂仆仂亠 亠仆亳亠 亳亰 舒亶仍舒. 1 while IFS= read r line ; do 2 printf %s n $ l i n e 3 done < $ f i l e Linux administration course. 14
  • 21. 仆亠仆亳亠 从仂仄舒仆亟. 舒仂于亠 仂仗亠舒亳亳 舒亶仍舒仄亳 舒仆舒仍仂亞 亳从仍仂于 仂仄舒仆亟舒 find 1 find . name *. c exec stat { } ; 仂仄舒仆亟舒 xargs 1 echo / dev / std* | xargs n1 readlink Linux administration course. 15
  • 22. 丶亳从仍 until. 亳仄亠. 亢亳亟舒亠仄 仂 仗仂仍亠 仗亠亠亰舒亞亰从亳. 1 u n t i l ping q c 3 $host 1 >/ dev / null 2>&1 && nc z $host 22 2 do 3 sleep 1 4 echo unavailable ; 5 done 6 Linux administration course. 16
  • 23. 1 Manipulate the different I/O streams with I/O Redirection 2 Repeat operations with loops. 3 Group pieces of code. 4 Expansions cont. 5 if alternatives. 6 Debugging scripts. 7 Command types. Linux administration course. 17
  • 24. 个仆从亳亳 仄亠仆仂于舒仆仆亠 亠亳仄亠仆仂于舒仆仆亠 个仆从亳亳 于 shell 仄仂亞 亳仗仂仍亰仂于舒 从舒从 仂弍仆亠 仗仂亞舒仄仄, 从仂仂亠: 亳仆亳仄舒ム 仗仂亰亳亳仂仆仆亠 仗舒舒仄亠; 于仂亰于舒舒ム 舒; 仂亞 亳仗仂仍亰仂于舒 于 从舒亠于亠 亳仂仆亳从舒 仍亳弍仂 仗亳亠仄仆亳从舒 仗亳 仗亠亠仆舒仗舒于仍亠仆亳 于于仂亟舒/于于仂亟舒. Linux administration course. 17
  • 25. 个仆从亳亳: 亳仆舒从亳 仍舒亳亠从亳亶 亳仆舒从亳 c 从仍ム亠于仄 仍仂于仂仄 function: 1 function function_name { 2 command . . . 3 } 仂舒弍亠仍仆亶 (Cstyle): 1 function_name ( ) 2 { 3 command . . . 4 } 亟仆仂仂仆亶: 1 function_name ( ) { command . . . ; } Linux administration course. 18
  • 26. 亳仄亠 (仆舒舒仍仂) 1 # ! / bin / bash 2 3 function help { 4 echo 仗仂仍亰仂于舒仆亳亠 : $0 < string > 5 e x i t 1 6 } 7 8 f1 ( ) { 9 echo 亰于舒仆舒 仆从亳 $FUNCNAME $# 舒亞仄亠仆舒仄亳 10 } 11 12 f2 ( ) { 13 while read str ; do 14 echo $ { FUNCNAME } : 仗仂亳舒仆舒 仂从舒 : $str 15 done 16 } Linux administration course. 19
  • 27. 亳仄亠 (仂从仂仆舒仆亳亠) 1 [ $# eq 0 ] && help 2 3 f1 $@ 4 5 { f o r ( ( i =0; i <5; i ++) ) ; do 6 echo $@ 7 done } | f2 8 9 e x i t Linux administration course. 20
  • 28. 仂从舒仍仆亠 仗亠亠仄亠仆仆亠 亠亠仄亠仆仆亠 仂弍磦仍亠仆仆亠 仗亠亳从仂仄 local 于亳亟仆 仂仍从仂 于仆亳 仂弍磦仍亠仆仆仂亞仂 弍仍仂从舒. 1 # ! / bin / bash 2 3 VAR= t e s t 4 f1 ( ) { 5 l o c a l VAR=test1 6 echo Function $ { FUNCNAME } : VAR=$VAR 7 } 8 f2 ( ) { 9 VAR=test2 10 echo Function $ { FUNCNAME } : VAR=$VAR 11 } 1 echo Before f1 : VAR=$VAR 2 f1 3 echo Before f2 : VAR=$VAR 4 f2 5 echo After f2 : VAR=$VAR 6 7 e x i t Linux administration course. 21
  • 29. 1 Manipulate the different I/O streams with I/O Redirection 2 Repeat operations with loops. 3 Group pieces of code. 4 Expansions cont. 5 if alternatives. 6 Debugging scripts. 7 Command types. Linux administration course. 22
  • 30. 仂亟舒仆仂于从舒 亟仂仄舒仆 亟亳亠从仂亳 Tilde expansion ~ 1 echo ~ 2 echo ~ / . ssh 3 echo $HOME / . ssh 4 echo ~test01 / . ssh / Linux administration course. 22
  • 31. 仂亟舒仆仂于从舒 亟仂仄舒仆 亟亳亠从仂亳 Tilde expansion ~ 1 echo ~ 2 echo ~ / . ssh 3 echo $HOME / . ssh 4 echo ~test01 / . ssh / ~ 仂从舒亠仆亳亠 $HOME ~user/ $HOME 亟仍 仗仂仍亰仂于舒亠仍 user / 亳仄于仂仍 亰舒于亠舒亠 亟亠亶于亳亠 ~ 丿亳仂从仂 仗亳仄亠仆磳 于 从亳仗舒, 仆舒 舒仆亳舒 亟仂从仄亠仆舒亳亳 Linux administration course. 22
  • 33. 仂亟舒仆仂于从舒 从仂仄舒仆亟 弌亳仆舒从亳: 油command油 $(command) 舒亟舒仆亳亠 亳于仂亳 仗亠亠仄亠仆仆仂亶 LIST 亠亰仍舒 于仗仂仍仆亠仆亳 从仂仄舒仆亟 ls -1 于亠亳 仆舒 从舒仆 仗亠亠仄亠仆仆 LIST Linux administration course. 23
  • 34. 弌仗亠亳仄于仂仍 # 仂从舒 仗仂仍亠 # 磦仍磳 从仂仄仄亠仆舒亳亠仄 ; 舒亰亟亠仍亠仆亳亠 从仂仄舒仆亟 : NOP 仂仗亠舒仂 (仗仂仂亢 仆舒 于仂亠仆仆亶 于亰仂于 true) source 亳仍亳 . 从亳仗 于仗仂仍仆磳 于 亠从亠仄 从亰亠仄仗仍亠 shell Linux administration course. 24
  • 35. 1 Manipulate the different I/O streams with I/O Redirection 2 Repeat operations with loops. 3 Group pieces of code. 4 Expansions cont. 5 if alternatives. 6 Debugging scripts. 7 Command types. Linux administration course. 25
  • 36. 丕仗舒于仍ム亳亠 仂仗亠舒仂 仂亢仆仂 亟亠仍舒 亠仗仂从亳 从仂仄舒仆亟: command1 && command2 || command3 command1 && command2 && command3 && ... 亳仄亠仆亠仆亳亠 仂仗亠舒仂仂于 && 亳 ||: 亰仄亠仆ム 仗仂于亠亟亠仆亳亠 从仂亟舒 于 亰舒于亳亳仄仂亳 仂 仗亠仆仂亳 于仗仂仍仆亠仆亳 从仂仄舒仆亟 弍亠亟亳仆ム 从仂仄舒仆亟 丕仍舒ム 亳舒亠仄仂 从仂亟舒 亟仍 仗仂 仗仂于亠仂从. 亟仆舒 仂从舒 vs 亳 于 if 仂 亟仍亳仆仆亠 亠仗仂从亳 仍仂亢仆仂 仂仍舒亢亳于舒 亳 仗仂亟亟亠亢亳于舒 Linux administration course. 25
  • 37. Command chain example It only takes three commands to install Gentoo Linux administration course. 26
  • 38. Command chain example It only takes three commands to install Gentoo 1 cfdisk / dev / hda && mkfs . xfs / dev / hda1 && mount / dev / hda1 / mnt / gentoo / && chroot / mnt / gentoo / && envupdate && . / etc / profile && emerge sync && cd / usr / portage && scripts / bootsrap . sh && emerge system && emerge vim && vi / etc / fstab && emerge gentoodev sources && cd / usr / src / linux && make menuconfig && make install modules_install && emerge gnome mozillafirefox openoffice && emerge grub && cp / boot / grub / grub . conf . sample / boot / grub / grub . conf && vi / boot / grub / grub . conf && grub && init 6 Linux administration course. 26
  • 39. Command chain example It only takes three commands to install Gentoo 1 cfdisk / dev / hda && mkfs . xfs / dev / hda1 && mount / dev / hda1 / mnt / gentoo / && chroot / mnt / gentoo / && envupdate && . / etc / profile && emerge sync && cd / usr / portage && scripts / bootsrap . sh && emerge system && emerge vim && vi / etc / fstab && emerge gentoodev sources && cd / usr / src / linux && make menuconfig && make install modules_install && emerge gnome mozillafirefox openoffice && emerge grub && cp / boot / grub / grub . conf . sample / boot / grub / grub . conf && vi / boot / grub / grub . conf && grub && init 6 That is the first one Linux administration course. 26
  • 40. 丕仍仂于仆亠 仂仗亠舒仂 && || 仗仂仍仆亳 从仂仄舒仆亟: 1 cd video && echo Exit code $? Is OK . I am watching video . 2 mkdir video # 亰舒仗亳 仗亠亟亟 从仂仄舒仆亟 亠亠 舒亰 Linux administration course. 27
  • 41. 丕仍仂于仆亠 仂仗亠舒仂 && || 仗仂仍仆亳 从仂仄舒仆亟: 1 cd video && echo Exit code $? Is OK . I am watching video . 2 mkdir video # 亰舒仗亳 仗亠亟亟 从仂仄舒仆亟 亠亠 舒亰 弌亳仆舒从亳: command1 && command2 O弍仂仍仂从舒 于仗仂仍仆磳 command2 亠仍亳 仗亠仆仂 于仗仂仍仆亳仍舒 command1. 仂亞亳亠从舒 仂仗亠舒亳 (AND) Linux administration course. 27
  • 42. 丕仍仂于仆亠 仂仗亠舒仂 && || 仗仂仍仆亳 从仂仄舒仆亟: 1 cd video && echo Exit code $? Is OK . I am watching video . 2 mkdir video # 亰舒仗亳 仗亠亟亟 从仂仄舒仆亟 亠亠 舒亰 弌亳仆舒从亳: command1 && command2 O弍仂仍仂从舒 于仗仂仍仆磳 command2 亠仍亳 仗亠仆仂 于仗仂仍仆亳仍舒 command1. 仂亞亳亠从舒 仂仗亠舒亳 (AND) 仗仂仍仆亳 从仂仄舒仆亟: Linux administration course. 27
  • 43. 丕仍仂于仆亠 仂仗亠舒仂 && || 仗仂仍仆亳 从仂仄舒仆亟: 1 cd video && echo Exit code $? Is OK . I am watching video . 2 mkdir video # 亰舒仗亳 仗亠亟亟 从仂仄舒仆亟 亠亠 舒亰 弌亳仆舒从亳: command1 && command2 O弍仂仍仂从舒 于仗仂仍仆磳 command2 亠仍亳 仗亠仆仂 于仗仂仍仆亳仍舒 command1. 仂亞亳亠从舒 仂仗亠舒亳 (AND) 仗仂仍仆亳 从仂仄舒仆亟: 1 cd video | | echo Exit code $ ? . Video is not available 2 rmdir video # 丕亟舒仍亳仄 亳 仗仂于仂亳仄 亠亠 舒亰 仗亠于 从仂仄舒仆亟 . Linux administration course. 27
  • 44. 丕仍仂于仆亠 仂仗亠舒仂 && || 仗仂仍仆亳 从仂仄舒仆亟: 1 cd video && echo Exit code $? Is OK . I am watching video . 2 mkdir video # 亰舒仗亳 仗亠亟亟 从仂仄舒仆亟 亠亠 舒亰 弌亳仆舒从亳: command1 && command2 O弍仂仍仂从舒 于仗仂仍仆磳 command2 亠仍亳 仗亠仆仂 于仗仂仍仆亳仍舒 command1. 仂亞亳亠从舒 仂仗亠舒亳 (AND) 仗仂仍仆亳 从仂仄舒仆亟: 1 cd video | | echo Exit code $ ? . Video is not available 2 rmdir video # 丕亟舒仍亳仄 亳 仗仂于仂亳仄 亠亠 舒亰 仗亠于 从仂仄舒仆亟 . Linux administration course. 27
  • 45. 1 Manipulate the different I/O streams with I/O Redirection 2 Repeat operations with loops. 3 Group pieces of code. 4 Expansions cont. 5 if alternatives. 6 Debugging scripts. 7 Command types. Linux administration course. 28
  • 46. 从仍ム亠仆亳亠 亠亢亳仄舒 仂仍舒亟从亳 I 仗仂仍亰亠 从仂仄舒仆亟舒 set 亟仍 舒从亳于亳亰舒亳亳 舒亰仍亳仆 亠亢亳仄仂于 舒弍仂 bash. 从仍ム亠仆亳亠 亠亢亳仄舒 仗仂亳亰于仂亟亳 仗仂仄仂 , 舒 仂从仍ム亠仆亳亠 +. Linux administration course. 28
  • 47. 从仍ム亠仆亳亠 亠亢亳仄舒 仂仍舒亟从亳 II 亳仄亠 于从仍ム亠仆亳 亠亢亳仄舒 仂仍舒亟从亳. 1 bash x . / script . sh # 仂仗亳 从仂仄舒仆亟仆仂亶 仂从亳 2 3 # ! / bin / bash x # 于仆亳 从亳仗舒 仂仗亳亠亶 4 [ . . script . . ] 5 6 # ! / usr / bin / env bash 7 set x # 于仆亳 从亳仗舒 从仂仄舒仆亟仂亶 8 9 # ! / usr / bin / env bash 10 [ . . irrelevant code . . ] 11 set x # 于从仍ム舒亠仄 仂仍舒亟从 仆舒 舒 从仂亟舒 12 [ . . relevant code . . ] 13 set +x # 于从仍ム舒亠仄 仂仍舒亟从 14 [ . . irrelevant code . . ] Linux administration course. 29
  • 48. 仍ム亳 仂仍舒亟从亳 从仂仄舒仆亟 set I set -v 于于仂亟 仆舒 从舒仆 亳仗仂仍仆磳仄仂亶 仂从亳 1 set v 2 echo $HOME set -x 于于仂亟 仆舒 从舒仆 亳仗仂仍仆磳仄仂亶 仂从亳 舒于仂仄舒亳亠从仂亶 仗仂亟舒仆仂于从仂亶 亰仆舒亠仆亳亶 仗亠亠仄亠仆仆 1 set x 2 echo $HOME set -n 仗仂于亠从舒 亳仆舒从亳舒 从亳仗舒 1 bash n t e s t . sh Linux administration course. 30
  • 49. 仍ム亳 仂仍舒亟从亳 从仂仄舒仆亟 set II set -f 仂从仍ム亠仆亳亠 亞亠仆亠舒亳亳 亳仄亠仆 舒亶仍仂于 亳仗仂仍亰仂于舒仆亳亠仄 仄亠舒亳仄于仂仍仂于 (globbing) 1 echo ~ / . * 2 set f 3 echo ~ / . * Linux administration course. 31
  • 50. 仍ム亳 仂仍舒亟从亳 从仂仄舒仆亟 set III set -e 仂舒仆仂于从舒 于仗仂仍仆亠仆亳 从亳仗舒, 亠仍亳 从舒从舒仍亳弍仂 从仂仄舒仆亟舒 于仂亰于舒磳 errorstatus 仆亠 舒于仆亶 0 1 # ! / bin / bash 2 3 set e 4 f a l s e | | true 5 echo Working 6 f a l s e 7 echo Still working Linux administration course. 32
  • 51. 仍舒亟仂仆亠 仗亠亠仄亠仆仆亠 $LINENO 仆仂仄亠 亠从亠亶 仂从亳 $FUNCNAME 仄舒亳于 仂亟亠亢亳 亳仄亠仆舒 于亠 仆从亳亶 亳亰 亠从舒 于亰仂于仂于. 0 仍亠仄亠仆 亳仄 亠从亠亶 仆从亳亳 $BASH_SOURCE 仄舒亳于 仂亟亠亢亳 亳仄亠仆舒 仗仂亟从仍ム亠仆仆 舒亶仍仂于 source $SHLVL 仂于亠仆 于仍仂亢亠仆仆仂亳 亳仆亠仗亠舒仂舒 $PIPESTATUS 仄舒亳于 舒仂于 亰舒于亠亠仆亳 于亠 从仂仄舒仆亟 于 pipe 仍亠仆舒亳于仆亶 于亳亟 PS4. 1 export PS4= +( $ { BASH_SOURCE } : $ { LINENO } ) : $ { FUNCNAME [ 0 ] : + $ {FUNCNAME [ 0 ] } ( ) : } Linux administration course. 33
  • 52. 弌亠从 于亰仂于仂于 caller [N] 仆从亳 于于仂亟亳 仆舒 从舒仆 仆仂仄亠 仂从亳, 亳仄亠仆舒 仆从亳亳 亳 舒亶仍舒 于亰于舒ム亠亞仂 从亳仗舒 1 # ! / bin / bash 2 backtrace ( ) { 3 echo Backtrace : 4 f o r ( ( i=$SHLVL ; i >=0; i)) ; do 5 c a l l e r $i 6 done 7 } 8 f1 ( ) { echo Function $FUNCNAME at $LINENO && backtrace ; } 9 f2 ( ) { f1 ; } 10 f2 Linux administration course. 34
  • 53. 丐亳仗亳仆亠 仂亳弍从亳 于 仍仂于仆仂仄 于舒亢亠仆亳亳 舒仗亳舒 从亳仗 仗仆亳仄舒ム亳亶 仂亟亳仆 舒亞仄亠仆 亳 仂仗亠亟亠仍ム亳亶 舒亶仍 仍亳 仂. 仍亳 舒亶仍 于于仂亟亳 仆舒 从舒仆 仂从 regular file detected 于 仍舒亠 仗亠舒, 亠亟于舒亳亠仍仆仂 仂亰亟舒: 舒亶仍 c 亳仄亠仆舒仄亳 file, my file check.sh 亳仗舒于亳 1 filename=$1 2 3 [f $filename ] && echo regular f i l e detected | | echo not regular f i l e 4 e x i t # to run code below comment i t 5 # or v a r i a n t with i f 6 i f [f $filename ] ; then 7 echo re g ular f i l e detected 8 else 9 echo not regular f i l e Linux administration course. 35
  • 54. 弌仂仂弍亠仆亳 仂弍 仂亳弍从舒 亳仄亠. 1 check . sh : line 4 : [f : command not found 2 3 check . sh : line 4 : [ : missing ] 4 5 . / check . sh # i n c o r r e c t code l o g i c . No arguments . 6 re g ular f i l e detected 7 8 . / check . sh : l i n e 5 : [ : my: binary operator expected 9 10 . / check . sh : l i n e 112: syntax e r r o r : unexpected end of f i l e 11 12 bash : t e s t : too many argumentsLinux administration course. 36
  • 55. 1 Manipulate the different I/O streams with I/O Redirection 2 Repeat operations with loops. 3 Group pieces of code. 4 Expansions cont. 5 if alternatives. 6 Debugging scripts. 7 Command types. Linux administration course. 37
  • 56. 舒仗从 仗仂亞舒仄仄 亳亰 从仂仄舒仆亟仆仂亶 仂从亳 舒仂亟亳仄 仗亳亞仍舒亠仆亳亠 从仂仄舒仆亟仆仂亶 仂从亳 $, #, user@host: $ 于仂亟亳仄 亳仄 从仂仄舒仆亟, 舒亞仄亠仆 亳 亰舒仗从舒亠仄 仆舒 于仗仂仍仆亠仆亳亠 仆舒亢舒亳亠仄 <Enter> 丼仂 舒从仂亠 从仂仄舒仆亟? 亳仗仂仍仆磳仄舒 仗仂亞舒仄仄舒 (弍亳仆舒仆亶 舒亶仍, 从亳仗) 于仂亠仆仆亠 于 仂弍仂仍仂从 从仂仄舒仆亟 (shell builtins) 仆从亳 仂弍仂仍仂从亳 仂从舒亠仆亳亠 从仂仄舒仆亟 (an alias) Linux administration course. 37
  • 57. 舒亟舒仆亳亠. 亳亟 从仂仄舒仆亟 于 仂弍仂仍仂从亠 仂仄舒仆亟舒 type 仂仂弍舒亢舒亠 亳仗 从仂仄舒仆亟. 仗仂仍仆亳仄 亠亠 亟仍 舒亰仍亳仆 从仂仄舒仆亟. 1 type type cd help a l i a s read 2 type dmesg rm 3 type i f 4 type a ls 5 type a echo pwd t e s t 于舒 亳仗舒 从仂仄舒仆亟. 仂仆仂 仆舒仄 仆舒亟仂? 仍亳 舒亰仆亳舒? Linux administration course. 38
  • 58. 舒亟舒仆亳亠. 亳亟 从仂仄舒仆亟 于 仂弍仂仍仂从亠 仂仄舒仆亟舒 type 仂仂弍舒亢舒亠 亳仗 从仂仄舒仆亟. 仗仂仍仆亳仄 亠亠 亟仍 舒亰仍亳仆 从仂仄舒仆亟. 1 type type cd help a l i a s read 2 type dmesg rm 3 type i f 4 type a ls 5 type a echo pwd t e s t 于舒 亳仗舒 从仂仄舒仆亟. 仂仆仂 仆舒仄 仆舒亟仂? 仍亳 舒亰仆亳舒? 仂亠仆仆亠 亳 于仆亠仆亳亠 从仂仄舒仆亟 于亠亞亟舒 仗亳于ム 于 亳仆亠仗亠舒仂亠, 于仆亠仆亳 仄仂亢亠 亳 仆亠 弍 仆舒 亟亳从亠 仂亟仆仂仂弍舒亰仆亶 亳仆舒从亳 仆舒 舒亰仆 仗仍舒仂仄舒 (仗亠亠仆仂亳仄仂 从亳仗仂于) 从舒从 仗舒于亳仍仂 于仗仂仍仆ム 弍亠亠, .从. 从仂亟 仆舒仂亟亳 于 仗舒仄亳 亠 亠亟于舒, 仂弍 于从仍ム亳 于仂亠仆仆亠 从仂仄舒仆亟,Linux administration course. 38
  • 59. 丕仍仂于仆亠 仂仗亠舒仂: case 1 case $ v a r i a b l e in 2 pattern1 ) command1 3 command2 4 ; ; 5 pattern2 | pattern3 ) 6 command3 7 command4 8 ; ; 9 esac Linux administration course. 39
  • 60. 丕仍仂于仆亠 仂仗亠舒仂: case 1 case $ v a r i a b l e in 2 pattern1 ) command1 3 command2 4 ; ; 5 pattern2 | pattern3 ) 6 command3 7 command4 8 ; ; 9 esac 亳仄亠: 1 # ! / bin / bash 2 3 cmd=$1 ; var=$2 4 case $cmd in 5 print|echo ) 6 echo 丕舒 , 仗亠舒舒亠仄 ! ; ; 7 abc *| xyz *) 8 echo 弌舒仆仆舒 从仂仄舒仆亟舒 $cmd ; ; 9 *) 10 echo 亊 舒从亳 从仂仄舒仆亟 仆亠 亰仆舒 : $cmd 1>&2 11 e x i t 1 ; ; 12 esac 13 [ ! z $var ] && echo 仗亠亠仄亠仆仆舒 $var = $var 14 e x i t 0Linux administration course. 39