Mer rörmokeri
I det förra avsnittet talade vi om stdin, stdout och stderr och gav exempel på rörledningar med | och omdirigeringar med > och >>.
Nu ska vi titta lite på stderr, Standard Error. Också den strömmen hamnar normalt på skärmen, men det kan vara idé att styra den till andra ställen.
I princip kan jag se två önskningar. Antingen vill man spara felmeddelanden för att kunna analysera dem i lugn och ro, eller också vet man att man inte bryr sig och vill helt enkelt kasta bort dem.
Först defaultvarianten:
urban@yoda:~/labbmapp$ ls groda
ls: kan inte komma åt groda: Filen eller katalogen finns inte
urban@yoda:~/labbmapp$
Du vill titta lite närmare på filen eller katalogen "groda" men får ett felmeddelande för att den inte finns. Felmeddelandet är just Standard Error.
Omdirigera stderr 2>, 2>>
Du kan i stället spara meddelandet i en fil:
urban@yoda:~/labbmapp$ ls groda 2> fel
Du kan sedan i lugn och ro analysera filen fel.
urban@yoda:~/labbmapp$ cat fel
ls: kan inte komma åt groda: Filen eller katalogen finns inte
Du kan förståss välja att lägga till nya felmeddelanden på slutet av filen:
urban@yoda:~/labbmapp$ ls groda 2>> fel
urban@yoda:~/labbmapp$ cat fel
ls: kan inte komma åt groda: Filen eller katalogen finns inte
ls: kan inte komma åt groda: Filen eller katalogen finns inte
Du kan som sagt var också veta att du för tid och evighet vill ignorera felmeddelandet. Du vill inte se det nu och inte i framtiden. Okej, då lever man kanske lite farligt, men har man koll på annat sätt så får det väl duga. Då skickar man sitt felmeddelande direkt till återvinningsanläggningen för oönskade ettor och nollor, som kallas /dev/null.
urban@yoda:~/labbmapp$ ls groda 2> /dev/null
urban@yoda:~/labbmapp$
Omdirigera fil till standard in <
Jag antydde att man kunde omdirigera en fil till standard in också. Det kan man också, men jag kommer just nu inte på något bra exempel. Du kan till exempel skriva.
urban@yoda:~/labbmapp$ grep gråsparv < bok
vilken snart gråsparvarne och bofinkarne deltogo, då de sålunda sågo sina
Struve som under föregående kastat socker åt gråsparvarne började spetsa
urban@yoda:~/labbmapp$
Och därmed har vi gjort just det jag sa, men problemet är att det funkar precis lika bra att skriva:
urban@yoda:~/labbmapp$ grep gråsparv bok
vilken snart gråsparvarne och bofinkarne deltogo, då de sålunda sågo sina
Struve som under föregående kastat socker åt gråsparvarne började spetsa
urban@yoda:~/labbmapp$
Är det någon som kan bjussa på ett bättre exempel, så är jag intresserad, och det är säkert resten av läsarna också.