Artikel top billede

(Foto: Computerworld)

Mac OS X og kommandolinjen

Apple har ry for at udvikle meget bruger-venlige løsninger. Styresystemet Mac OS X er ingen undtagelse. Mange brugere – ikke kun af Mac OS X – opfatter brugervenlighed som noget med mus og grafiske brugergrænseflader, men hvis du virkelig vil udnytte din computer fuldt ud, kan det ofte være en fordel at kende kommandolinjen.

Af Kenneth Geisshirt, Alt om Data

Denne artikel er oprindeligt bragt på Alt om Data. Computerworld overtog i november 2022 Alt om Data. Du kan læse mere om overtagelsen her.

Lige nu sidder du måske og tænker, at Mac OS X da ikke har en kommandolinje. Du har sikkert hørt fra Linux-brugere, at de elsker deres kommandolinje, og at Windows-brugere en gang imellem må bruge en. Mac-brugere vil mene, at manglen på en kommandolinje i OS X beviser, at deres styresystem er bedre.

Sagen er bare den, at Mac OS X har en kommandolinje – den er bare gemt lidt væk. Grunden til, at OS X har en kommandolinje, er, at kernen i OS X bygger på unix. Da Steve Jobs en kort årrække arbejdede for firmaet NeXT, eksperimenterede han med et alternativt styresystem til unix. Unix har altid været dominerende blandt dataloger, fysikere, kemikere og ingeniører, og han forsøgte at bygge et nyt og bedre system til dem.

Eftersom unix var dominerende, var det dengang nødvendigt at være i stand til at køre alle unix-programmerne. Derfor byggede han oven på unix, men brugergrænsefladen var ikke X Window System, som unix (og Linux) bruger den dag i dag.

Da Jobs vendte tilbage til Apple, byggede han videre på sit unix-baserede styresystem. I dag består OS X af en kerne fra FreeBSD-projektet og en masse open source-applikationer. Den grafiske brugergrænseflade og grafiske applikationer har Apple udviklet specielt til OS X.

Unix stammer fra en tid, hvor der ikke fandtes grafiske brugergrænseflader. Brugerne logger ind fra en terminal og udfører kommandoer fra en kommandolinje. Programmet, hvori brugeren starter applikationer, omtales som en shell. I dag er BASH en af de mere udbredte shells – både Linux og Mac OS X bruger BASH som default shell, men det er muligt at bruge andre. I denne artikel er BASH den shell, som benyttes.

+[Command]+[U] for at få vinduet frem. Med [Command]+[T] kan du åbne flere terminaler i samme vindue."]

+[Command]+[U] for at få vinduet frem. Med [Command]+[T] kan du åbne flere terminaler i samme vindue."']

I en shell som BASH indtaster du kommandoer og får dem udført, når du trykker på [Enter]. Ved mange kommandoer kan du slå funktionalitet til ved at angive en option. På kommandolinjen gør det det typisk ved at skrive et – (minus) og et eller flere tegn, for eksempel vil kommandoen ls -t give et andet output end ls alene.

Enhver kommando er dokumenteret – og dokumentationen (manualen) følger med Mac OS X. Du kan bruge kommandoen man til at læse dokumentationen – for eksempel vil man man vise din dokumentation til man.

Nagivere rundt

Dine data er organiseret i et træ bestående af foldere og filer, hvor filerne er bladene. Roden af dit filsystem er i toppen og grenene nedenunder – sådan tegner og taler dataloger altid om træer. En vigtig del af kommandolinjen er kommandoer til at navigere rundt i træet. Nogle kommandoer er bygget ind i BASH, mens andre er små programmer.

For at få en oversigt over, hvilke filer og foldere som er i den nuværende folder, kan du bruge kommandoen ls (forkortelse af liste). Du får en oversigt, hvor du kun ser navnene på filerne og folderne. Filerne er sorteret alfabetisk. Tilføjer du option -l, får du dem som en ”lang” oversigt, det vil sige en oversigt, hvor du kan se størrelsen på filerne, hvornår de sidste er blevet ændret og så videre. Hvis du ofte får sorteret efter tidspunkt i stedet for navn, kan du med fordel bruge option -lt (her står t for tid).

