Kurs:Wie funktioniert eigentlich ein Computer/Hauptthemen/Tutorials

Zurück zur Übersicht

Tutorials Bearbeiten

Arbeiten im Terminal von Ubuntu Bearbeiten

Allgemeine Informationen Bearbeiten

Ubuntu ist eine kostenlose und freie Linux-Distribution, basierend auf Linux/Debain. Der Gedanke bei Ubuntu ist es, eine Software anzubieten, die allen Meschen ohne Einschränkungen zur Verfügung steht.

Befehle im Terminal Bearbeiten

Hier sind einige Befehle aufgeführt, welche den Einstieg in diese Steuerkonsole erleichtern sollen.

Befehl Erklärung Zeile im Screenshot
ctrl alt t Konsole aufrufen -
ssh (name@10.42.0.XX) Verbindung zu anderem Gerät (Raspberry Pi) aufbauen -
ls Verzeichnisse des aktuellen Orts anzeigen Zeile 1
cd Verzeichnis 'change directory' Verzeichnis ändern Zeile 6
cd .. ein Verzeichnis zurück Zeile 3
mkdir neues Verzeichnis anlegen Zeile 9
emacs <datei> EMACS öffnen Zeile 14
gcc <datei> -o <name> Quellcode kompilieren Zeile 15
./name 'name' ausführen Zeile 19
cp <Quelldatei(en)> <Zielpfad> Kopiert Dateien/Verzeichnisse zu einem bestimmten Ziel Zeile 18
exit verlassen Zeile 22
hendrik@raspberrypi ~ $ ls
hello  hello~  hello2  hello2~  #hello.c#  hello.c  hello.c~  pistore.desktop  test2  wette
hendrik@raspberrypi ~ $ cd ..
hendrik@raspberrypi /home $ ls
common  hanna  hendrik  jens  pascal  pi
hendrik@raspberrypi /home $ cd hendrik
hendrik@raspberrypi ~ $ ls
hello  hello~  hello2  hello2~  #hello.c#  hello.c  hello.c~  pistore.desktop  test2  wette
hendrik@raspberrypi ~ $ mkdir testprogramm
hendrik@raspberrypi ~ $ ls
hello  hello~  hello2  hello2~  #hello.c#  hello.c  hello.c~  pistore.desktop  test2  testprogramm  wette
hendrik@raspberrypi ~ $ cd testprogramm/
hendrik@raspberrypi ~/testprogramm $ ls
hendrik@raspberrypi ~/testprogramm $ emacs -nw test.c
hendrik@raspberrypi ~/testprogramm $ gcc test.c -o test
hendrik@raspberrypi ~/testprogramm $ ls
test  test.c
hendrik@raspberrypi ~/testprogramm $ cp test ../
hendrik@raspberrypi ~/testprogramm $ cd ..
hendrik@raspberrypi ~ $ ./test
Testprogramm
hendrik@raspberrypi ~ $ exit



 
Die für unseren Kurs relevanten Ubuntubefehle, eingegeben in die Konsole.

Weiterführende Programme Bearbeiten

Programm Erklärung
diff <datei1> <datei2> Vergleicht ASCII-Dateien zeilenweise
objdump -d <datei> Zeigt verschiedene Informationen über Dateien an. Kann als Disassambler genutzt werden.
xxd <datei> Zeigt Programm/Datei in Hexadezimaldarstellung an.
emacs -nw <datei> Öffnet die Datei in emacs (s. Emacs-Cheatsheet)



Emacs ist der Texteditor, mit dessen Hilfe wir in C programmieren. Im Emacs-Tutorial befassen wir uns mit den wichtigsten Emacs-Befehlen. Wir haben die folgenden Kategorien nach ihrer Wichtigkeit sortiert:


Emacs Tutorial Bearbeiten

Starten & Beenden Bearbeiten

Starten Shell: emacs -nw <datei>
Beenden C-x C-c oder M-x kill-emacs
ABBRECHEN!! C-g ("Ich-will-hier-raus!")
Pausieren C-z
Fortsetzen Shell: fg


Dateioperationen Bearbeiten

Öffnen bzw. Erstellen C-x C-f <datei>
Aktuellen Buffer speichern C-x C-s
Alle Buffer speichern (Nachfrage) C-x s
Aktuellen Buffer speichern als C-x C-w


Buffermanagement Bearbeiten

Bufferliste anzeigen C-x C-b
Zu Buffer wechseln C-x b <buffer>
Buffer schließen (killen) C-x k oder M-x kill-buffer
Bufferanfang M-<
Bufferende M->
ganzen Buffer markieren C-x h
markierten Bereich löschen M-x delete-region

Anmerkung:

  • Bufferliste öffnet sich im nächsten Fenster (wenn nicht bereits vorhanden), also dem, in das C-x o springen würde.
  • Man kann mit C-x o wie gehabt (s. unten) in die Bufferliste springen und mit Return zu dem gewählten Buffer wechseln.


Fenstermanagement Bearbeiten

