Uke 4 - Binære tall og Full Adder; filbehandling og filrettigheter

Oppgaver til mandag 20. - fredag 24. jan

  1. (Oblig)
  2. (Oblig)
  3. (Oblig)
  4. (Oblig)
  5. (Oblig)
  6. $ type diff
    
  7. (Oblig)
    $ cd /usr/bin
    
  8. (Oblig)
    $ cd
    $ cd ..
    $ cd ..
    $ cd ..
    $ cd ..
    $ cd usr
    $ cd bin
    eventuelt
    cd ../../../../usr/bin
    
  9. (Oblig)
    haugerud@data2500:~$ diff fa.txt fb.txt
    4c4    # forskjell i linje 4 i begge filer
    < 4a   # dette står i fa.txt, < peker til venstre
    ---
    > 4b   # dette står i fb.txt, > peker til høyre
    
  10.  cp -R oblig1 oblig2
    
    Når oblig2 eksisterer fra før, kopieres oblig1 inn under oblig2 og beholder navnet sitt.
  11. (Oblig)
    data2500:~/tom$ tree
    .
    |__ oblig
        |__ tex
            |__ oblig
    
    3 directories, 0 files
    
  12.  $ cd  
     $ cd ~
     $ cd ~/  
     $ cd ~/.  
     $ cd $HOME  
    
  13. (Oblig) Output fra echo går vanligvis til skjerm, men tegnet > sender den til filen newfile istedet.
  14. alias rm='rm -i'
    PS1="`uname`:\h\$ "
    
  15. Ingen fasit. Målet med oppgaven er å bli kjent med å navigere man-sider.
  16. Ingen fasit til oppgaven. Man skal kunne bruke g og G til å navigere til starten/slutten av en man-side.
  17. Dersom man matcher hele linjen vil linjer dukke opp som inneholder brukernavnet andre steder, feks i navnet på prosessen. Det er kun brukernavn i første kolonne man må matche.
  18. Det finnes to tegn man kan bruke til å representere henholdsvis starten og slutten på en linje. Disse tegnene er ^ og $.
  19. ps aux | grep ^kyrre
    
  20. Linjen i scriptet skal nå se slik ut:
    ps aux | grep ^$1
    
  21. Dette kan løses på to måter:
    watch -n 10 ./psuser kyrre
    
    eller editer scriptet slik at det ser slik ut:
    watch -n 10 "ps aux | grep ^$1"
    
  22. (Oblig)
    $ chmod 400 fil.txt 
    
  23. $ chmod 754 fil.txt 
    
  24. $ chmod -R 755 ~/www 
    
  25. umask 077
    
    For filer settes aldri x uansett hva umask er og 077 gir det samme som 177
    rex:~/tmp$ umask 077
    rex:~/tmp$ touch fil
    rex:~/tmp$ ls -l
    totalt 0
    -rw------- 1 haugerud haugerud 0 feb.  12 11:14 fil
    rex:~/tmp$ umask 177
    rex:~/tmp$ touch fil2
    rex:~/tmp$ ls -l
    totalt 0
    -rw------- 1 haugerud haugerud 0 feb.  12 11:14 fil
    -rw------- 1 haugerud haugerud 0 feb.  12 11:14 fil2
    
    Problemet med umask 177 er at det er en dårlig default for mapper:
    rex:~/tmp$ umask 177
    rex:~/tmp$ mkdir mappe
    rex:~/tmp$ ls -l
    totalt 4
    -rw------- 1 haugerud haugerud    0 feb.  12 11:14 fil
    -rw------- 1 haugerud haugerud    0 feb.  12 11:14 fil2
    drw------- 2 haugerud haugerud 4096 feb.  12 11:17 mappe
    rex:~/tmp$ cd mappe/
    bash: cd: mappe/: Ikke tilgang
    
    For en standard Ubuntu-installasjon er umask satt til 077.
  26. (Oblig)
     
    $ chmod 755 ~
    $ chmod 755 ~/fengsel
    Puh! Der slapp du ut!
  27. Det går ikke med
    $ rm #fil.txt
    
    for alt etter # blir tolket som en kommentar. Følgende to metoder virker.
    $ rm "#fil.txt"
    $ rm ./#fil.txt 
    
  28. #! /bin/bash
    for i in $(seq 11 20)
    do
        ping -c 1 -w 1 10.196.10.$i | grep icmp
    done 
    
    $ pscript | wc -l
    
  29.  
    #! /bin/bash

    IFS=:                      # Gjør at for splitter på : og ikke mellomrom
    for dir in $PATH
    do  
        file="$dir/$1"
        if [ -x "$file" -a -f "$file" ]      # hvis kjørbar og fil
        then
           echo "Fant kjørbar fil $1 i $dir" 
        fi 
    done

    # Hvis PATH inneholder ~ må scriptet forbedres for å takle det...

  30.  
    #! /bin/bash

    IFS=:                      # Gjør at for splitter på : og ikke mellomrom
    for dir in $PATH
    do
        for fil in  $dir/*   # virker selvom IFS = :
        do
           if [ -x "$fil" ]      # hvis kjørbar
           then
            echo $fil | grep -i $1
           fi
       done 
    done

  31. (Oblig)