Grunnleggende Bash
- Bash-promptet
- Hvordan kjøre kommandoer
- Argumenter og opsjoner
- Retting av feil
- Kjøre kommandoer i bakgrunnen
- Fullføring av kommandoer
- Wildcard i filnavn
- Mer hjelp
Bash-shellet er den vanligste måten å gi kommandoer på i Linux. Bash kjøres vanligvis i en x-term (e.l.), og kan blant annet startes ved å trykke på x-term-ikonet.
Bash-promptet
Bash vil starte med å skrive ut en prompt. Hvordan prompten ser ut kan variere litt, og man kan også forandre den selv, men den kan f.eks. se ut som dette:
tre: arneh>
(i denne prompten skriver bash først ut navnet på maskinen man sitter på, og så navnet på katalogen man står i, og til slutt et > tegn)
Etter prompten vil nå markøren stå, klar til å ta i mot kommandoer.
Hvordan kjøre kommandoer
Når man har fått prompten kan man skrive inn kommandoer til bash. Man skriver da inn kommandoen man vil utføre og trykker enter. Bash vil da utføre kommandoen, og kommandoen kan eventuelt skrive ut ting på linjene etter prompten.
f.eks. kan man få vite dagens dato og tidspunkt ved å gi kommandoen date:
tre: arneh>date Thu Nov 11 17:57:22 MET 2004
(i dette eksemplet skrev bash ut prompten tre: arneh>, jeg skrev inn ordet date og trykte enter, og kommandoen date skrev ut Thu Nov 11 17:57:22 MET 2004
Når prompten kommer opp igjen kan man gi nye kommandoer.
Argumenter og opsjoner
Noen kommandoer kan ta argumenter. Dette er ekstra ord som forandrer litt på hva kommandoen gjør. Noen kommandoer må til og med alltid ha argumenter.
Man har f.eks. kommandoen ls som lister opp alle filer og kataloger i en katalog. Argumentet til ls er katalogen man vil ha listet opp innholdet til (ls kan også kjøres uten argumenter, da vil den liste opp innholdet i katalogen man står i).
Så for å liste opp innholde i sin egen hjemmekatalogen (tegnet ~ (kalles tilde, finnes til høyre for Å på tastaturet) er en forkortelse i bash for din egen hjemmekatalog):
tre: arneh>ls ~ bin inf hfag pc www_docs
Opsjoner ligner på argumenter. Opsjoner er ord som starter med - (en bindestrek). Opsjoner er nesten aldri nødvendig for å kjøre en kommando, men når den blir gitt så forandrer den litt (eller noen ganger drastisk) på hva kommandoen gjør.
f.eks. så har ls opsjonen -a som lister opp alle filer. ls vil normalt ikke liste filer som har navn som starter med . (et punktum), men om man gir den opsjonen -a så vil den liste opp disse filene også.
tre: arneh>ls -a ~ .bashrc .bash_history .emacs bin inf hfag pc www_docs
Retting av feil
Det er ingen som alltid skriver helt rett. Mens man ennå skriver inn kommandoen (før man har trykt enter) kan man rette på kommandoen ved å bruke backspace- og delete-tastene. Man kan også flytte markøren venstre og høyre ved å bruke venstre og høyre piltaster.
Om man i stedet for å prøve å fikse linjen slik, men heller vil begynne helt på nytt, så kan man trykke Ctrl+C (hold inne Control-tasten samtidig som man trykker C-tasten). Da vil bash skrive ut prompten på nytt og man kan begynne å skrive inn kommandoen på nytt. I tillegg kan man bruke Ctrl+U for å slette alt på linjen som er før markøren og Ctrl+K for å slette alt på linjen etter markøren.
Om man skrev feil, men trykte enter slik at kommandoen startet så kan man avbryte kommandoen ved å trykke Ctrl+C. Men ofte vil kommandoen være ferdig før man rekker å trykke Ctrl+C. Om man skrev feil kommando vil bash svare at kommandoen ikke finnes (med mindre det finnes en annen kommando med det navnet man skrev da):
tre: arneh>sl bash: sl: command not found
Om man skrev noen av argumentene eller opsjonene feil vil vanligvis kommandoen gi en eller annen feilmelding om dette. Men denne varierer med hvilken kommando man prøvde å kjøre.
Kjøre kommandoer i bakgrunnen
Vanligvis når man kjører en kommando så vil den kjøre, og man får ikke gjort noe mer i Bash før kommandoen er ferdig. I blant vil man at man skal kunne fortsette å gi kommandoer i bash selvom kommandoen man startet ikke er ferdig.
Dette er spesielt nyttig med programmer som åpner nye vinduer, og hvor man vil beholde disse vinduene og likevel kunne fortsette å bruke bash.
For å kjøre en kommando slik i bakgrunnen skriver man tegnet & helt sist på linjen (rett før man trykker enter). Man vil da umiddelbart få tilbake prompten og kunne fortsette å gi nye kommandoer, mens den kommandoen man startet vil fortsette å kjøre.
Om man har startet en kommando som man senere finner ut at burde vært kjørt i bakgrunnen (vanligvis fordi man vil kunne fortsette å skrive i Bash), så kan man få flyttet kommandoen til bakgrunnen ved å gjøre følgende. Først trykker man Ctrl+Z. Dette vil pause kommandoen som ble kjørt i bakgrunnen, og gi kontrollen tilbake til Bash. Man kan så gi kommandoen bg (som står for background) for å fortsette i bakgrunnen kommandoen som er pauset. Man kan eventuelt skrive fg for å fortsette kommandoen i forgrunnen. Dette gjelder også kommandoer som er startet med &, skriver man fg så vil denne kjøres i forgrunnen i stedet for i bakgrunnen.
Fullføring av kommandoer
For å gjøre det lettere å bruke bash, og for å sikre bedre mot feil, så kan Bash fullføre kommandoer og filnavn man har begynt å skrive navnet på.
Det fungerer ved at man begynner å skrive de første bokstavene i kommandoen man vil skrive, og trykker så TAB (tasten rett til venstre for Q). Om det er ingen andre kommandoer som begynner med den teksten du så langt har skrevet vil bash da fylle ut resten av kommandoen for deg.
Så om jeg f.eks. skriver em og trykker tab, så vil bash fullføre det til emacs.
Om det er flere kommandoer som begynner med de samme tegnene vil det ikke skje noe første gang man trykker tab, men trykker man en gang til vil man få opp en liste over alle komandoer som starter med det man så langt har skrevet.
Om jeg f.eks. skriver pin og trykker tab to ganger får jeg opp listen:
pine pinfo ping ping6 pingmap pinky
Om jeg så skriver videre en f og trykker tab igjen vil den fullføre det til pinfo.
For første ord på linjen er det altså kommandoen som fullføres, men om ordet står senere på linjen vil ordet fullføres med en fil/katalog i den den katalogen du står i.
Tab-fullføring er egentlig noe man lærer best ved å bare prøve seg litt frem, så det er bare å begynne å prøve litt selv, og man venner seg fort til å bruke det veldig mye.
Tab-fullføring er også veldig praktisk til sjekke om man har skrevet rett, for om den ikke klarer å fullføre, og Bash ikke lister opp noen alternativer når man trykker tab én gang til, så er det ofte fordi man har skrevet feil (en vanlig feil er å skrive store bokstaver der det skal være små, eller motsatt. Unix regner store og små bokstaver som forskjellige).
Wildcard i filnavn
Mange kommandoer tar filnavn som argumenter. Ofte kan man også oppgi mange filer etterhverandre på samme linje. For å gjøre det enklere, slik at man slipper å skrive alle filnavnene selv, så har Bash noe som heter wildcard.
Som wildcard brukes tegnes * (tegnet til høyre for Æ). * står da for "hva som helst". Så en * for seg selv vil gi alle filer i katalogen man står i (untatt filer som begynner med .). F.eks.
arneh: tmp>ls * Oblig.class en_annen_fil.txt fil2.txt filen.txt Oblig.java fil1.txt fil3.txt
(ls vil i utgangspunktet liste opp alle filer uansett, om man ikke oppgir noen argumenter, så akkurat for kommandoen ls er ikke bare en * så nyttig).
Men * kan også brukes som en del av teksten. Om man f.eks. skriver fil* så vil det bli alle filer som begynner med fil:
arneh: tmp>ls fil* fil1.txt fil2.txt fil3.txt filen.txt
eller *.txt som vil være alle filer som slutter på *.txt:
arneh: tmp>ls *.txt en_annen_fil.txt fil1.txt fil2.txt fil3.txt filen.txt
* kan også stå midt inni:
arneh: tmp>ls f*.txt fil1.txt fil2.txt fil3.txt filen.txt
Eller det kan være flere * i et navn:
arneh: tmp>ls *fil* en_annen_fil.txt fil1.txt fil2.txt fil3.txt filen.txt
Og som man kan se fra forrige eksempel så kan * godt stå for ingenting også (fire av filene som ble listet opp i forrige kommando inneholdt ingenting før fil).
Det finnes også et annet wildcard, ? (spørsmålstegn). ? står for nøyaktig ett tegn som kan være hva som helst. Så fil?.txt vil liste opp
fil1.txt fil2.txt fil3.txt
men ikke filen.txt fordi "en" er to tegn.
Mer hjelp
- Unix for nybegynnere er et kompendie som beskriver det meste en nybegynner trenger å kunne for bruke Linux på UiO. I tillegg til å beskrive Bash i noe mer detalj så er også en rekke kommandoer, filer, vindussystemet og mere beskrevet.
- Filrettigheter beskriver filrettigheter i Linux.
- Shelloppsett etc. beskriver hvordan man kan tilpasse Bash mer til egne ønsker.
- A Bash Tutorial En mer avansert tutorial i Bash (på engelsk)
- Bash Prompt HOWTO Alt du trenger vite (og antageligvis mye mer) for å lage ditt eget bash-prompt (på engelsk).
- Working more productively with bash 2 Avansert Bash (på engelsk).
- Bash's manside Dette er en av tidenes lengste manualsider, og innholder veldig mye informasjon, men kan være vanskelig å finne det man leter etter...