View sourcecode

The following files exists in this folder. Click to view.

lab1.php

1 lines UTF-8 Unix (LF)
1
<?php

/**
 * Generate random values to use in lab.
 */
include __DIR__ . "/../random.php";


// Settings
$base = __DIR__ . "/lab1_extra";
$file = "ircLog.txt";



return [



/**
 * Titel and introduction to the lab.
 */
"answerFormat" => "text",

"title" => "Lab 1 - linux",

"intro" => "
En lab där du använder Unix verktyg som finns tillgängliga via kommandoraden, tillsammans med lite Bash, för att finna och hantera information i en [IRC loggfil](ircLog.txt).
",

"header" => null,

"passPercentage" => 70/100,
"passDistinctPercentage" => 100/100,

/*
"grades" => [
    "pass" => 60/100,
    "pass-distinct" => 100/100,
]
*/

"sections" => [



/** ===========================================================================
 * New section of exercises.
 */
[
"title" => "Bash",

"intro" => <<<EOD
Öva Linux kommandon och använd dem tillsammans med Bash.

I denna övningen kommer du främst använda kommandon som `grep`, `wc`, `head` och `tail` för att söka ut information i en loggfil från irc-chatten.

Write HTML in text, wrap in backtick `<a href="moped">mask</a>`

Pure link as HTML <a href="moped">mask</a>

```
<html> 
```

a > 2

Sedan kombinerar du utskriften av kommandona in till variabler i Bash. Använd man-sidorna vid behov för att finna informaiton om hur du löser uppgifterna.
EOD
,

"shuffle" => false,

"questions" => [



/** ---------------------------------------------------------------------------
 * A question.
 */
[

"text" => <<<EOD
Skapa en variabel `FILE` och tilldela den värdet `$file`.

Svara med variabelns värde, dvs `\$FILE`.
EOD
,

"points" => 1,

"answer" => function () use ($file) {

    return $file;
},

],



/** ---------------------------------------------------------------------------
 * A question.
 */
[

"text" => <<<EOD
Använd kommandot `wc` för att räkna ut hur många rader ircloggen består av. Visa endast antalet rader och filens namn, separerade av ett mellanslag.

Spara svaret i en variabel och svara med variabelns innehåll.
EOD
,

"points" => 1,

"answer" => function () use ($base, $file) {
    return exec("cd $base && wc -l $file");
    //return trim(exec("cd $base && wc -l $file")); // Mac OS
},

],



/** ---------------------------------------------------------------------------
 * A question.
 */
[

"text" => <<<EOD
Använd `wc` tillsammans med `cut` för att räkna ut hur många ord, words, ircloggen består av.

Spara enbart antalet ord i en variabel och svara med den.
EOD
,

"points" => 1,

"answer" => function () use ($base, $file) {
    return exec("cd $base &&  wc -w $file | cut -d' ' -f1");
},

],



/** ---------------------------------------------------------------------------
 * A question.
 */
[

"text" => <<<EOD
Hitta raden med 'pansars' åsikt om 'notepad'.

Spara svaret i en variabel och svara med variabelns innehåll.
EOD
,

"points" => 1,

"answer" => function () use ($base, $file) {
    return exec("cd $base && cat $file | grep pansar | grep notepad");
},

],



/** ---------------------------------------------------------------------------
 * A question.
 */
[

"text" => <<<EOD
Hitta de fyra sista raderna i filen.
EOD
,

"points" => 1,

"answer" => function () use ($base, $file) {
    $res = [];
    exec("cd $base && tail -4 $file", $res);
    return implode("\n", $res);
},

],



/** ---------------------------------------------------------------------------
 * A question.
 */
[

"text" => <<<EOD
När öppnades ircloggen för första gången? Ledtråd 'Log opened'. Svara med raden som säger när loggen öppnades för första gången.
EOD
,

"points" => 1,

"answer" => function () use ($base, $file) {
    return exec("cd $base && grep 'Log opened' $file | head -1");
},

],



/** ---------------------------------------------------------------------------
 * A question.
 */
[

"text" => <<<EOD
Vad innehåller den tredje raden där wasa säger något?
EOD
,

"points" => 1,

"answer" => function () use ($base, $file) {
    return exec("cd $base && grep '<@wasa>' $file | head -3 | tail -1");
},

],



/** ---------------------------------------------------------------------------
 * A question.
 */
[

"text" => <<<EOD
Hur många rader är det som är loggade enligt tiden 11:15?
EOD
,

"points" => 1,

"answer" => function () use ($base, $file) {
    return exec("cd $base && grep '11:15' $file | wc -l");
},

],



/** ---------------------------------------------------------------------------
 * A question.
 */
[

"text" => <<<EOD
Hitta de första 10 raderna från dagen 'Wed Jun 17 2015'.
EOD
,

"points" => 3,

"answer" => function () use ($base, $file) {
    $res = [];
    exec("cd $base && grep -A 10 'Day changed Wed Jun 17 2015' $file | tail -10", $res);
    return implode("\n", $res);
},

],



/** ---------------------------------------------------------------------------
 * A question.
 */
[

"text" => <<<EOD
Hittade raderna som är inlagda angående 'forum' och innehåller detaljer om 'projektet' och 'htmlphp'.
EOD
,

"points" => 3,

"answer" => function () use ($base, $file) {
    $res = [];
    exec("cd $base && grep Forum $file | grep htmlphp | grep projektet", $res);
    return implode("\n", $res);
},

],



/** ---------------------------------------------------------------------------
 * A question.
 */
[

"text" => <<<EOD
Vad sa 'Bobbzorzen' två rader innan han sa 'cewl'?
EOD
,

"points" => 3,

"answer" => function () use ($base, $file) {
    return exec("cd $base && grep '<@Bobbzorzen>' $file | grep -B 2 cewl | head -1");
},

],



/** ---------------------------------------------------------------------------
 * A question.
 */
[

"text" => <<<EOD
Hur många ord är det i den fjärde till nionde raden, under dagen 'Mon Jun 08 2015'?
EOD
,

"points" => 3,

"answer" => function () use ($base, $file) {
    return exec("cd $base && grep -A 9 'Mon Jun 08 2015' $file | tail -6 | wc -w");
},

],



/** ---------------------------------------------------------------------------
 * A question.
 */
[

"text" => <<<EOD
Hitta den första raden där 'pansar' säger något när klockan är 07:48.
EOD
,

"points" => 3,

"answer" => function () use ($base, $file) {
    return exec("cd $base && grep 07:48 $file | grep pansar | head -1");
},

],



/** ---------------------------------------------------------------------------
 * Closing up this section.
 */
], // EOF questions
], // EOF section



/** ===========================================================================
 * Closing up all sections.
 */
] // EOF sections



/**
 * Closing up this lab.
 */
]; // EOF the entire lab