Shellscript, laboration

2000

Originaltext: Josef Svenningsson

2001

Ändringar: Thore Husfeldt

Introduktion

Den här labben kommer att ta upp hur man utför mer avancerade uppgifter med hjälp av shellet och hur man kan underlätta sitt arbete i unix på olika sätt. Tanken är att uppgifterna skall ge en introduktion som gör att man själv kan jobba vidare med dessa koncept.

Alias

Skriv ned de kommandon ni gör för att utföra uppgifterna.
  1. Ge kommandot alias för att lista de alias som finns definierade. Hur många kommandon används så ofta att det finns en två-bokstavs-alias för det?
  2. Skapa ett alias lm för ls -al | more. Observera att tecknet | kan ställa till med problem eftersom det har en speciell betydelse för shellen. Man kan upphäva betydelsen av ett specialtecken genom att skriva ett \ före det.
  3. Skriv ett kommando som ger svaret på den första uppgiften direkt (dvs listar alla tvåbokstavsalias). Ni kan använda reguljära uttryck tillsammans med grep. Det kräver att man läser lite i grep:s manualsida (lycka till) och har basal kännedom till reguljära uttryck (tipps: gör en webbsökning efter “regular expressions” och hitta en lättläst introduktion i stället för att granska grep:s manualsida). Du behöver “^”, “.” och till exempel “\W”.

Shell-variabler

Skriv ner de kommandon ni gör för att utföra uppgifterna.
  1. Skriv
    set prompt = "%m>"
    Om ni t.ex. är påloggade på datorn rizzo1 så skriver shellet ut rizzo1> när den är beredd på ett nytt kommando. Man brukar kalla den text som skrivs ut för promptern. Utseendet på promptern styrs med hjälp av shell-variabeln prompt. Se efter vad prompt har för värde genom att skriva echo $prompt.
  2. Sätt prompt till redo> med kommandot set prompt = "redo> ".
  3. Hur ska man göra för att få en prompt som visar det aktuella biblioteket (dvs det som skrivs ut av kommandot pwd)? Tips: man tcsh, sök efter prompt. (Hur söker man förresten i manualblad, och generellt i more:s output? Läs man more. Snedsteck och ‘n’ är bra att kunna.)

Script

Skriv ner de kommandon ni gör för att utför uppgifterna.
  1. Om man är van vid MS-DOS så sitter de vanligaste kommandona i ryggmärgen. Gör en scriptfil messydos som skapar alias för MS-DOS-kommandona dir (för ls), copy (för cp), delete (för rm), move (för mv) och cd.. (för cd ..). Kom ihåg att starta messydos med hjälp av source.

Dagens Dilbert

På seriefiguren Dilberts hemsida (http://www.unitedmedia.com/comics/dilbert/) så dyker det varje dag upp en ny Dilbert-serie. Målet med den här uppgiften är att göra ett script som automatiskt hämtar den senaste dagens Dilbert när den dyker upp.

Skriv ner de kommandon ni gör för att utföra uppgifterna.

  1. Surfa in på Dilberts hemsida och studera den.
  2. Med den textbaserade www-browsern lynx kan man få en textversion av en hemsida. Ge kommandot lynx -dump "http://www.unitedmedia.com/comics/dilbert/" och studera resultatet. Försök hitta adressen till gif-bilden med dagens Dilbert.
  3. Använd en rörledning och grep för att få fram raden med adressen till dagens Dilbert (och bara den raden förstås). Tänk på att adressen förändras lite varje dag. Det bör fungera i morgon också.
  4. Använd cut för att klippa ut själva adressen ur raden.
  5. Skapa en fil dilbert med följande innehåll:
    #!/bin/tcsh
    set todays = `
    här fyller ni i kommandot från föregående uppgift`
    lynx -source $todays | xv - &
  6. Gör filen exekverbar med chmod och kör den. Om det fungerar så skall dagens Dilbert dyka upp på skärmen.
  7. Utöka scriptet så att det lagrar undan adressen till dagens Dilbert i en fil ~/.olddilbert.
  8. Utöka scriptet så att det bara visar dagens Dilbert om man inte sett den förut. Detta kräver bl.a. att du får reda på hur man skrivar if-satser. Svaret står (så klart) i tcsh:s manualsida. Lycka till!