GNU/Linux >> Znalost Linux >  >> Linux

Propojení stdout a stderr uvnitř pravidla Makefile

Nevysvětluje, proč přímé přístupy nefungují, ale funguje to:

[Makefile]
test: 
    python test.py >test.out 2>&1; pyrg <test.out

Narazil jsem na tuto otázku se stejným problémem a nebyl jsem spokojen s odpovědí. Měl jsem binární TLBN který selhal v testovacím případě example2.TLBN .

To je to, na co se můj soubor značky podíval jako první.

make:
     ./TLBN example2.TLBN > ex2_output.txt

Což selhalo s chybovou zprávou, kterou jsem očekával, a zastavením procesu vytváření.

Toto je moje oprava:

make:
    -./TLBN example2.TLBN > ex2_output.txt 2>&1

Všimněte si - na začátku řádku, který říká make, aby ignoroval jakýkoli výstup do stderr.

Doufám, že to pomůže někomu, kdo má podobný problém.


Kupodivu jsem měl stejný problém a vyřešil jsem to takto:

check-errors:
    check-for-errors.sh &> errors.txt

Nejsem si jistý, proč 2>&1 >errors.txt nefungovalo zde, ale &> udělal


Linux
  1. Jak přesměrovat Stderr a Stdout na různé soubory a také zobrazit v terminálu?

  2. Rozdíl mezi potrubím a rozšířením příkazů?

  3. Zobrazit na obrazovce pouze Stderr, ale zapsat do souboru Stdout i Stderr?

  1. Jak může proces zachytit stdout a stderr jiného procesu v Linuxu?

  2. Je bezpečné zakázat ukládání do vyrovnávací paměti pomocí stdout a stderr?

  3. DESTDIR a PREFIX značky

  1. Shell:přesměrujte stdout na /dev/null a stderr na stdout

  2. bash:přesměrování stderr do souboru a stdout + stderr na obrazovku

  3. Zachycení STDERR a STDOUT do souboru pomocí tee