1 shell cancelcplpodrmdir cat echolspgsh cd fil psstty chmodfindmkdirpwdwc chownkillmvrmwrite > &|
2 shell Ett shell är ett program som bl a tolkar och vidarebefodrar användarens kommandon user shell tolk kernel OS H/W
3 C-shell är liksom Bourneshell och Kornshell ett program och kan startas på samma sätt C-shell som loginshell via ett annat shell
4 C-shell C-shell använder sig inte av filen.profile utan vid inloggning.login utloggning.logout vid varje nytt C-shell.cshrc C-shellets promt är %
5 C-shell För att C-shell skall visa aktuellt kommandonummer ges följande kommando % set promt=”\!%”
6 C-shell C-shell har en history-funktion I variablen HISTSIZE anger man hur många kommandon c-shell skall lagra Upprepning med ett kommando sker med ! och kommandonummer eller ! och början av kommandonamnet !! föregående kommandorad utförs !$ sista argumentet i föregående kommando
7 C-shell I C-shell finns det möjlighet att redigera kommandon %6 !4:p find / -name demo -print (kommandot utförs ej) %7 ^demo^motd find / -name motd -print
8 C-shell, alias C-shell alias funktion ger möjlighet att ”byta”namn på kommandon Permanent lagring kan ske i filen.login 8% alias h history 9% h history...
9 Kornshell Kornshell har det bästa av Bourneshell och C-shell plus en mängd nya funktioner Kornshell är kompatibelt med Bourneshell Kornshell finns i SCO UNIX V.3.2 Xenix och UNIX V.4
10 Kornshell För att Kornshell skall visa aktuellt kommandonummer och $ ges följande kommando: PS1=”!$”
11 Kornshell Aktuellt directory finns i variabeln PWD och föregående directory finns i variabeln OLDPWD Med kommandot cd - förflyttar man sig till föregående directory man arbetade i Med kommandot cd ~kim förflyttar man sig till kims homedirectory
12 Kornshell I Kornshell kan man använda en inbyggd editor för att redigera kommandoraden I Variabeln VISUAL anger man vilken editors kommandon man vill använda Detta kan även göras med kommandot set -o vi eller set -o emacs
13 Kornshell EscGå över till editeringsläge kSenaste kommando ccTar bort kommandot vvi öppnar en temporär fill med kommandot EnterUtför kommandot De flesta kommandon från editorn kan användas men ibland med motsatt betydelse ex. G = äldsta kommandot
14 Kornshell Kornshell har liksom C-shell en history- funktion. I variabeln HISTSIZE anger man hur många kommandon (default 128) Kornshell skall lagra i filen $HOME/.sh_history Kommandot history visar de lagrade kommandona 6 $ r f
15 Kornshell, alias Kornshell alias funktion ger möjlighet att ”byta” namn på kommandon Permanent lagring kan ske i filen.profile I Kornshell definieras alias med =
16 Standard error Omdirigering Standard input 0< Standard output 1> >> 2> Kommando
17 Omdirigering Omdirigering av standard output till standard error kan göras genom att lägga 1>&2 sist På samma sätt kan omdirigering av standard error ske till standard output med 2>&1
18 Utan pipe kunreg dkund dsort- kund kommando Med pipe Pipe
19 Processer Ett program/kommando kan bestå av en eller flera processer loginprocess = Parentprocess -sh who = Childprocess
20 Processer, PID nummer Varje process har ett unikt processnummer - PID nummer Kommandot ps -f ger utskrift av vilka processer som initierats från din terminal UID kim Användare PID 1254 Process- nummer PPID 1 Parent process- nummer TTY tty05 Port COMMAND -sh Initierat kommando
21 login process process med editorn vi Start av editering Telefon ringer och du behöver uppdatera din kalender Nästlade processer Start telnr sökning editera kalender Du vill söka efter ett telefonnummer prg som letar i telreg Sover logga ut eller fortsätt Väcker Processen dör editering klar Sover Väcker Processen dör editering klar Sover Väcker Processen dör telsök klar
22 Processer Förlopp vid exekvering av processer parent- process child- process (subshell) exec exit() wait
23 Fördröja exekvering Kommandot sleep n fördröjer programn antal sek Kommandot wait fördröjer program tills specifierad process terminerat
24 Job control Med kommandot jobs kan man i kornshell (ksh) lista alla jobb som användaren startat i bakgrunden
25 ctrl-z - Lägger till förgrundsjobb i bakgrunden Processen är stoppad tills man ger kommandot bg [n] bg %n - Återstartar jobb nr [n] i bakgrunden fg %n - Hämtar bakgrundsjobb nr [n] stop %n - Stoppar bakgrundsjobb nr [n] kill %n - Tvångsterminerar jobb nr [n] Job control
26 Sub-shell Flera kommandon kan sammanskrivas på samma rad cd / ; ls Detta ger exakt samma resultat som om dessa kommandon skrivits på varsin rad
27 Flera kommandon på samma rad Flera kommandon på samma rad med test ls filx > /dev/null || echo ”filen finns ej” Utförs om exitstatus ej = 0 ls filx > /dev/null && echo ”Filen finns” Utförs om exitstatus = 0
28 Parentes Om en parentes ( ) sätts omkring en kommandorad, kommer ett nytt shell att startas (ett sub-shell) och alla kommandon att utföra detta Sätts kommandon inom { } utförs de av aktuellt shell Skillnaden ligger i att ett sub-shell inte kan påverka parent-shellets miljö
29 eval Kommandot eval gör att shellet läser kommandoraden två gånger
30 Editorer Det finns flera editorer ed Radeditor som finns i alla UNIX- system ex Radeditor vars kommandon kan användas i editorn vi vi Skärmeditor med många funktioner
31 Editor vi,.exrc Editering av en fil med hjälp av vi sker genom att ange vi och filnamn Om filen ej finns skapas den Finns filen.exrc i ditt homedir läser vi intruktionerna i denna först
32 Starta editorn vi UNIX shell Kommando- läge Text- inmatning Esc aiArRoO ZZ vi filnamn
33 Editorn vi, förflyttning Förflyttning i texten tecken för tecken Om piltangenterna ej fungerar kan man förflytta sig runt i texten med hjälp av k j h l
34 Editorn vi, förflyttning w flyttar cursorn ord för ord framåt b flyttar cursorn ord för ord framåt G flyttar cursorn till sista raden 12G flyttar cursorn till rad 12 Ctrl dflyttar texten en halv sida upp Ctrl uflyttar texten en halv sida ned Ctrl bflyttar texten en hel sida upp Ctrl fflyttar texten en hel sida ned
35 Editron vi, kommandon Kommandon i vi aLägg till text efter cursorn ALägg till text i slutet av raden iInsätt text före curson rByt ut tecknet där cursorn står cwÄndra aktuellt ord oÖppna en ny rad under cursorn OÖppna en ny rad ovanför cursorn
36 Editorn vi, ta bort ddTa bort en rad dwTa bort ett ord xTa bort ett tecken
37 Editorn vi uUpphäv senaste ändringskommando
38 Editorn vi, avsluta zz eller :xLagra texten och lämna vi vi gör en kopia av filen du editerar i /tmp Du kan därför gå ur vi utan att lagra ändringarna du har gjort i filen med kommandot :q!
39 Editorn vi, sökning Sökning och upprepning avkommando /sökordSöker efter nästa förekomst av ordet ”sökord” ?sökordSöker efter närmast föregående förekomst av ordet ”sökord” nUpprepar senaste sökning.Upprepar senaste ändrings- kommando
40 Editorn vi, textförflyttning Textförflyttning När du tar bort en rad med dd lagras denna rad i en särskild buffert Du kan ta tillbaka denna rad genom att ge kommandot p Vill du endast kopiera raden till bufferten ger du kommandot yy
41 Editorn vi, :! !! :! Utför kommandot (t ex who) utan att lagra resultatet i filen du editerar !! Utför kommandot (t ex cat filx) och lagrar resultatet i filen du editerar
42 Editorn vi, global ändring Global ändring På alla raderByt utPå alla förekomster på raden :g /Jensen/s/208/356/g Byt ut 208 mot 356 på alla rader med ordet Jensen i filen
43 Editorn vi, skriv om skärmbilden Ctrl l Skriv om skärmbilden 5,24w nyfil Skapar nyfil med innehållet av rad 5 tom 24 vi +$ filorg Editera i slutet av filen filorg
44 Editorn sed Stream editorn sed utför endast globala kommandon sed sänder alla utskrifter till standard output, därför måste omdirigering ske om man vill lagra resultatet sed är inte en interaktiv editor och kan därför med fördel användas i script
45 Editorn sed sed -n ’12,23p’ prgfil –Skriv ut raderna 12 tom 23 i filen prgfil sed s/mje/Max Jensen/g brev > brev.kop –Byt ut mje mot Max Jensen i filen brev och lagra resultatet i filen brev.kop sed -n ’/Name/,/Syntax/p’ prgfil | lp –Skriv ut filen prgfil från raden med ordet Name till raden med ordet Syntax
46 Regular expressions Vissa tecken har en speciell betydelse för en del kommandon som grep, sed mfl. Några av dessa reguljära sökmönster är:.Ett godtyckligt tecken ^Början av rad $Slutet på rad *Noll eller flera förekomster av föregående reguljära uttryck [abc]Godtycklig bokstav a b eller c [0-9]Godtycklig siffra [^abc]Alla tecken utom a b eller c
47 Kommandoersättning Om det på en kommandorad finns tecken inneslutna mellan ` ` tas denna sträng som ett kommando cat brevlista max lisa kim mail `cat brevlista` < brev
48 Specialtecken I UNIX finns en del tecken som har en speciell betydelse. T ex $$ = processid, * = alla filer och | är pipetecknet Alla tecken inom ’ ’ tolkas utan någon speciell betydelse Det samma gäller tecken inom ” ” utom för specialtecknena ’ $ och \ \ framför ett tecken tar bort dess eventuella effekt
49 crontab Periodisk exekvering Kommandot crontab lägger upp tabeller för demonen cron 0,30 * * * * date > /dev/console timmemånad min.dagveckodag crontabb -l visar dina ”cronjobb” crontabb -rtar bort dina ”cronjobb”
50 at Exekvering vid viss tid Kommandot at utför ett jobb vid en viss tidpunkt och endast en gång at 22:10 backupscript ctrl d
51 Shell-script Kommandon kan lagras i en kommandofil och sedan exekveras shell-script –Textfil med kommandon –Lätta att göra och underhålla –Behöver inte kompileras
52 Kontroll av shellscript Linjär Vilkor Loop
53 Shellscript Kommandifil - shellscript cat lrkn echo ”Antal filer är \c ” ; ls | wc -l lrkn Antal filer är 16
54 Shellscript Normalt exekveras ett script av ett subshell. Vill man att det aktuella shellet ska exekvera scriptet sätter man en punkt och ett mellanslag framför filnamnet. filnamn
55 Shellscript, optioner Optioner till Bourneshell sh -e prg Scriptet prg avbryts om något kommando i filen misslyckas sh -v prg Alla rader i filen prg visas innan de exekveras sh -x prg Alla rader i filen prg visas med variablers innehåll efter exekvering sh -n prg Shellet läser filen prg utan att exekvera scriptet
56 Shellscript, exit Kommandot exit avbryter en shellprocedur exit är ett tal man vill ha som exitstatus echo $? Skriver ut exitstatus för föregående kommando Konventionen är att alla tal över 0 indikerar ett fel 0
57 shellscript, # : Om en rad inleds med # eller : utförs inte denna rad # Används ofta för att skriva kommentarer : Ensamt på första raden innebär att scriptet exekveras av ett bourneshell #!/bin/ksh Ensamt på första raden innebär att scriptet exekveras av ett kornshell
58 Variabler Tilldelning av shellvariabler fil=/u/kim/kunfil namn=Jensen Anrop av en variabel sker genom att sätta $ framför variabelnamnet lp $fil (skriver ut filen /u/kim/kunfil) echo $namn Jensen
59 Standardvariabler HOME –Innehåller sökväg till ditt homedirectory PATH –Directories som shellet ska söka i efter kommandon TERM –Den terminaltyp du använder IFS –Anger vilka tecken som ska användas som fältseparator PS1 –Anger hur promten ska se ut PS2 –Anger hur sekundära promten ska se ut (>)
60 Variabler, export Om en variabel skall ”ärvas” till ett nytt shell, måste den exporteras med kommandot export TERM=vt220 export TERM
61 Varibler, tilldelning fil=filx mv $fil ${fil}org –Ändrar namn på filx till filxorg echo ${tmpdir:-/tmp} –Om variabeln tmpdir ej är satt sätts tmpdir till /tmp temporärt echo ${tmpdir:=/tmp} –Om variabeln tmpdir ej är satt sätts tmpdir till /tmp echo ${logname:?”Ej satt”} –Om variabeln logname ej är satt skrivs sh:logname Ej satt echo ${LOGNAME:+”LOGNAME SATT”} –Om variabeln LOGNAME är satt skrivs LOGNAME satt annars inget
62 Variablers innehåll Variablers innehåll kan kontrolleras med kommandona set och env set –rapporterar vilka variabler som är ”lokalt” satta env –rapporterar vilka variabler som är globalt satta Enskilda variablers innehåll kan skrivas ut med kommandot echo
63 Positionsparametrar Argument kan ges till ett kommando eller program med hjälp av positionsparametrar Varje argument har ett visst positionsnummer till kommandot 1-9 $0 namnet på proceduren $1argument nr 1 $2argument nr 2 : $9argument nr nr 9 $#antal argument $*alla argument som ett ord
64 Positionsparametrar, shift Kommandot shift används för att byta plats på positionsparametrars innehåll $1$2$4$9$10
65 Flera parametrar $$Nuvarande processnummer $!Senaste bakgrundsprocess $?Exit status 0 = sant allt annat = falsk
66 read Kommandot read är ett inbyggt kommando som tar ett namn på en variabel som argument read läser från standard input och tilldelar variabeln det inmatade värdet
67 test, filer Kommandot test ger möjlighet att utvärdera tex filstatus, numeriska uttryck eller textsträngars relationer test -f filnamn sant om filen finns test -s filnamn sant om filen finns och > 0 test -d filnamn sant om filen är ett dir test -r filnamn sant om filen kan läsas test -w filnamn sant om man kan skriva i filen test -x filnamn sant om filen kan exekveras
68 test [ ] Kommandot test kan skrivas på två olika sätt: test uttryck eller [ uttryck ]
69 test, numeriska tester Numeriska tester [ num1 xxx num2 ] test num1 xxx num2 -eqlika med -ne ej lika med -gt större än -ge större än eller lika med -lt mindre än -lemindre än eller lika med
70 test, teckensträngar Test av teckensträngar test ”$TERM” = ”vt220” ; echo $? 0 (om TERM=vt220) test teckensträng = teckensträng test ”$TERM” != ”vt220” ; echo $? 1 (om TERM = vt220)
71 Styrning av script, if ifkommandolista then kommandolista [else kommandolista] fi then kommando else kommando if test kommando false true
72 Styrning av script, for for namn in ord1 ord2 do kommandolista … done
73 Beräkningar, expr Kommandot expr används för att göra heltalsberäkningar a=20 expr $a a=èxpr $a - 5` echo $a 15 b=èxpr $a \*3` echo $b 45
74 Styrning av script, while while kommando do kommandolista done while-slingan utförs så länge $?(true) = 0 true är alltid = 0 true false while test- kommando utför kommando
75 Styrning av script, until until kommandolista do kommandolista done until-slingan utförs så länge $?(true) = 0 false är alltid = 0 false true until test- kommando utför kommando
76 break Kommandot break används för att bryta en loop
77 Kommandot continue används för att hoppa över instruktioner i en loop.
78 styrning av script,case case $ord in mönster) kommandolista ;; … *) kommandolista ;; esac kommando true false
79 funktioner En funktion är en form av kommandofil, med den skillnaden att funktionen inte körs i ett eget shell syntax: funktionsnamn () { kommandon }
80 avbrott När ett shellscript körs kan det avbrytas avsiktligt eller oavsiktligt De vanligaste avbrottssignalerna är: 0Shellexit t ex Ctrl d 1Linjen kopplas ned 2Interrupt-knappen (DEL, CTRL c) 9kill -9 15kill
81 trap Kommandot trap fångar upp alla avbrottssignaler och vidtar de åtgärder som anges –trap ”” # ignorera signal 1 2 och 15 –signal 9 kan fångas upp men ej ignoreras –trap ”rm $tempfil ; exit 18”
82 awk (Aho, Weinberger och Kernighan) awk är ett verktyg för databearbetning –ta fram rapporter och summeringar –omforma data så att de kan användas i ett nytt kommando
83 awk, mönster och årgärd awk läser indata rad för rad jämför varje rad med ett mönster utför en åtgärd för varje rad som motsvarar mönstret awk -F: ’/usr/ { print $5 }’ /etc/passwd mönsteråtgärd
84 awk, avskiljare awk bearbetar inmatningen en rad i taget –Rad-avskiljare RS, är default radmatning (newline) –Fält-avskiljare FS, är default mellanslag eller tab –Fälten i en post kan anges med variablerna $1, $2, $3 … –$0 betecknar hela posten
85 awk, BEGIN END Förutom reguljära mönster finns även BEGIN och END BEGIN –genomförs före bearbetning av enskilda poster END –genomförs efter bearbetning av enskilda poster awk -F ’ /usr/{ print $1} END { print ”Filslut” }’ /etc/passwd
86 awk, mönster awk - mönster Jämförelseoperatorer ==lika med !=ej lika med <mindre än >större än !inte &&och ||eller
87 awk variabler NR –Numret på den bearbetade posten NF –Antal fält i den aktuella posten RS –Skiljetecken mellan poster i inmatningsfilen ORS –Skiljetecken mellan poster i utmatningsfilen FS –Skiljetecken mellan fält i inmatningsfilen OFS –Skiljetecken mellan fält i utmatningsfilen
88 räkneoperationer i awk Räkneoperationer i awk –Det finns möjlighet att tilldela variablervärden i awk –Det finns även möjlighet att göra räkneoperationerna + - * och / i awk awk ’{sum = sum + $3; print $sum}’ rfil –Flera instruktioner kan inkluderas i varje behandlingsuppmaning –Varje delinstruktion måste avslutas med ;