Oppgave 1
a) rm /tmp/fil.txt
b) chmod 744 /tmp/open
c) wget http://www.vg.no/index.html
d) grep sport index.html | wc -l
e) bash: ls: No such file or directory
f) $0
er scriptets navn. Så det starter seg selv om og om igjen.
g) Dette scriptet starter to instanser av seg selv som igjen starter to instanser og så videre. Dermed vil flere og flere prosesser startes og raskt vil maskinen overstrømmes av prosesser og alt annent vil få store problemer med å kjøre.
Oppgave 2
a)
#!/bin/bash utelatt....
b)
#! /bin/bash if [ $# -ne 2 ] then echo "Syntaks: $0 fra-endelse til-endelse" exit fi fra=$1 til=$2 for fil in *.$fra do if [ -f $fil ] then name=`basename $fil .$fra` mv $fil $name.$til echo "Endrer $fil til $name.$til" found=true fi done if [ ! $found ] then echo "Fant ingen filer med filendelse $fra" fi
Oppgave 3
a) javac
kompilerer programmet og generer bytecode som lagres som filen Hello.class
.
Kommandoen java
starter en JVM som tolker Hello.class
og skriver "Hello world!" til
terminal-vinduet.
b) Ja, hvis Java er installert på Sun-maskinen, startes det en Sun-JVM som tolker bytekoden i
Hello.cass
og skriver "Hello world!" til terminal-vinduet.
c) Ja, hvis Java er installert på Windows-maskinen, startes det en Windows-JVM som tolker bytekoden i
Hello.cass
og skriver "Hello world!" til et terminal-vindu.
d) a.out
er maskinkode og den lastes i minnet og utføres direkte, instruksjon for instruksjon.
e) Nei, programmet vil ikke kunne kjøres her, fordi en Sun-maskin har en helt annen arkitektur og den
vil ikke kunne forstå instruksjonene i a.out
som er for en X86-prosessor. Programmet må kompileres
på Sun-maskinen for at det skal kunne kjøres og da trenger man kildekoden.
f) Nei, programmet vil ikke kunne kjøres her. Selv om prosessoren i prinsippet forstår instruksjonene i
a.out
, er formatet på binær-filen og all kommunikasjon med OS helt uforstålig. OS må kontaktes for f. eks. å kunne skrive
til et terminal-vindu.
g) Shellet /bin/bash
startes og tolker koden linje for linje. Det fører til at shellet skriver
"Hello world!" til terminal-vinduet.
h) Det samme vil skje på en Sun-maskin. Det forutsetter at /bin/bash
er installert og det er
vanlig i en standard installasjon.
i) På en standard Windows-installasjon er bash
et helt ukjent begrep og scriptet vil ikke
kunne kjøre. Men det er mulig å installere en bash
-klone fra cygwin.com
og da vil den
kunne kjøre bash
-script.
Oppgave 4
#! /bin/perl $host = $ARGV[0]; die "Syntaks: $0 host\n" if($#ARGV != 0); while($i < 100) { $i++; open(PING,"ping -w 1 -c 1 -t $i $host 2>&1 |"); $line = <PING>; if($line =~ /unknown host/) { print "Ukjent host $host\n"; last; } $line = <PING>; close(PING); $line =~ /(\S+ \(.*\))/; print "$i $1\n"; if($line !~ /Time to live exceeded/) { last; } }