Fenster → Vollbild C-x 1
Fenster waagerecht spalten C-x 2
Fenster senkrecht spalten C-x 3
Letze Teilung aufheben C-x 0
Fenster wechseln (!) C-x o


Externe Programme Bearbeiten

Externes Terminal in Emacs öffnen M-x ansi-term


Textoperationen Bearbeiten

 
Rückgängig (!) C-_ ("Ctrl+Shift+Strich") bzw. C-x u
Marke setzten (Anfang der Markierung) C- ("Ctrl+Leerzeichen")
Ausschneiden (Markierten Text) C-w
Einfügen (zuletzt ausgeschnittenen Text, "yanken") C-y
Einfüge-Text durchschalten (nach dem Einfügen, "Kill-Ring") M-y
Suchen (vorwärts) / weitersuchen C-s
Suchen (rückwärts) / r. weitersuchen C-r
ein Zeichen löschen C-d
eine Zeile löschen C-k
Zeichen / Text ersetzen M-x replace-string

Bewegen Bearbeiten

Ein Zeichen vorwärts C-f
Ein Zeichen rückwärts C-b
Ein Wort vorwärts M-f
Ein Wort rückwärts M-b
Eine Zeile nach oben C-p
Eine Zeile nach unten C-n
An Zeilenanfang C-a
An Zeilenende C-e
Seite vorwärts blättern C-v
Seite rückwärts blättern M-v


Wiederholung Bearbeiten

Befehl mehrmals wiederholen C-u <Anzahl> <Befehl>


Modi Bearbeiten

Programm in Hexadezimal-Modus anzeigen M-x hexl-mode
Programm in C-Modus anzeigen M-x c-mode
Normaler Modus in Emacs (Textdatei anzeigen) M-x fundamental-mode


Begriffserklärung Bearbeiten

Buffer Bearbeiten

Ein Buffer ist eine Vorrichtung, die dazu dient, Daten zwischenzuspeichern. Ein Buffer speichert die Daten in der Regel temporär und kann in einem flüchtigen, als auch in einem nichtflüchtigen Speicher angesiedelt sein. Mögliche Gründe Daten im Buffer zwischenzuspeichern sind zum Beispiel:

  • Ein kontinuierlicher Strom von Daten muss verarbeitet werden, wobei die Verarbeitungsgeschwindigkeit zeitweise kleiner als der Datenfluss ist. Der Buffer bildet dann sozusagen eine Art Warteschleife.
  • Im Buffer werden Daten gespeichert, die Information über einen bestimmten Zustand im Rechner beinhalten.
  • Es werden Daten im Buffer deponiert, die mit einer grossen Wahrscheinlichkeit demnächst und/oder wiederholt benötigt werden.

Von Buffern redet man häufig auch, wenn man einen Speicher von mehr oder weniger unbestimmter Grösse meint, in welchem Daten vorübergehend abgelegt werden, die erst später definitiv verwendet oder verarbeitet werden sollen.

Fenster Bearbeiten

Fenster, auch Frame genannt, sind Bereiche, in denen Buffer dargestellt werden.




Wikiversity Bearbeiten

Diese Seite ist dafür gedacht, dass einige nützliche und für den Kurs hilfreiche Funktionen von Wikiversity formationen findet man auch auf den Hilfeseiten von Wikipedia und Wikiversity.

Eine Seite erstellen Bearbeiten

 
Wie man einen neuen Artikel erstellen kann

Um eine Seite zu erstellen, die zur Kursseite gehört, verändert man zunächst die URL. Am besten sollte man mindestens eine Minute über den Titel nachdenken. Man kommt nun auf eine Seite, die die Möglichkeit bietet einen neuen Wikiversity-Artikel zu erstellen (siehe Bild).

In der deutschen Wikipedia existiert auch eine Anleitung zum Erstellen einer Wikipediaseite

Einfügen von Inhalten und Struktur Bearbeiten

Dateien hochladen und einbinden Bearbeiten

 
Wie man eine Seite auf Wikimedia commons hochlädt und bezeichnet.

Man kann Dateien auf Wikiversity verwenden, indem man sie auf die Seite Wikimedia Commons hochlädt. Die Datei kann man einer Kategorie zuweisen, in unserem Fall ist das die Kategorie "Kurs:Wie funktioniert eigentlich ein Computer". Man erhält einen Link, den man in die Seite einfügen kann.

Vorlagen verwenden Bearbeiten

 
Vorlage der Navigationsleiste
 
Einfügen eines Links in die Navigationsleiste
 
Zeigt die Navigationsleiste mit neu eingefügtem Link

Eine Vorlage ist z.B eine Navigationsleiste, die für mehrere Seiten eines Kurses gebraucht wird. Nun muss man nicht immer und immer wieder den selben Quellcode schreiben. Die einmal erstellte Vorlage wird einfach an den gewünschten Stellen eingefügt. Man fügt diesen ein, indem man diesen Code {{Link zur Vorlage}} dafür eingibt.

