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
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]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]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]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]]"