GNU/Linux >> Linux Esercitazione >  >> Linux

Piping stdout e stderr all'interno di una regola Makefile

Non spiega perché gli approcci diretti non funzionano, ma fa il trucco:

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

Mi sono imbattuto in questa domanda con lo stesso problema e non ero soddisfatto della risposta. Avevo un TLBN binario che non è riuscito nel caso di test example2.TLBN .

Questo è l'aspetto iniziale del mio file make.

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

Che non è riuscito con il messaggio di errore che mi aspettavo e ha interrotto il processo di creazione.

Questa è la mia soluzione:

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

Nota il - all'inizio della riga che dice a make di ignorare qualsiasi output su stderr.

Spero che questo aiuti qualcuno che ha un problema simile.


Stranamente, ho avuto lo stesso problema e l'ho risolto in questo modo:

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

Non sono proprio sicuro del perché 2>&1 >errors.txt non ha funzionato qui, ma &> fatto


Linux
  1. Come reindirizzare Stderr e Stdout su file diversi e visualizzarli anche nel terminale?

  2. Mostra solo Stderr sullo schermo ma scrivi sia Stdout che Stderr su file?

  3. Come può un processo intercettare stdout e stderr di un altro processo su Linux?

  4. Come reindirizzare stderr e stdout a file diversi nella stessa riga nello script?

  5. È sicuro disabilitare il buffering con stdout e stderr?

Come reindirizzare stderr a stdout in Bash

Confuso su stdin, stdout e stderr?

Ripristino di stdout e stderr al valore predefinito

È possibile che il descrittore di file linux 0 1 2 non sia per stdin, stdout e stderr?

Makefile per non fare nulla

Acquisizione di STDERR e STDOUT da archiviare utilizzando tee