basicsys@mars~/lec10>expr match ababcdcde '\(\(ab\)\+\(cd\)\+\)' ababcdcd basicsys@mars~/lec10>expr match ababcdcde '\(\(ab\)\+\)\(cd\)\+' abab basicsys@mars~/lec10>expr index abcde db 2 basicsys@mars~/lec10>expr index abcde rc 3 basicsys@mars~/lec10>expr index abcde rt 0 basicsys@mars~/lec10>expr substr abcdefg 3 4 cdef basicsys@mars~/lec10>expr substr abcdefg 3 7 cdefg basicsys@mars~/lec10>expr substr abcdefg -1 1 basicsys@mars~/lec10>expr substr abcdefg 0 1 basicsys@mars~/lec10>expr substr abcdefg 10 1 basicsys@mars~/lec10>expr substr abcdefg 3 expr: syntax error basicsys@mars~/lec10>expr substr abcdefg 3 3 cde basicsys@mars~/lec10>x=abcdefg basicsys@mars~/lec10>echo ${x:3:4} defg basicsys@mars~/lec10>echo ${x:3} defg basicsys@mars~/lec10>echo ${x:2} cdefg basicsys@mars~/lec10>y=${x:2} basicsys@mars~/lec10>echo "$y" cdefg basicsys@mars~/lec10>echo ${x#a??} defg basicsys@mars~/lec10>echo ${x#a*} bcdefg basicsys@mars~/lec10>echo ${x##a*} basicsys@mars~/lec10>echo ${x%e*} abcd basicsys@mars~/lec10>x=fabcdab basicsys@mars~/lec10>echo ${x%ab*} fabcd basicsys@mars~/lec10>echo ${x%%ab*} f basicsys@mars~/lec10>x=ababcdab basicsys@mars~/lec10>echo ${x/ab/zzz} zzzabcdab basicsys@mars~/lec10>echo ${x//ab/zzz} zzzzzzcdzzz basicsys@mars~/lec10>echo ${x/ab*/zzz} zzz basicsys@mars~/lec10>rev F1 cba basicsys@mars~/lec10>echo abc | rev cba basicsys@mars~/lec10>cat G1 #!/bin/bash echo -n "" >|tmp x=$(pwd) for y in $(find $x -type f) do echo ${y##*/}${y} >> tmp done sort tmp >| tmp1 for z in $(cat tmp1) do echo \/${z#*/} done basicsys@mars~/lec10>G1 | more /home/cs/segel/basicsys/lec10/F1 /home/cs/segel/basicsys/lec10/oldlec10/F1 /home/cs/segel/basicsys/lec10/F2 /home/cs/segel/basicsys/lec10/oldlec10/F2 /home/cs/segel/basicsys/lec10/F3 /home/cs/segel/basicsys/lec10/oldlec10/F3 /home/cs/segel/basicsys/lec10/F3t /home/cs/segel/basicsys/lec10/F4 /home/cs/segel/basicsys/lec10/oldlec10/F4 /home/cs/segel/basicsys/lec10/F /home/cs/segel/basicsys/lec10/G1 /home/cs/segel/basicsys/lec10/H /home/cs/segel/basicsys/lec10/H.rep /home/cs/segel/basicsys/lec10/lec10e.txt /home/cs/segel/basicsys/lec10/lec10m.txt /home/cs/segel/basicsys/lec10/oldlec10/lec10. /home/cs/segel/basicsys/lec10/oldledc10e /home/cs/segel/basicsys/lec10/oldlec10/P1 /home/cs/segel/basicsys/lec10/P1 /home/cs/segel/basicsys/lec10/oldlec10/P2 /home/cs/segel/basicsys/lec10/tmp1 /home/cs/segel/basicsys/lec10/tmp basicsys@mars~/lec10>y=/home/cs/segel/basicsys/lec10/tmp1 basicsys@mars~/lec10>echo $y /home/cs/segel/basicsys/lec10/tmp1 basicsys@mars~/lec10>echo ${y##*/}${y} tmp1/home/cs/segel/basicsys/lec10/tmp1 basicsys@mars~/lec10>echo a{b,c}e abe ace basicsys@mars~/lec10>echo a{b,c}{1,2,3}r ab1r ab2r ab3r ac1r ac2r ac3r basicsys@mars~/lec10>for x in {1..10}; do echo $x ; done 1 2 3 4 5 6 7 8 9 10 basicsys@mars~/lec10>for x in $(seq 10); do echo $x ; done 1 2 3 4 5 6 7 8 9 10 basicsys@mars~/lec10>echo {1..10} 1 2 3 4 5 6 7 8 9 10 basicsys@mars~/lec10>echo {1..10..2} {1..10..2} basicsys@mars~/lec10>echo {3..10} 3 4 5 6 7 8 9 10 basicsys@mars~/lec10>echo {c h} {c h} basicsys@mars~/lec10>echo {c..h} c d e f g h basicsys@mars~/lec10>x=3 basicsys@mars~/lec10>y=8 basicsys@mars~/lec10>echo {$x..$y} {3..8} basicsys@mars~/lec10>echo "{$x..$y}" {3..8} basicsys@mars~/lec10>echo \{$x..$y\} {3..8} basicsys@mars~/lec10>eval echo {$x..$y} 3 4 5 6 7 8 basicsys@mars~/lec10>echo $(echo {$x..$y}) {3..8} basicsys@mars~/lec10>a=20 basicsys@mars~/lec10>echo $a 20 basicsys@mars~/lec10>a=(20 30 40) basicsys@mars~/lec10>echo $a 20 basicsys@mars~/lec10>echo ${a[0]} 20 basicsys@mars~/lec10>echo ${a[1]} 30 basicsys@mars~/lec10>echo ${a[2]} 40 basicsys@mars~/lec10>echo ${a[@]} 20 30 40 basicsys@mars~/lec10>echo "${a[@]}" 20 30 40 basicsys@mars~/lec10>a=("ab 10" "cd 20" 40) basicsys@mars~/lec10>echo "${a[@]}" ab 10 cd 20 40 basicsys@mars~/lec10>echo ${a[@]} ab 10 cd 20 40 basicsys@mars~/lec10>a[1]="40 1111" basicsys@mars~/lec10>echo "${a[@]}" ab 10 40 1111 40 basicsys@mars~/lec10>b=({2..5}{a..c}) basicsys@mars~/lec10>echo "${b[@]}" 2a 2b 2c 3a 3b 3c 4a 4b 4c 5a 5b 5c basicsys@mars~/lec10>echo "${#b[@]}" 12 basicsys@mars~/lec10>echo "${#a[@]}" 3 basicsys@mars~/lec10>echo ${#a[@]} 3 basicsys@mars~/lec10>echo ${#a[@]} 3 basicsys@mars~/lec10>echo ${a[@]} ab 10 40 1111 40 basicsys@mars~/lec10>echo "${b[@]}" 2a 2b 2c 3a 3b 3c 4a 4b 4c 5a 5b 5c basicsys@mars~/lec10>echo "${b[@]:2:3}" 2c 3a 3b basicsys@mars~/lec10>b=({a..c}{1..2}{d..f}) basicsys@mars~/lec10>echo "${b[@]}" a1d a1e a1f a2d a2e a2f b1d b1e b1f b2d b2e b2f c1d c1e c1f c2d c2e c2f basicsys@mars~/lec10>echo ${#b[@]} 18 basicsys@mars~/lec10>echo ${#b} 3 basicsys@mars~/lec10>echo ${b} a1d basicsys@mars~/lec10>echo ${b[@]/#?} 1d 1e 1f 2d 2e 2f 1d 1e 1f 2d 2e 2f 1d 1e 1f 2d 2e 2f basicsys@mars~/lec10>echo ${b[@]/%?} a1 a1 a1 a2 a2 a2 b1 b1 b1 b2 b2 b2 c1 c1 c1 c2 c2 c2 basicsys@mars~/lec10>echo ${b[@]/%%?} a1d a1e a1f a2d a2e a2f b1d b1e b1f b2d b2e b2f c1d c1e c1f c2d c2e c2f basicsys@mars~/lec10>echo ${b[@]/a/zzz} zzz1d zzz1e zzz1f zzz2d zzz2e zzz2f b1d b1e b1f b2d b2e b2f c1d c1e c1f c2d c2ec2f basicsys@mars~/lec10>b=({a..c}1{a..c}) basicsys@mars~/lec10>echo ${b[@]} a1a a1b a1c b1a b1b b1c c1a c1b c1c basicsys@mars~/lec10>echo ${b[@]/a/zzz} zzz1a zzz1b zzz1c b1zzz b1b b1c c1zzz c1b c1c basicsys@mars~/lec10>echo ${b[@]//a/zzz} zzz1zzz zzz1b zzz1c b1zzz b1b b1c c1zzz c1b c1c Look at the array-string example at the course web site