Παρακατω θα γραφω και θα ανανεωνω καθε φορα τις απαντησεις (και μονο) των ασκησεων (φυλλαδια) που μας δινονται στο εργαστηριο...για τυχον λαθη κλπ αν εχω πειτε μου...
Οι εκφωνήσεις των ασκήσεων βρίσκονται εδώ:
http://teachers.teicm.gr/nikolaid/opsystems_II_gr.html1ο Εργαστήριο5) pwd (/root για παράδειγμα)
6) ls -al
7) a) ls -al /etc
b) ls -al /etc | more
c) ls -al /etc | less
8 ) mkdir dir1
cd dir1
mkdir dir2
9) cd ..
ls -al
rmdir dir2
cd ..
rmdir dir1
10) a) cat /etc/passwd
b) cat /etc/passwd | more
c) cat /etc/passwd | less
11) cat /etc/passwd (/root και /bin/bash)
12) cat /etc/group > file1
13) cat file1 | more (και μετά πατάμε space για σελίδα-σελίδα)
14) cat /etc/passwd (4ο πεδίο) ή cat /etc/group (στην περίπτωση μου είναι 0)
15) ls -al /dev | more (και μετά space)
16) ps -ef | more (και space)
17) kill -9 2234 (βρίσκουμε το pid του bash π.χ. 2234)
18) kill -9 2051 (βρίσκουμε το pid του gnome-terminal π.χ. 2051)
2ο Εργαστήριο1) mkdir dir1
2) cat > file1
ArnakiGiaxni 12345
^D
cat file1
3) ls -l file1 (όλοι έχουν read εκτός απ' τον user που έχει και write)
4) -rw-r--r--
5) a) chmod u+x,g+x,o-r file1
b) chmod 750 file1
ls -l file1
c) chmod u-x,g-x,o+r file1
d) chmod 644 file1
6) ls -al dir1
drwxr-sr-x
7) chmod ugo-w dir1
8 ) cp file1 dir1 (αρχικά δεν γίνεται λόγω του βήματος 7)
chmod u+w dir1
cp file1 dir1
ls -al dir1
9) cp file1 dir1 (υποθετικά δεν γίνεται)
cp -f file1 dir
10) ls -l /etc/passwd
chmod u-rw,g-r,o-r /etc/passwd (υποθετικά δεν γίνεται)
11) mv file1 /
12) rm -rf dir1
13) rm -f file1
14) cat /etc/passwd | wc -l
3ο Εργαστήριο1) vi
2) a (και γραφουμε το κειμενο που μας δινεται)
3) esc
:w TuringDream.txt
4) esc
:q!
5) ls -al
116 bytes
6) vi TuringDream.txt
παμε τον δρομεα στην αρχη της 1η σειρας και παταμε yy
παμε στην τελευταια γραμμη με το βελακι και παταμε p
παμε τον δρομεα στην αρχη της 3ης σειρας και παταμε dd
παμε τον δρομεα στην αρχη του κειμενου βαζουμε caps και παταμε P
7) a (μετακινουμαστε με τα βελακια και γραφουμε)
8 )παμε τον δρομεα στην αρχη της 5ης σειρας και παταμε 2dd
αναιρουμε πατωντας το u
9) :q!
10) ls -al /dev > 12345
11) ls -al /dev | wc -l (200 αρχεία & καταλόγους)
12) ls -al /etc > 1234
cat 1234 >> 12345
13) vi 12345
15) παμε στην πρωτη γραμμη και παταμε yy
παμε στην 5η γραμμη και παταμε 10p
16) a)/fd και μετα συνεχεια n για επαναληψη της εντολης
b)/^d και n
c)/^l και n
d)/^b και n
e)/^-..x και n
17) :q!
18) vi /etc/passwd
19) /^r και n
20) /^[^:][^:][^:][^:]:
21) /^[^:]*:x:1[0-5]:
22) rm 12345
rm TuringDream.txt
extra1) vi 12345
:1,$s/root/leaf/g
2) :1,3s/^.*//g
3) vi /etc/passwd
:1,15s/^\([^:]*\):[^:]*:\([^:]*\):.*$/\1 \2/
4) :1,$s/^r\([^:]*\):[^:]*:[^:]*:\([^:]*\):.*$/\2 r\1/
4ο Εργαστήριο1) vi
a
#!/bin/bash
echo "Hello World"
[ESC]
:w script1
:q!
2) script1 -> δεν τρέχει γιατι δεν το αναγωριζει σαν εντολη
./script1 -> δεν τρεχει γιατι δεν εχουμε δικαιωμα εκτελεσης
3) ls -l script1 (π.χ. ανηκει στον χρηστη root)
-rw-r--r-- (εχουμε μονο read και write)
chmod u+x script1
./script1
4) vi script1
a
echo "my name is:$1"
:w
:q!
ls -l script1 (δεν χρειαζεται να αλλαξουμε ξανα τα δικαιωματα του αρχειου)
./script1 arnakigiaxni
5) a=3
b = 3 -> δεν το αναγνωριζει λογο των κενων
b=3
echo "b" -> b
echo "$b" -> 3
c=a+b
echo "&c" -> a+b
c="$a+$b"
echo "$c" -> 3+3
echo "\$a" -> $a
echo "\\$a" -> \3
echo '$a' -> $a
echo `ls` -> Desktop script1 (απ' το σπιτι, στη σχολη βγαζει αλλα)
echo "`ls`" -> Desktop
script1 (παρομοιως)
echo "$a \$a '$a' $a" -> 3$α'3'3
echo '$a \$a "$a" $a' -> $α\$α"$α"$α
echo "$a'$a"$a' -> (γραφεις οτι θες και μετα κλεινεις με " και εμφανιζει 3'33 και οτι εγραψες)
6) vi
a (γραφουμε ολο το κατεβατο)
[ESC]
:w script2
:q!
chmod u+x script2
./script2 one two 3 4 5 6 7 eight 9 ten 11
8 )vi
a (γραφουμε ολο το κατεβατο)
[ESC]
:w script3
:q!
chmod u+x script3
./script3 one "two three" four
9) rm script1 script2 script3
5ο Εργαστήριο1) ls
echo "$?" -> 0
ls makis
echo "$?" -> 2
./ makis
echo "$?" -> 127
ps
echo "$?" -> 0
2) test -s /etc/passwd
echo "$?" -> 0
[ -s /etc/passwd ]
echo "$?" -> 0
[ ! -d /etc/group ]
echo "$?" -> 0
ls /makis
[ $s -eq 0 ]
echo "$?" -> 1
ls /makis
echo "$?" -> 2
[ $s -eq 0 ]
echo "$?" -> 0
a=3
[ $a -eq 3 ]
echo "$?" -> 0
[ $a -gt 5 ]
echo "$?" -> 1
[\( $? -eq 0 \) -a \( $? -eq 1 \)]
echo "$?" -> 127
ls
[\( $? -eq 0 \) -o \( $? -eq 1 \)]
echo "$?" -> 127
./makis
[\( $? -eq 0 \) -a \( $? -eq 1 \)]
echo "$?" -> 127
3) a=5
expr $a + 1 -> 6
b=`expr $a + 2`
echo "$b" -> 7
b=`expr a + 2` -> expr: non-numeric argument
echo "$?" -> 2
echo "$b" -> (κενό)
4) Εμφανιζει του αριθμους απο 0 εως 9
α)#!/bin/bash
i=0
while [ $i -lt $1 ]; do
echo "$i"
i=`expr $i + 1`
done
β)#!/bin/bash
i=0
while [ $i -lt $1 ]; do
echo "$i" >> $2
i=`expr $i + 1`
done
γ)#!/bin/bash
i=0
while [ $i -lt $1 ]; do
echo "$i" >> $2
i=`expr $i + 2`
done
5) α)#!/bin/bash
i=1
while [ $i -le 100 ]; do
>File"$i"
i=`expr $i + 1`
done
ls -al (για να δουμε οτι δημιουργηθηκαν τα αρχεια)
β)#!/bin/bash
i=1
while [ $i -le 100 ]; do
rm -f File"$i"
i=`expr $i + 1`
done
ls -al
6)α)#!/bin/bash
i=0
until [ $i -gt 9 ]; do
echo "$i"
i=`expr $i + 1`
done
β)#!/bin/bash
i=0
until [ $i -gt $1 ]; do
echo "$i"
i=`expr $i + 1`
done
γ)#!/bin/bash
i=0
until [ $i -gt $1 ]; do
echo "$i" >> $2
i=`expr $i + 1`
done
δ)#!/bin/bash
i=0
until [ $i -gt $1 ]; do
echo "$i" >> $2
i=`expr $i + 2`
done
ε)#!/bin/bash
i=1
until [ $i -ge 101 ]; do
>File"$i"
i=`expr $i + 1`
done
ζ)#!/bin/bash
i=1
until [ $i -ge 101 ]; do
rm -f File"$i"
i=`expr $i + 1`
done
6ο Εργαστήριο3) #!/bin/bash
if test -f $1 ; then
cat $1
cat $1 | wc -l
else echo "Error! file $1 does not exist"
fi
4) #!/bin/bash
if [ $1 -lt $2 ]; then
i="$1"
while [ $i -le $2 ]; do
echo $i
i=`expr $i + 1`
done
else echo "Error! 1st par >= 2nd par"
fi
5) #!/bin/bash
echo $0
while true; do
i=0
sum=0
echo "give me a number:"
read akereos
if [ 0 -le $akereos ]; then
if [ $akereos -le 100 ]; then
while [ $i -lt $akereos ]; do
i=`expr $i + 1`
sum=`expr $sum + $i`
done
echo $sum
else echo "o arithmos ine megaliteros apo 100"
fi
else exit
fi
done
6) #!/bin/bash
while true; do
echo "give me a character:"
read char
case "$char" in
[a-z]|[A-Z]) echo "you gave a letter"
continue;;
[0-9]) echo "you gave a number"
continue;;
!) exit;;
*) echo "you gave a special character"
continue;;
esac
done
7ο Εργαστήριο2) cat /etc/passwd | grep "^r"
3) cat /etc/passwd | grep "^[^:][^:][^:][^:]:"
4) cat /etc/passwd | grep "^[^:]*:[^:]*:1[0-5]:"
5) ps -ef | egrep "^[^ ]+ +[^ ][^ ][^ ] "
6) ps -ef | tr -s " " " " | grep "^[^ ]* [^ ]* 1 .*"
7) ls -al /etc | tr -s " " "=" | grep "^-.........=2" | tr "=" " "
8 ) cat /etc/passwd | grep "/bin/bash"
9) ls -al /dev | grep "^c" | wc -l
10) cat /etc/passwd | grep "^[^:]*:[^:]*:[^:][^:][^:][^:]:" | sort -nt":" -k3,3
11) ls -al /etc | grep "^-..x" | sort -rt" " -k2,2
12) ls -al /dev | grep "^b"
13) cat /etc/passwd | grep "^[^:]*:[^:]*:1[0-5]:\|^[^:]*:[^:]*:2[5-9]:"
14) ls -a /etc | grep "^s" | tr "a-z" "A-Z"
15) ls -al /etc | grep "^l" | wc -l > file1
16)#!/bin/bash
while true; do
echo "give me a character"
read char
echo $char | grep -i "[a-z]" > file1
if [ -s file1 ]; then
echo "you gave a letter"
else echo $char | grep "[0-9]" > file2
if [ -s file2 ]; then
echo "you gave a number"
else echo $char | grep "!" > file3
if [ -s file3 ]; then
exit
else echo "you gave a special character"
fi
fi
fi
done
17)#!/bin/bash
cat /etc/passwd | grep "^$1" > file1
if [ -s file1 ]; then
ps -ef | grep "^$1" > file2
if [ -s file2 ]; then
echo "plithos diergasion="
ps -ef | grep -c "^$1"
ps -ef | grep "^$1"
exit 0
else echo "o xristis $1 den trexi kapia diergasia"
exit 2
fi
else echo "o xristis $1 den iparxi"
fi
8ο Εργαστήριο3)#!/bin/bash
egrep "^[^:]*:[^:]*:(1[0-9]|2[0-5]):" /etc/passwd | sed "s/^\([^:]*\):[^:]*:\ ([^:]*\:.*$/\1 \2/"
#!/bin/bash
IFS=":"
while read line; do
set $line
if [ \( $3 -ge 10 \) -a \( $3 -le 25 \) ]; then
echo $1 $3
fi
done < /etc/passwd
4)sed -n "1,10p" /etc/passwd
5)grep "^r" /etc/passwd | sed "s/^\([^:]*\):[^:]*:\([^:]*\):.*$/\1 \2/"
#!/bin/bash
IFS=":"
while read line; do
set $line
echo $1 $3 | grep "^r"
done < /etc/passwd
6)grep "^[^:][^:][^:][^:]:" /etc/passwd | sed "s/^\([^:]*\):[^:]*:[^:]*:[^:]*:\([^:]*\):.*$/\1 \2/"
#!/bin/bash
IFS=":"
while read line; do
set $line
echo $1 $5 | grep "^.... "
done < /etc/passwd
7)ps -ef | tr -s " " " " | grep "^[^ ]* [^ ]* 1 .*" | sed "s/^\([^ ]*\) [^ ]* \([^ ]*\) .*$/\1 \2/"
#!/bin/bash
ps -ef | tr -s " " " " | grep "^[^ ]* [^ ]* 1 .*" > file1
IFS=" "
while read line; do
set $line
echo $2 $3
done < file1
8 )#!/bin/bash
ls -al /etc | tr -s " " "~" | grep "^[^~]*~[2-9]\|[0-9][0-9] " | tr "~" " " | sed "s[^ ]* [^ ]* \([^ ]*\) .*$/\1 /"
ls -al /etc | tr -s " " "~" | grep "^[^~]*~[2-9]\|[0-9][0-9] " | tr "~" " " | sed "s[^ ]* [^ ]* \([^ ]*\) .*$/\1 /" | wc -l
#!/bin/bash
ls -al /etc | tr -s " " "~" | grep "^[^~]*~[2-9]\|[0-9][0-9] " | tr "~" " " > file1
IFS=" "
while read line; do
set $line
echo $3
done < file1
cat file1 | wc -l
9)ls -al /etc | tr -s " " " " | grep "^...x" | sed "s/[^ ]* [^ ]* \([^ ]*\) [^ ]* \([^ ]*\) .*$/\1 \2/"
!/bin/bash
ls -al /etc | tr -s " " " " | grep "^...x" > file1
IFS=" "
while read line; do
set $line
echo $3 $5
done < file1
10)
2) cat /etc/passwd | sed -n "/^r/p"
#!/bin/bash
IFS=":"
while read line; do
set $line
echo $* | grep "^r" | tr " " ":"
done < /etc/passwd
3) cat /etc/passwd | sed -n "/^[^:][^:][^:][^:]:/p"
#!/bin/bash
IFS=":"
while read line; do
set $line
echo $* | grep "^[^ ][^ ][^ ][^ ] " | tr " " ":"
done < /etc/passwd
4) cat /etc/passwd | sed -n "/^[^:]*:[^:]*:1[0-5]:/p"
#!/bin/bash
IFS=":"
while read line; do
set $line
echo $* | grep "^[^ ]* [^ ]* 1[0-5] " | tr " " ":"
done < /etc/passwd
5) ps -ef | tr -s " " " " | sed -n "/^[^ ]* [^ ][^ ][^ ] /p"
#!/bin/bash
ps -ef | tr -s " " " " | grep "^[^ ]* [^ ][^ ][^ ] " > file1
IFS=" "
while read line; do
set $line
echo $*
done < file1
6) ps -ef | tr -s " " " " | sed -n "/^[^ ]* [^ ]* 1 .*/p"
#!/bin/bash
ps -ef | tr -s " " " " | grep "^[^ ]* [^ ]* 1 .*" > file1
IFS=" "
while read line; do
set $line
echo $*
done < file1
7) ls -al /etc | tr -s " " "=" | sed -n "/^-.........=2/p" | tr "=" " "
#!/bin/bash
ls -al /etc | tr -s " " " " | grep "^-.........=2" | tr "=" " " > file1
IFS=" "
while read line; do
set $line
echo $*
done < file1
8 ) cat /etc/passwd | sed -n "/bin\/bash/p"
#!/bin/bash
IFS=":"
while read line; do
set $line
echo $* | grep "/bin/bash" | tr " " ":"
done < /etc/passwd
9) ls -al /dev | sed -n "/^c/p" | wc -l
#!/bin/bash
ls -al /dev | grep "^c" > file1
IFS=" "
while read line; do
set $line
echo $*
done < file1
10) cat /etc/passwd | sed -n "/^[^:]*:[^:]*:[^:][^:][^:][^:]:/p" | sort -nt":" -k3,3
#!/bin/bash
IFS=":"
while read line; do
set $line
echo $* | grep "^[^ ]* [^ ]* [^ ][^ ][^ ][^ ] " | tr " " ":" | sort -nt":" -k3,3
done < /etc/passwd
11) ls -al /etc | sed -n "/^-..x/p" | sort -rt" " -k2,2
#!/bin/bash
ls -al /etc | grep "^-..x" | sort -rt" " -k2,2 > file1
IFS=" "
while read line; do
set $line
echo $*
done < file1
12) ls -al /dev | sed -n "/^b/p"
#!/bin/bash
ls -al /etc | grep "^b" > file1
IFS=" "
while read line; do
set $line
echo $*
done < file1
13) cat /etc/passwd | sed -n "/^[^:]*:[^:]*:1[0-5]:\|^[^:]*:[^:]*:2[5-9]:/p"
#!/bin/bash
IFS=":"
while read line; do
set $line
echo $* | grep "^[^ ]* [^ ]* 1[0-5] \|^[^ ]* [^ ]* 2[5-9] " | tr " " ":"
done < /etc/passwd
14) ls -a /etc | sed -n "/^s/p" | tr "a-z" "A-Z"
#!/bin/bash
ls -a /etc | grep "^s" | tr "a-z" "A-Z" > file1
IFS=" "
while read line; do
set $line
echo $*
done < file1
15) ls -al /etc | sed -n "/^l/p" | wc -l > file1
#!/bin/bash
ls -al /etc | grep -c "^l" > file1
IFS=" "
while read line; do
set $line
echo $*
done < file1
16)#!/bin/bash
while true; do
echo "give me a character"
read char
echo $char | sed -n "/[a-z]\|[A-Z]/p" > file1
if [ -s file1 ]; then
echo "you gave a letter"
else echo $char | sed -n "/[0-9]/p" > file2
if [ -s file2 ]; then
echo "you gave a number"
else echo $char | sed -n "/!/p" > file3
if [ -s file3 ]; then
exit
else echo "you gave a special character"
fi
fi
fi
done
17)#!/bin/bash
cat /etc/passwd | sed -n "/^$1/p" > file1
if [ -s file1 ]; then
ps -ef | sed -n "/^$1/p" > file2
if [ -s file2 ]; then
echo "plithos diergasion="
ps -ef | sed -n "/^$1/p" | wc -l
ps -ef | sed -n "/^$1/p"
exit 0
else echo "o xristis $1 den trexi kapia diergasia"
exit 2
fi
else echo "o xristis $1 den iparxi"
fi
9ο Εργαστήριο2) awk -F':' '$3>=10 && $3<=25 {print $1,$3}' /etc/passwd
3) cat /etc/passwd | awk 'NR<=10'
4) cat /etc/passwd | awk -F':' '$1~/^r/ {print $1,$3}'
5) cat /etc/passwd | awk -F':' '$1~/^....$/ {print $1,$5}'
6) ps -ef | awk '$3==1 {print $2,$3}'
7) ls -al /etc | awk '$2>=2 && NF==9 {count++; print $9} END {print count}' (διαφοροποιηση αναλογως το λειτουργικο που χρησιμοποιειτε π.χ. στο σπιτι το ονομα ειναι το 8ο πεδιο ενω στη σχολη το 9ο)
8 ) ls -al /etc | awk '/^...x/ {print $9,$5}
9) ls -al /etc | awk '$2>max && NF==9 {max=$2; name=$9} END {print name}'
10)
2) cat /etc/passwd | awk '/^r/'
3) cat /etc/passwd | awk '/^[^:][^:][^:][^:]:/'
4) cat /etc/passwd | awk -F':' '$3>=10 && $3<=15'
5) ps -ef | awk '$2>=100 && $2<=999'
6) ps -ef | awk '$3==1'
7) ls -al /etc | awk '/^-/ && $2=2'
8 ) cat /etc/passwd | awk '/\/bin\/bash/'
9) ls -al /dev | awk '/^c/' | wc -l
10) cat /etc/passwd | awk -F":" '$3>=1000' | sort -nt":" -k3,3
11) ls -al /etc | awk '/^-..x/' | sort -rt" " -k2,2
12) ls -al /dev | awk '/^b/'
13) cat /etc/passwd | awk -F':' '($3>=10 && $3<=15) || ($3>=25 && $3<=29)'
14) ls -a /etc | awk '/^s/' | tr "a-z" "A-Z"
15) ls -al /etc | awk '/^l/' | wc -l > file1
16)#!/bin/bash
while true; do
echo "give me a character"
read char
echo $char | awk '/[a-z]\|[A-Z]/' > file1
if [ -s file1 ]; then
echo "you gave a letter"
else echo $char | awk '/[0-9]/' > file2
if [ -s file2 ]; then
echo "you gave a number"
else echo $char | awk '/!/' > file3
if [ -s file3 ]; then
exit
else echo "you gave a special character"
fi
fi
fi
done
17) Δεν μπορει να γινει με awk γιατι δεν μπορει να διαβασει την τιμη μια μεταβλητης που δινει ο χρηστης π.χ. $1 ή $login αν ορισουμε login=$1