scripts_grundkurs/Labb1/laborationsrapport.md

66 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Laborationsrapport 1 #
## Syfte ##
Grunderna i Bash. Att efter genomförd laboration få praktisk erfarenhet av att skräddarsy. Bashmiljön. Förstå hur Wildcards och Braces fungerar i praktiken. Kunna navigera i bashmiljön och förstå vad Bashs olika konfigurationsfiler gör.
Notera att laborationens uppgifter både finns inbakade i texten och under frågesektionen.
## Tillvägagångsssätt ##
### Test och experiment ###
Tillsammans med [daemonicus666](https://github.com/daemonicus666) gjorde vi ett litet script med awk som tog uptime kommandot och filtrerade ut så endast uptimen visades på skärmen. Scriptet finns på [uptime.sh](https://github.com/jackbenny/scripts_grundkurs/blob/master/Labb1/uptime.sh)
### Frågor och uppgifter ###
1. Vad kommer att listas vid följande kommando?
* ls -la [a]*[!e]
Listar alla filer som börjar på __a__ och innehåller ett fritt antal tecken och som inte slutar på ett __e__.
* ls -la *[f-i]?
Listar alla filer som börjar på ett fritt antal tecken och sedan innehåller __f__ till __i__ och sedan bara ett enda tecken. T.ex. filen __aagl__ kommer visas, men inte __aaaglll__.
* ls -la ????.[co]
Listar alla filer som innehåller fyra tecken, en punkt, och sedan ett __c__ eller ett __o__.
2. Om du vill lista alla filer som börjar på a och slutar på .c, vilken wildcard använder du då?
```bash
ls a*.c
```
3. Om du skriver ls -la >> /test/test, vad händer då?
Den skriver alla ut en fillista till filet /test/test. Körs raden igen kommer den skriva fylla på med listan efter den förra listan i samma fil.
4. Lista alla filer i hela filsystemet till en fil som heter ls-laR.gz, den ska alltså också vara komprimerad, eventuella felmeddelanden ska hamna i ls-laR-errors.txt.
```bash
ls -laR | gzip > ls-laR.gz 2> ls-laR-errors.txt
```
5. Vad är miljövariabeln PATH för något? Hur lägger du till katalogen ~/bin till PATH?
Hur gör du så att denna ändring sker vid varje inloggning?
PATH håller reda på binärer i systemet. För att lägga till ~/bin i min egen PATH redigerar jag min ~/.profile och lägger till följande innehåll
```bash
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
```
6. Vad händer om du skriver top i .bash\_logout?
Top körs vid utloggning, dock bara om man är i ett login-shell, d.v.s. om man loggar in via en riktig terminal, typ CTRL+ALT+F2.
7. Hur använder du mekanismen pushd, popd och dirs?
Pushd används för att lägga in kataloger i dir-stacken samt byta till katalogen man anger. Popd används för att byta tillbaks till katalogerna från dir-stacken, en i taget. När man använder popd försvinner katalogen en efter en från dir-stacken. Dirs kommandot används för att lista katalogerna i dir-stacken.
8. Vad är ett "null kommando" och varför finns det?
Kolon (":") är ett null kommando och returnerar alltid 0 från $? (värdet från senaste körda kommandot). D.v.s det är ett kommando som faktiskt körs men inte gör något, men returnerar 0 i exit status. T.ex. kan man använda detta istället för ett faktiskt kommando om man måste ha ett sant returvärde från något. Exempelvis i en while-stats i script. Eller bara rakt upp och ner vid prompten för att testa ett script man gjort som är beroende av ett sant returvärde.
## Reflektion ##
Det var en lärorik första laboration med tanke på att där var en hel del nytt att lära sig, bland annat null-kommandot och pushd, popd, dirs. Det är aldrig fel att gå tillbaks till grunderna för att få en stabilare grund att stå på när det gäller scripting.