Hopp til hovedinnhold

Output-redirection og streams

Kapittel 5

Linux bruker såkalte streams for å styre input og output:

stdin (0) = standard input (som regel tastatur)

stdout (1) = standard output (vanligvis skjermen)

stderr (2) = standard error (feilmeldinger)

Grunnleggende bruk

ls > filelist.txt

Sender output fra ls til filen filelist.txt.

ls 1> filelist.txt

Samme som over, 1 er standard for stdout.

echo "This is a test" > testecho.txt

Oppretter eller overskriver filen med teksten.

ls fakefile 2> errorlog.txt

Sender feilmeldingen (stderr) til errorlog.txt.

Overskriving vs append

Enkel > Overskriver eksisterende fil.

Dobbel >> Legger til i en fil i stedet for å overskrive.

Eksempel:

echo "Ny linje" >> testecho.txt

Kombinere stdout og stderr

ls /etc /fakefolder > output.txt 2>&1

Både output og feil skrives til samme fil.

ls /etc /fakefolder 1> output.txt 2> error.txt

Output og feil skrives til hver sin fil.

Praktiske tips for logging

cp fil.txt /backup/ >> copy.log 2>&1

Logger både suksessmeldinger og feil til copy.log.

Legge til tidsstempel:

echo "$(date) – Starter kopi..." >> copy.log
cp fil.txt /backup/ >> copy.log 2>&1
echo "$(date) – Ferdig!" >> copy.log

Se output i sanntid og logg samtidig

ls -lh /etc | tee filelist.log

tee viser output på skjermen og lagrer til fil samtidig.

ls -lh /etc | tee -a filelist.log

-a betyr append, legger til i fil i stedet for å overskrive.

Robert Kristoffersen
Fullstack-utvikler • Webno