Final Exam Part 1: Basic Commands/U3li3es May 17 th 3:00~4:00pm S-3-143 Same types of questions as in mid-term 1 2 ls, cat, echo ls -l e.g., regular file or directory, permissions, file size ls -a cat file1 file2 file3 echo hello world > file echo $VAR, echo hello* echo n hello world more, less, head, tail head -5 file tail -f file pwd, cd cp, mv, rm, mkdir, rmdir -i option -r option: rm r dir1, cp r dir1 dir2 rmdir an empty directory 3 4 sort, wc, grep, (pipe) wc -l file, wc c file grep keyword file grep -v sort linux head -5 command1 command2 command1 > temp command2 < temp rm temp Part 2: File Systems 5 6 1
Filename and Path Hierarchical tree structure Absolute path name ls /home/it244/it244 Relative path name cd /home/it244 ls it244... ~ *? echo hello*, echo./.?a* Access Permissions r, w, x (chmod) chmod a+rw file chmod a=rx file chmod 644 file Execute permission of a directory A directory is a table of files (filename:meta) Executable means searchable 7 8 Access Permissions Operations on book/book1 ls book/book1 book ( x ) cat book/book1 book1 ( r ), book ( x ) rm book/book1 book ( xw ), book1 ( w ) Links Hard link and soft link Hard link cannot refer to a directory Soft link can point to a nonexistent file $ ln -s hello hello.sl $ rm hello $ echo new > hello $ cat hello.sl new 9 10 Execute Commands Part 3: Bash/Shell Scrip3ng Foreground and background jobs command &, CTRL+Z difference between a suspended job and a background job, PID jobs, ps, kill, bg, fg Group commands (cmd1; cmd2; cmd3) 11 12 2
Redirection Standard input, output, error output cat file1 file2 > out 2>err cat file1 file2 &> out cat file1 file2 > out 2>&1 Redirected output will not be displayed on the screen. System variables $PATH, $PWD, $HOME User defined variables VAR=hello export VAR=hello declare; declare -x 13 14 New shell for executing a script $cat script1 echo $VAR VAR=new echo $VAR $VAR=old;./script1;echo $VAR $VAR=new./script1;echo $VAR Expansion/ Quote Types echo hello*; echo ~ echo $VAR echo $(pwd) echo $((1+1)) VAR=hello* echo $VAR $export VAR=old;./script1;echo $VAR Single quote suspends all expansions 15 16 if..then..fi, if..then..else..fi, while test-command commands for loop-index in argument-list commands Conditions test $# -eq 0 [ -f $1 ] [ condition1 a condition2 ], -o [[ && ]], (( )) Exit status $? if [ read <file $line ] 17 18 3
cond1 cond2 cond1 && cond2 cond1 cond2 True True True True True False False True False True False True False False False false Short circuiting $((a=2, b=2)) $((a++ b--)) $echo $a $b $((--a>2 b++)) $echo $a $b 19 20 Short circuiting (($#==2)) echo "Usage:require two arguments mkdir $1 && cp file1 $1 Arguments $1-$n, $0, $#, $@ set set a 123 hello echo $1 $2 $3 set $(date) shift echo $@ shift echo $@ $$, $? 21 22 File I/O exec exec 3 < infile exec 4 > outfile read read -p Enter sth: input1 input2 read <&3 line, read u3 line Determine the end of a file $line has no value read returns false Write to a file echo abc >&4 Part 4: Perl/AWK/SED 23 24 4
Run a Program Patterns Perl perl simple.pl perl e print hi\n AWK gawk -f simple file gawk /chevy/ {print} file SED sed -f simple file sed /line/ p file Stand-alone scripts #!/usr/bin/perl #!/usr/bin/gawk -f #!/bin/sed -f AWK awk /chevy/ {print} cars gawk $1 ~ /h/ cars gawk $5 > 2000 && $5<6000 cars SED sed -n 3,6 p lines sed n s/line/sentence/w temp lines 25 26 File I/O in perl Read open ($infile, '<', filename ); while ($line=<$infile>){ print $line; } $line=<> If we execute the following sequence of commands in order, what are the values of variables a, b and the output AFTER executing each line? $((a=1, b=2)) $echo $((a-- + b++)) a=_0_, b=_3_, output=_3_ $echo $((a++ + ++b)) a=_1_, b=_4_, output=_4_ Write $filename="./log"; open($outfile,'>',$filename); print $outfile "Hello world!\n"; 27 28 Read the following shell script and explain its function. Read the following shell script and answer the questions $ cat script1 #!/bin/bash count=0 for i in * then ((count++)) fi echo $count $cat script1 #!/bin/bash exec 3<$1 exec 4<$2 exec 5>$3 while read line <&3 echo $line >&5 while read line <&4 echo $line >&5 Q1. The script requires 3 filenames as arguments, e.g.,./script1 file1 file2 file3 Which files are input files and which are output files? Q2. Inside the while-loop, why variable $line has to be enclosed by uble quotes? 29 30 5