PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : gcc Output Filtern und das Ergebniss zeigen



vossi
31-08-2004, 12:23
Suche im gcc Output nach fehlenden Verknüpfungen in versautem andrem Source und deshalb hab ich mir folgendes gebastelt:


gcc datei.cpp &> errors.txt ; grep "Datei oder Verzeichnis" errors.txt ; rm errors.txt
weiss jemand eine schönere Variante die NICHT über eine Datei abläuft?

Und kann mir bitte jemand einen hint geben wie ich das als Shell Script machen könnte und das als systemweiten Befehl ablegen könnte.

Per Commandline parameter welche file er debuggen soll.

tia .. vossi :)

btw. first post here :horray: :D

peschmae
31-08-2004, 12:47
gcc datei.cpp 2<&1 | grep "Datei oder Verzeichnis"


Als Script gcc-deb.sh:


#!/bin/bash
gcc $1 2<&1 | grep "Datei oder Verzeichnis"


mit "chmod 755 gcc-deb.sh && chown root.root gcc-deb.sh && cp gcc-deb.sh /usr/local/bin" ausführbar machen, dem Benutzer Root zuweisen und nach /usr/local/bin kopieren.

MfG Peschmä

vossi
31-08-2004, 14:17
vielen dank aber um noch eine blöde frage zu stellen:

was genau bewirkt die kombination 2<&1 | :)

edit: und kann man irgendwie "farbe" in bash scripten ausgeben?
damit man dann in zB. xterm einmal GRÜN stehen hat "starting debug" oder so ähnlich

peschmae
31-08-2004, 15:08
2<&1 bewirkt dass der Standard-Output (STDOUT) und Standard-Error (STDERR) - Stream zusammengeführt werden.
Normalerweise schreibt ein Programm Fehler in STDERR und normale Ausgaben in STDOUT - mit dem Befehl landet alles in STDOUT.

Mit dem | wird der STDOUT des Programmes links vom | mit dem STDIN (Standard Input) des programmes rechts verknüpft.
d.h. alles was das gcc ausgibt kriegt das grep reingeliefert - sobald du bei grep keine Datei angibst liest der per default auf seinem STDIN.

Eine recht ausführliche und evtl. klarere Erklärung gibts da: http://www.linuxfibel.de/shallg.htm#uml

Zu den Farben: Das ist kein Problem, mit sog. Escape-Sequenzen.


echo -e "\033[30mKnusprig"
echo -e "\033[31mKnusprig"
echo -e "\033[32mKnusprig"
echo -e "\033[33mKnusprig"
echo -e "\033[34mKnusprig"
echo -e "\033[35mKnusprig"
echo -e "\033[36mKnusprig"
echo -e "\033[37mKnusprig"
echo -e "\033[5mKnusprig"


Was sonst noch alles möglich ist mit Escape-Sequenzen siehst du da: http://www.informatik.uni-halle.de/lehre/pascal/sprache/esc_vt100.html

Ach ja, und nach dem Färben musst du die Farbe wieder zurückstellen. Sonst blinkt das Terminal nach dem obigen Beispiel ;)
Zurückstellen geht entweder mit einer entsprechenden Farbänderung nach Weiss oder mit "reset"

MfG Peschmä