Created
May 28, 2013 08:56
-
-
Save svenk/5661461 to your computer and use it in GitHub Desktop.
Das Bash-1x1 für den theoretischen Physiker, der C(pp) mit GCC programmiert
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Begrifflichkeiten: Shell = Kommandozeile Linux, Bash = Verbreitestes Shell-Programm | |
Angenommen du hast ein C++-File namens "hello.cc" | |
#include <stdio.h> | |
int main() { | |
printf("Hallo Welt\n"); | |
return 0; | |
} | |
Standard-Schritte sind | |
g++ -o hello hello.cc | |
./hello | |
The unleashed power of unix shells: | |
g++ -o hello hello.cc && ./hello | |
Da jedes Kommando einen Rückgabewert hat (unser C-Programm eben "return 0" also 0) und "0" als | |
Erfolgreich gilt (entgegen der typischen Interpretation "1" = true), führt dies ./hello aus, | |
wenn die Kompilation erfolgreich war. | |
Praktisch! | |
Pipen: | |
./hello > ausgabe.txt | |
Leitet die Ausgabe in die Datei "ausgabe.txt" um. Für sowas braucht das C-Programm dann gar nicht erst | |
umgescrieben werden. Praktisch! | |
./hello | less oder ./hello | gedit oder ./hello | tee ausgabe.txt | |
Mit der Pipe wird die Ausgabe des ersten in die Eingabe des zweiten Programms geleitet. Less ermöglicht | |
per Pfeiltasten in langen Ausgaben nach oben und unten zu scrollen. Gedit öffnet ein leeres Dokument mit | |
den Eingaben. Tee dupliziert die Ausgaben in die File "ausgabe.txt" und gibt sie gleichzeitig auf dem Terminal | |
aus. Praktisch! | |
./lattice-calculations | tee ausgabe.txt | less | |
mathematica worksheet.txt < ausgabe.txt | |
Sowas in der Art lässt sich auch machen, "<" gibt die Datei als Standardeingabe in mathematica. | |
Weiter recherchieren mit Google: "Shell stream redirection" et al. | |
Makefiles | |
$ cat Makefile | |
hello: | |
g++ -o hello hello.cc | |
Benutzung: | |
Kompiliert bei Änderung des Quelltexts: | |
$ make | |
g++ -o hello hello.cc | |
Macht nix wenn sich der Quelltext nicht geändert hat: | |
$ make | |
make: »hello« ist bereits aktualisiert. | |
Sehr praktisch, weil man fortan immer | |
make && ./hello | |
eingeben kann! |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment