320 likes | 432 Views
Part 1: Basic Commands/Utilities. Final Exam. May 17 th 3:00~4:00pm S-3-143 Same types of questions as in mid -term. Basic Utilities. ls , cat, echo ls -l e.g., regular file or directory, permissions, file size ls -a cat file1 file2 file3 … echo “hello world” > file
E N D
Final Exam • May 17th • 3:00~4:00pm • S-3-143 • Same types of questions as in mid-term
Basic Utilities • 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”
Basic Utilities • 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 • rmdiran empty directory
Basic Utilities • 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
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) • chmoda+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
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
Execute Commands • 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)
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.
Variables • System variables • $PATH, $PWD, $HOME • User defined variables • VAR=hello • export VAR=hello • declare; declare -x
Variables • New shell for executing a script $cat script1 echo $VAR VAR=new echo $VAR $VAR=old;./script1;echo $VAR $VAR=new ./script1;echo $VAR $export VAR=old;./script1;echo $VAR
Expansion/ Quote • Types • echo hello*; echo ~ • echo $VAR • echo $(pwd) • echo $((1+1)) • VAR=hello* • echo $VAR • Single quote suspends all expansions
Control Flow if..then..fi, if..then..else..fi, while test-command do commands done for loop-index in argument-list do commands done
Control Flow • Conditions • test $# -eq 0 • [ -f “$1” ] • [ condition1 –a condition2 ], -o • [[ && ]], (( || )) • Exit status $? • if [ read <file $line ] …
Expressions • Arithmetic • a=5;b=3;echo $((a%b)) • echo $((a+++3)) • Logic • cat abc && ls • echo $?
Control Flow • Boolean operators
Control Flow • Boolean operators • Short circuiting $((a=2, b=2)) $((a++ || b--)) $echo $a $b $((--a>2 || b++)) $echo $a $b
Control Flow • Boolean operators • Short circuiting (($#==2)) || echo "Usage:require two arguments” mkdir $1 && cp file1 $1
Variables • Arguments • $1-$n, $0, $#, $@ • set set a 123 hello echo $1 $2 $3 set $(date) • shift echo $@ shift echo $@ • $$, $?
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
Expressions • Arithmetic • a=5;b=3;echo $((a%b)) • echo $((a+++3)) • Logic • cat abc && ls • echo $?
Run a Program • 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
Patterns • 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
File I/O in perl • Read open ($infile, '<', “filename”); while ($line=<$infile>){ print $line; } $line=<> • Write $filename="./log"; open($outfile,'>',$filename); print $outfile "Hello world!\n";
Questions 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_
Questions • Read the following shell script and explain its function. $ cat script1 #!/bin/bash count=0 for i in * then ((count++)) fi echo $count
Questions • Read the following shell script and answer the questions $cat script1 #!/bin/bash exec 3<$1 exec 4<$2 exec 5>$3 while read line <&3 do echo “$line” >&5 done while read line <&4 do echo “$line” >&5 done • 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 double quotes?