Man kann auch die Navigationsleiste verändern, indem man die Vorlage ändert. So werden auf allen Seiten des Kurses diese Änderungen an der Navigationsleiste übernommen. Wenn man nun die Seite "Wikiversity verwenden" in der Navigationsleiste verlinken möchte, geht man zuerst auf "Bearbeiten" der Vorlage und fügt den Link an der entsprechenden Stelle ein, wie man in der Grafik sehen kann.

Nun sieht man den eingefügten Link auf allen Seiten, auf denen die Navigationsleiste eingefügt wurde.

Programmcode einbinden Bearbeiten

Um einen Programmcode in eine Wikiversity-Seite einzubinden, kann man folgenden Befehl verwenden:

<syntaxhighlight lang="C"> </syntaxhighlight>

Beispiel:

#include<stdio.h>
int main()
{
printf("hallo")
}

Hinweiskasten Bearbeiten

Ein Hinweiskasten kann durch folgende Funktion erstellt werden:

{{Kasten| Text = Hier Text einfügen}}

Ein anderer Kasten, wie dieser, kann durch das einfügen eines Leerzeichens vor dem Absatz erstellt werden:

Hier Text einfügen

Tabellen Bearbeiten

Einfache Tabellen Bearbeiten

Um eine Tabelle zu erstellen braucht man erst einmal das Grundgerüst:

{|
|Tabelle mit einer Spalte und Zeile
|}

Um weiter Spalten einzufügen, muss man nur eine weiter Zeile im Quellcode schreiben:

{|
|Erste Spalte
|Zweite Spalte
|}

Um eine weiter Zeile einzufügen, fügt man einen senkrechten Strich und einen Bindestrich ein:

{|
|Erste Zeile
|-
|Zweite Zeile
|}

Wenn man eine Kopfzeile einfügen möchte, ersetzt man den senkrechten Strich durch ein Ausrufezeichen:

{|
!Kopfzeile
|-
|Normale Zeile
|}

Sortierbare Tabellen Bearbeiten

Bei einer sortierbaren Tabelle muss man im Quelltext nur eine kleine Änderung vornehmen:

{| class="wikitable sortable"
|Zeile eins
|-
|Zeile zwei
|}

Um eine Spalte nicht sortierbar zu machen gibt man nur den Befehl class="unsortable" vor die Kopfzeile dieser Spalte ein.

Beispiel Tabelle Bearbeiten

Kopfzeile Unsortierbare Spalte
Beispiel 1 Diese
Beispiel 2 Spalte
Beispiel 3 ist nicht
Beispiel 4 sortierbar!!


How-To Dokuseite des Kurses Bearbeiten

Thema Bearbeiten

Beispiel: Aufgabe 1, Emacs, ...

URL: "...Kurs:Wie_funktioniert_eigentlich_ein_Computer/Themen/<Aufgabe 1, Emacs, ...>"

Aufbau:

  • Sinnvolle (!) Überschrift
  • Inhalt
  • Am Ende: "<noinclude>[[Kategorie:Kurs:Wie funktioniert eigentlich ein Computer/Themen]]</noinclude>"


Hauptthema Bearbeiten

Beispiel: Programme hacken, Werkzeuge, ...

URL: "...Kurs:Wie_funktioniert_eigentlich_ein_Computer/Hauptthemen/<Programme hacken, Werkzeuge, ...>"

Aufbau:

  • Sinnvolle (!) Überschrift
  • {{Vorlage:Kurs:Wie funktioniert eigentlich ein Computer/HTVorlage}}
  • Inhalt = Sammlung der zugehörigen Themen z.B. Objdump, hexl-mode, ... => Einbetten als Vorlagen
  • Am Ende: "[[Kategorie:Kurs:Wie funktioniert eigentlich ein Computer/Hauptthemen]]"


Tag Bearbeiten

Beispiel: Tag 1, Tag 2, ...

URL: "...Kurs:Wie_funktioniert_eigentlich_ein_Computer/Tage/<Tag 1, Tag 2, ...>"

Aufbau:

  • Tag (mit Datum! ;) )
  • {{Vorlage:Kurs:Wie funktioniert eigentlich ein Computer/TVorlage}}
  • Inhalt = Sammlung der zugehörigen Themen z.B. Emacs, Hello world mit !, ... => Einbetten als Vorlagen
  • Am Ende: "[[Kategorie:Kurs:Wie funktioniert eigentlich ein Computer/Tage]]"

Referat Bearbeiten

Beispiel: Der Prozessor, Transistor-Logik, etc.

URL: "...Kurs:Wie_funktioniert_eigentlich_ein_Computer/Referate/<Der Prozessor, Transistor-Logik, etc.>"

Aufbau:

  • Referatsname
  • Inhalt = Abstract, Poster, Quiz
  • Am Ende: "[[Kategorie:Kurs:Wie funktioniert eigentlich ein Computer/Referate]]"
  • NICHT! : "[[Kategorie:Kurs:Wie funktioniert eigentlich ein Computer]]"