Appendiks B. Lad mig lære lidt flere UNIX/Linux kommandoer

Indholdsfortegnelse
B.1. Mere om omdirigering
B.2. En række nyttige værktøjer
B.3. En række tekstværktøjer
B.4. Andre Unix kommandoer

I dette appendix vil vi gennemgå en række UNIX/Linux kommandoer. Gennemgangen er overfladisk, men du kan finde flere oplysninger i programmers man pages.

B.1. Mere om omdirigering

Linux (som UNIX) arbejder med følgende input/output terminologi:

Vi har før været inde på, at stdout kan omdirigeres med >. cat fil1 fil2 > fil3 vil samle indholdet af filerne fil1 og fil2 i filen fil3.

Da måden, du omdirigerer på, er afhængig af shell'en, er det en god ide at undersøge dette nu. Prøv med:

[daisy@linux daisy]$  env | grep ^SHELL | cut -d/ -f3

Svaret skulle gerne være bash, csh eller tcsh. Det kan være, at du anvender en anden shell - der findes mange. Hvis det er tilfældet, kan du se i man-pages for den aktuelle shell (man SHELLNAVN).

Hvis du selv starter en ny shell (enten fra kommandolinjen eller i et script), er det ikke sikkert, at ovenstående metode virker. Prøv derfor at skrive ps. En liste over de kørende processer vil da blive udskrevet til skærmen. Den nederste proces, der ender på "sh", angiver din shell - normalt.

Fælles for Bourne-Again Shell (bash) og C-Shell er følgende: Lad os antage, at filen fil3 indeholder information, vi ønsker at bevare. Vi vil tilføje (append) indholdet af fil1 og fil2 til fil3. Det gøres ved:

[daisy@linux daisy]$  cat fil1 fil2 >> fil3

Indholdet af en fil kan også anvendes som argument(er) til en kommando, f.eks. vil følgende kommando sende indholdet af filen megenRos til SSLUG's webmastere:

[daisy@linux daisy]$  sendmail www_admin@sslug.dk < megenRos

Linux skelner (som UNIX) mellem normale uddata (stdout) og fejluddata (stderr). Til tider kan det være rart kun at omdirigere det ene sæt meddelelser.

Specielt for bash gælder følgende: omdirigering af stdout (1) og stderr (2) i bash er forholdsvis simpel.

Hvis kun fejlmeddelelserne fra en kommando - her ls - ønskes:

[daisy@linux daisy]$   ls  1> /dev/null

Hvis kun stdout ønskes vist, og fejlmeddelelserne skal sendes til en fil:

[daisy@linux daisy]$  ls 2> fejlfil 

Og endelig, hvis du ønsker at akkumulere fejlmeddelelser i en fil, kan >> anvendes - f.eks.

[daisy@linux daisy]$  ls 2>> fejlfil

De to shells csh og tcsh adskiller sig fra bash på følgende måder. Når du omdirigerer med > eller >>, er det kun stdout, der omdirigeres. Hvis stderr skal med, skal du anvende & efter omdirigeringen. stderr kan ikke omdirigeres alene, men med lidt krumspring lykkedes det alligevel:

[daisy@linux daisy]$ ls -l /* | tee >& fil1 | diff fil1 - >fejlFil

Ovenstående kommando sender både stderr og stdout til filen fil1.