4.6 KiB
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 Bash’s 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 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
Frågor och uppgifter
-
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.
-
Om du vill lista alla filer som börjar på a och slutar på .c, vilken wildcard använder du då?
ls a*.c
-
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.
-
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.
ls -laR | gzip > ls-laR.gz 2> ls-laR-errors.txt
-
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
if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" fi
-
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.
-
Hur använder du mekanismen
pushd
,popd
ochdirs
?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.
-
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.
Dessa tre kommandon kan också snabba upp navigeringen väsentligt när man arbetar
mycket i CLI-läge. De flesta känner säkert till att cd ~
tar en tillbaks till
ens hemkatalog. Man kan använda dir-stacken på liknande sätt. Låt oss ta några
exempel på detta.
jake@olivia:~$ dirs
~
jake@olivia:~$ pushd scripts_grundkurs/
~/scripts_grundkurs ~
jake@olivia:~/scripts_grundkurs$ # Vi vill nu fixa lite i /etc
jake@olivia:~/scripts_grundkurs$ pushd /etc
/etc ~/scripts_grundkurs ~
jake@olivia:/etc$ # Fixar lite... nu vill vi tillbaks till scriptingen
jake@olivia:/etc$ dirs -v
0 /etc
1 ~/scripts_grundkurs
2 ~
jake@olivia:/etc$ # Notera att scripts_grundkurs är nr 1 på listan
jake@olivia:/etc$ pushd +1
~/scripts_grundkurs ~ /etc
jake@olivia:~/scripts_grundkurs$ # Tada, man kan även går såhär:
jake@olivia:~/scripts_grundkurs$ dirs -v
0 ~/scripts_grundkurs
1 ~
2 /etc
jake@olivia:~/scripts_grundkurs$ cd ~2
jake@olivia:/etc$ dirs -v
0 /etc
1 ~
2 /etc
jake@olivia:/etc$ # Dock försvann då scripts_grundkurs från dir-stacken