Basis van Linux en de opdrachtregel
$ ls
a.txt
$ ls a.txt nofile 2>&1 > out.txtZoals hierboven te zien is, wordt in een directory waarin a.txt wel en nofile niet bestaat het laatste commando uitgevoerd. Wat is het resultaat?
- AAlleen de foutregel wordt naar out.txt geschreven, en de regel a.txt verschijnt op het scherm
- BZowel de foutregel als de regel a.txt wordt naar out.txt geschreven, en er verschijnt niets op het scherm
- CAlleen de regel a.txt wordt naar out.txt geschreven, en de foutregel verschijnt op het scherm
Antwoord en toelichting tonen
Antwoord: C. Alleen de regel a.txt wordt naar out.txt geschreven, en de foutregel verschijnt op het scherm
Omleidingen worden van links naar rechts verwerkt. „2>&1” betekent „stuur de standaardfout (2) naar waar de standaarduitvoer (1) op dat moment naartoe gaat”, en op dat moment is de standaarduitvoer nog het scherm, dus fouten verschijnen op het scherm. De daaropvolgende „> out.txt” verandert alleen de standaarduitvoer naar out.txt, dus het bestand krijgt alleen de regel a.txt, de normale uitvoer van ls. Om beide naar het bestand te schrijven, verander je eerst de standaarduitvoer en schrijf je daarna 2>&1, zoals in „ls a.txt nofile > out.txt 2>&1”.
Verder: nog 9 vragen over Basis van Linux en de opdrachtregel