Basis van Linux en de opdrachtregel

$ ls
a.txt
$ ls a.txt nofile 2>&1 > out.txt

Zoals hierboven te zien is, wordt in een directory waarin a.txt wel en nofile niet bestaat het laatste commando uitgevoerd. Wat is het resultaat?

  1. AAlleen de foutregel wordt naar out.txt geschreven, en de regel a.txt verschijnt op het scherm
  2. BZowel de foutregel als de regel a.txt wordt naar out.txt geschreven, en er verschijnt niets op het scherm
  3. 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”.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Basis van Linux en de opdrachtregel

  1. Welke waarde drukt het laatste commando in de bovenstaande sessie af?
  2. Welke regels drukt de laatste grep in de bovenstaande sessie af?
  3. In de keuzemogelijkheden zijn de spaties aan het begin van de regel weggelaten. Welke regel drukt de laatste pipeline in de bovenstaande sessie af?
  4. Je wilt regels die later aan het logbestand /var/log/app.log van een server worden toegevoegd, telkens op het scherm blijven tonen zodra ze worden toegevoegd. Welk commando is geschikt?
  5. Wat is de uitvoer van het bovenstaande commando, dat kolommen uit een door komma's gescheiden regel haalt?