Det er let at skifte folder. Med kommandoen cd kan du ”gå ned i en folder” (cd er en forkortelse for change directory). BASH kan færdiggøre så meget af dine kommandoer, som er muligt. Som eksempel antag, at du har to foldere. Den ene hedder FiskA, og den anden hedder FiskB. Skriver du nu cd F og trykker på [Tab]-tasten, vil BASH kunne regne ud, at der skal stå cd Fisk, men kan jo ikke læse dine tanker og vide, om A eller B er det, du tænker på. På engelsk omtales denne funktionalitet som ”TAB completion”, og den er utroligt nyttig.

For at ”komme op” fra en folder kan du benytte dig af cd .. (altså to punktummer). For at oprette en folder kan du bruge kommandoen mkdir efterfulgt af et navn.

Sidst, men ikke mindst, kan du slette filer med kommandoen rm (for remove). Den er farlig, da slettede filer er umulige at genskabe. Men kommandoen kan som udgangspunkt slette filer. Sætter du option -r på rm, vil den slette rekursivt, det vil sige de filer og foldere og deres filer og foldere og så videre. Det er med andre ord en måde at fjerne et helt undertræ på.

Smart tricks

Du har allerede set, at [Tab]-tas-ten har en særlig betydning. Der er flere taster, som er nyttige at kende. Med ”pil op” (og ”pil ned”) kan du bladre i tidligere kommandoer. Ofte vil du gerne udføre den samme kommando ofte, og her er det nyttigt at have historikken med.

Det er muligt at registrere i en kommandolinje. Du kan flytte rundt med piletasterne, tilføje og slette dele af en linje, før du udfører den. Med [Esc]+[Delete] kan du slette et helt ord (ord og tegn adskilt af mellemrum). Jeg bruger ofte kombinationen af ”pil op” og [Esc]+[Delete] på følgende måde. Jeg finder en tidligere kommando med ”pil op” og med ”pil venstre”, [Alt]+ ”pil venstre” (hopper et helt ord til venstre). Med [Esc]+[Delete] ændrer jeg de par steder i en kompleks kommando, som er nødvendige.

Fortryder du en kommando – inden du har trykket på [Enter] – kan du altid trykke [Ctrl]+[C].

Pipes og redirections

Unix’ (og derved også OS X’) store fordel er ikke, at du har en kommandolinje. Fordelen består i to dele: Der er små programmer til næsten alt og mulighed for at kombinere programmerne.

Næsten alle programmer på en kommandolinje er i stand til at sende output til ”standard output”, det vil sige til skærmen. Det har du set med ls. Men mange programmer kan enten læse input fra en fil eller ”standard input”. Sidstnævnte kan du tænke på som en måde at sende data til programmet fra tastaturet. Tag nu for eksempel programmet tr. Det kan oversætte (translate) tegn. Kommandoen tr [a-z] [A-Z] beder det om at ændre alle små (engelske) bogstaver til store. Programmet læser linjen (den med små bogstaver) og svarer med den anden linje. [Ctrl]+[D] standser programmet.

tr – del 1
localhost:~ tr [a-z] [A-Z]
dette er alt om data
DETTE ER ALT OM DATA
ctrl-d
localhost:~

Men tr – og så mange andre programmer – kan også indlæse fra ”standard input”. I den situation kan programmet få input, som er output fra et andet program. Tegnet | (lodret streg) kaldes for pipe på unix-engelsk og kæder programmer sammen. Det er muligt at kombinere mere end to programmer ved hjælp af pipe. På den måde kan du bygge komplekse kommandoer op af små programmer, som gør én ting, men gør den godt.

