Grundlæggende oplysninger om Bash

Fuldført

En forståelse af Bash starter med en forståelse af Bash-syntaksen. Når du har kendskab til syntaksen, kan du anvende den på alle de Bash-kommandoer, du kører.

Den fulde syntaks for en Bash-kommando er:

command [options] [arguments]

Bash behandler den første streng, den støder på, som en kommando. Følgende kommando bruger kommandoen ls for Bash (for "list") til at få vist indholdet af den aktuelle arbejdsmappe:

ls

Argumenter følger ofte med Bash-kommandoer. Du kan f.eks. medtage et stinavn i en ls kommando for at få vist indholdet af en anden mappe:

ls /etc

De fleste Bash-kommandoer har muligheder for at ændre, hvordan de fungerer. Indstillinger, også kaldet flag, giver en kommando mere specifikke instruktioner. Filer og mapper, hvis navne starter med et punktum, er f.eks. skjult for brugeren og vises ikke af ls. Du kan dog medtage flaget -a (for "alle") i en ls kommando og se alt i destinationsmappen:

ls -a /etc

Du kan endda kombinere flag for at gøre dem korte. I stedet for at angive ls -a -l /etc for at få vist alle filer og mapper i Linux's /etc mappe i lang form, kan du f.eks. angive følgende i stedet:

ls -al /etc

Bash er præcis. Det er nogle gange bemærkelsesværdigt (og et punkt af stolthed blandt Bash aficionados), hvor meget du kan opnå med en enkelt kommando.

Få hjælp

Hvilke indstillinger og argumenter der kan bruges eller skal bruges, varierer fra kommando til kommando. Heldigvis er Bash-dokumentationen indbygget i operativsystemet. Hjælp er aldrig mere end en kommando væk. Hvis du vil vide mere om indstillingerne for en kommando, skal du bruge kommandoen man (til "manuel"). Hvis du f.eks. vil se alle indstillingerne for kommandoen mkdir ("opret mappe"), skal du gøre følgende:

man mkdir

man er din bedste ven, når du lærer Bash. man er, hvordan du finder de oplysninger, du skal bruge for at forstå, hvordan en kommando fungerer.

De fleste Bash- og Linux-kommandoer understøtter indstillingen --help. Dette viser en beskrivelse af kommandoens syntaks og indstillinger. Angiv mkdir --helpfor at demonstrere. Outputtet ser nogenlunde sådan ud:

Usage: mkdir [OPTION]... DIRECTORY...
Create the DIRECTORY(ies), if they do not already exist.
    
Mandatory arguments to long options are mandatory for short options too.
  -m, --mode=MODE   set file mode (as in chmod), not a=rwx - umask
  -p, --parents     no error if existing, make parent directories as needed
  -v, --verbose     print a message for each created directory
  -Z                   set SELinux security context of each created directory
                         to the default type
      --context[=CTX]  like -Z, or if CTX is specified then set the SELinux
                         or SMACK security context to CTX
      --help     display this help and exit
      --version  output version information and exit
    
GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
Report mkdir translation bugs to <http://translationproject.org/team/>
Full documentation at: <http://www.gnu.org/software/coreutils/mkdir>
or available locally via: info '(coreutils) mkdir invocation'

Den hjælp, der opnås på denne måde, er typisk mere præcis end den hjælp, der opnås med man.

Brug jokertegn

Jokertegn er symboler, der repræsenterer et eller flere tegn i Bash-kommandoer. Det hyppigst anvendte jokertegn er stjernen. Den repræsenterer nul tegn eller en sekvens af tegn. Forestil dig, at din aktuelle mappe indeholder hundredvis af billedfiler, men du kun vil se PNG-filerne. dem, hvis filnavne slutter med .png. Her er kommandoen til kun at vise disse filer:

ls *.png

Seddel

Linux har ikke noget formelt begreb om et filtypenavn som andre operativsystemer. Det betyder ikke, at PNG-filer ikke har et .png filtypenavn. Det betyder ganske enkelt, at Linux ikke lægger nogen særlig betydning på det faktum, at filnavnene slutter med .png.

Lad os nu sige, at den aktuelle mappe også indeholder JPEG-filer. Nogle ender i .jpg, mens andre ender i .jpeg. Her er en måde at få vist alle JPEG-filerne på:

ls *.jpg *.jpeg

Og her er en anden:

ls *.jp*g

Det * jokertegn svarer til nul eller flere tegn, men det ? jokertegn repræsenterer et enkelt tegn. Hvis den aktuelle mappe indeholder filer med navnet 0001.jpg, 0002.jpgosv. via 0009.jpg, viser følgende kommando dem alle:

ls 000?.jpg

En anden måde at bruge jokertegn til at filtrere output på er ved at bruge kantede parenteser, som angiver grupper af tegn. Følgende kommando viser alle filerne i den aktuelle mappe, hvis navne indeholder et punktum, umiddelbart efter et lille J eller P. Der vises en liste over alle filerne .jpg, .jpegog .png, men ikke .gif filer:

ls *.[jp]*

I Linux skelnes der mellem store og små bogstaver i filnavne og de kommandoer, der fungerer på dem. Så hvis du vil have vist alle de filer i den aktuelle mappe, hvis navne indeholder punktummer efterfulgt af et stort eller J eller P med små bogstaver, kan du angive følgende:

ls *.[jpJP]*

Udtryk i kantede parenteser kan repræsentere intervaller af tegn. Følgende kommando viser f.eks. alle de filer i den aktuelle mappe, hvis navne begynder med små bogstaver:

ls [a-z]*

Denne kommando viser derimod alle de filer i den aktuelle mappe, hvis navne begynder med store bogstaver:

ls [A-Z]*

Og denne ene viser alle de filer i den aktuelle mappe, hvis navne starter med et lille eller stort bogstav:

ls [a-zA-Z]*

På baggrund af alt dette kan du gætte, hvad følgende kommandoer gør?

ls [0-9]*
ls *[0-9]*
ls *[0-9]

Hvis du har brug for at bruge et af jokertegnene som et almindeligt tegn, gør du det konstant eller "escape it" ved at foranstille det med en omvendt skråstreg. Så hvis du af en eller anden grund havde en stjerne som en del af et filnavn – noget, du aldrig skal gøre bevidst – kan du søge efter den ved hjælp af en kommando, f.eks.:

$ ls *\**