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.
Linux (som UNIX) arbejder med følgende input/output terminologi:
Standard input (stdin). Normalt tastaturet.
Standard output (stdout). Normalt skærmen.
Standard error (stderr). Normalt skærmen.
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.