Grundlæggende oplysninger om Bash
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 --help
for 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 *\**