tr – del 2
localhost:~ echo “dette er alt om data” | tr [a-z] [A-Z]
DETTE ER ALT OM DATA
localhost:~

Har du meget output fra et program, skal du kende less. Den viser dig indholdet af en fil (eller ”standard input”), men stopper, hver gang du har set en skærmside. Endvidere er det muligt at søge og bladre frem og tilbage. I stedet for at sende output til skærmen (eller mere præcist ”standard output”) kan du sende det til en fil med tegnet >. Kommandoen echo “dette er alt om data” | tr [a-z] [A-Z] > tekst vil skrive teksten om til store bogstaver og sende resultatet til filen tekst.

Søg

Det er nok muligt at søge efter filer og i filer fra den grafiske brugergrænseflade, men der er rig mulighed for at gøre det fra en kommandolinje.

Skal du finde en fil eller en folder, er kommandoen find meget fleksibel. Det er en kompleks kommando, og jeg finder stadig nye funktioner. Første argument til find fortæller, hvor den skal lede. Bruger du . (punktum), begynder din søgning i den aktuelle folder. Med option -name kan du søge efter navne. Som den unix, OS X nu er, er der rig mulighed for at bruge wildcards. Faktisk er der tale om avancerede wildcards i form af regulære udtryk. Regulære udtryk er et emne helt for sig selv, og det falder uden for denne artikel at beskrive dem i detaljer. Har du behov for det, kan du bede find om at søge efter en type ved hjælp af option -type. Typen kan enten være f (fil) eller d (folder).

Et lille eksempel: Med kommandoen find . -name ’*ab*’ -type f | less finder du alle filer (-type f) som et sted i navn har bogstaverne ab. Kommandoen less er medtaget, da det kan være, at du har mange filer, som opfylder de to betingelser. Den store styrke ved find er, at du kan få programmet til at kalde et andet program, for hver gang find finder en fil eller en folder, som opfylder betingelserne. Det gør du med option -exec (execute – udføre). Syntaksen er lidt speciel, da en shell som BASH sætter begrænsninger på, hvad der skal lade sig gøre. Den fundne fil eller folder kan refereres til som {} (krøllet parentes) efterfulgt at ; (backslash + semikolon). Antag, at du gerne vil slette alle filer, som ender på .pdf. Kommandoen er så find . -name ’*.pdf’ -type f -exec rm -f {} ;.

Der findes også et lille værktøj til at søge inden i filerne. Det hedder grep. Garvede kommandolinjebrugere siger ofte, at de ”grepper”. Kommandoen kan også bruge regulære udtryk til søgningerne, hvilket giver dig nogle spændende muligheder for at finde, hvad du søger. Men du kan også nøjes med at søge efter en fast tekst. For eksempel vil kommandoen grep “Alt om DATA” *.txt søge igennem alle filer, som ender på .txt efter teks-ten Alt om DATA.

Du kan med fordel kombinere find og grep. Gør du det, kan option -H til grep være en fordel. Den får grep til at skrive ud, hvilken fil der er tale om. Vil du for eksempel finde alle fore-komster af teksten ”Alt om DATA” i alle dine txt-filer, kan du gøre det med kommandoen find . -name *.txt -exec grep -H “Alt om DATA” {} ;.

Afslutning

Indtil nu har du set kommandoer, som du indtaster på en kommandolinje, hver gang du har brug for at få udført en opgave. Skridtet fra at skrive kommandoer til at gøre dem til små programmer er lille. Blandt kommandolinjebrugere omtales et lille program bestående af kommandoer som et shell script eller bare et script.

I denne artikel har du kun set en smule af, hvad en kommandolinje kan køre for dig. Ved at åbne en terminal og bruge kommandolinjen en gang imellem tilføjer du en ny dimension til din Apple-computer. Den er på en gang både superbrugervenlig og supernørdet

[themepacific_accordion]
[themepacific_accordion_section title="Fakta"]

Få mere at vide

[/themepacific_accordion_section]
[/themepacific_accordion]