Skip to content

Instantly share code, notes, and snippets.

@svenk
Created May 28, 2013 08:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save svenk/5661461 to your computer and use it in GitHub Desktop.
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
# 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