Hallo!
Matthias Edler-Golla
matthias.edler-golla@hm.edu
http://matthias-edler-golla.de
Matthias Edler-Golla
matthias.edler-golla@hm.edu
http://matthias-edler-golla.de
Stephenson explores the GUI as a metaphor in terms of the increasing interposition of abstractions between humans and the actual workings of devices and explains the beauty hackers feel in good-quality tools. He does this with a car analogy. He compares four operating systems, Mac OS by Apple Computer to a luxury European car, Windows by Microsoft to a station wagon, Linux to a free tank, and BeOS to a batmobile.
Das Buch kann online gelesen werden…
Die Kommandozeile oder Befehlszeile ist ein Teil eines Computerprogramms, das eine Textzeile als Eingabe vom Benutzer entgegennimmt und im Kontext interpretiert. Im Englischen wird sie als command-line oder command prompt (Eingabeaufforderung) bezeichnet.
Die englische Bezeichnung command-line interface, kurz CLI, bezeichnet die Verwendung von Kommandozeilen für die Interaktion mit einem Benutzer. CLI wird als das Gegenteil und der historische Vorläufer des graphical user interface, kurz GUI, angesehen, obwohl es auch unter grafischen Benutzeroberflächen Kommandozeilen gibt.
Ein command line interface (CLI) ist die einfachste Methode zur Interaktion eines Menschen (Human) mit einem Computer, und somit eine Möglichkeit der Mensch-Computer-Interaktion, englisch Human-Computer Interaction (HCI). Dabei werden dem Computer Textzeilen entweder direkt über die Tastatur oder in Form eines Scripts übergeben, die dieser anschließend ausführt.
command line interface gibt es ungefähr seit den 60er-Jahren des letzten Jahrhunderts und lösten die Kommunikation via Lochkarten ab.
iTerm oder Hyper sind (bessere) Alternative zum Terminal, das auf allen Macs installiert ist.
Habt Ihr Euch als Mac-User schon iTerm installiert?
Hyper läuft auf Mac, Windows und Linux. Hier könnt Ihr es herunterladen.
Beide Programme sind kostenlos! iTerm ist am Mac noch etwas besser integriert – ich benutze es täglich!
Amadeus Stadler hat für seinen Kurs Webdesign II @ HM eine gute Zusammenfassung zu Terminal-Befehlen erstellt – bitte schaut Euch auch das mal an!
probiert diese doch mal aus – auf Groß- und Kleinschreibung achten:
pwd
ls
ls -l
ls -al
ls -l Desktop
tree
tree -n 2 /Desktop
cd Pictures/Demo-Fotos/
cd ../
cd ../../
cd /
cd ~
man ls
Mit den hier gezeigten Befehlen könnt Ihr neue Dateien und Ordner anlegen
Wechselt dazu erst mal auf den Desktop und legt dort einen neuen Ordner an!
cd ~/Desktop && mkdir Terminaltests && cd Terminaltests
mkdir Textdateien && cd Textdateien
"mkdir" = make directory…
pwd
dann sollte der Pfad zum Ordner "Textdateien" gezeigt werden
touch demo.txt
nano demo.txt
Dort etwas Text eingeben und mit CTRL O speichern. Mit CTRL X den Nano-Editor wieder verlassen.
Der Editor nano kommt ohne Mouse aus. Ihr müsst mit den Pfeiltasten navigieren. Am unteren Rand des Fensters stehen Tips, was man mit CTRL ZEICHEN machen kann. Das ist erst mal sehr ungewohnt…
mkdir loeschen && cd loeschen && touch demo2.txt
echo "Das ist ein cooler Text" > demo2.txt
echo "Text" (ohne "> demo2.txt") gibt den jeweiligen Text direkt im Terminal aus
echo "der hier fortgesetzt wird" >> demo2.txt
Beachtet das ">>": Wenn nur ein ">" verwendet wird, wird der existierende Text überschrieben, bei ">>" wird der Text auf einer neuen Zeile eingefügt!
date >> demo2.txt
more demo2.txt
Achtung: Das Löschen passiert unmittelbar und Ihr habt keinen Mülleimer, aus dem Ihr die Sachen retten könnt! Deswegen immer genau schauen, was man gerade löscht!
cd ~/Desktop/Terminaltests/Textdateien
rm demo.txt
cd ../
rm -r Textdateien/
das "-r" ist hier nötig, weil Ihr einen ganzen Ordner (evtl. mit Inhalt) löscht! VORSICHT!
Bitte ladet die folgende Zip-Datei TerminalOrdner herunter und legt diese auf Euren Desktop!
cd Desktop && unzip -a TerminalOrdner.zip && cd TerminalOrdner
tree
auf dem Screenshot oben sieht man einen Teil der Ordner-Struktur...
cd demo_1/ordner_a
cp demo.html ../../
Wo befindet sich die kopierte Datei jetzt? Schaut im Finder/Explorer nach…
Achtung, dazu zuerst wieder aus den Ordnern "demo_1/ordner_a" rausgehen!
cd ../../
rm demo.html
dieser befindet sich im Ordner "demo_2/test/versuch"
mv demo_2/test/versuch/ordner_c demo_1
dazu müsst Ihr Euch direkt im Ordner TerminalOrdner befinden!
mv demo_1/ordner_a/*.jpg sortiert/jpg
Das "*.jpg" bedeutet, dass alle Dateien mit der Endung .jpg verschoben werden sollen – super praktisch, weil man so die Dateien nicht einzeln ansprechen muss!
Wer schafft es, alle JPGs aus demo_2/test/versuch/ordner_b ebenfalls in den Ordner sortiert/jpg zu verschieben?
Ladet die Zip-Datei "Shots.zip" herunter und entpackt diese auf Eurem Desktop
Durch verwenden von "*" (Wildcard) kann man sehr viele Dateien gleichzeitig auswählen und z.B. kopieren
cd ~/Desktop/Shots/
ls
mkdir JPG && mkdir GIF && mkdir PNG
mv *.jpg JPG
*.jpg bedeutet alle JPGs auswählen
mv *.gif GIF && mv *.png PNG
tree > treeview.txt
.
├── GIF
│ ├── 20190226093004-shot.gif
│ ├── 20190226123003-shot.gif
│ ├── 20190226163004-shot.gif
│ ├── 20190227093004-shot.gif
│ ├── 20190227123003-shot.gif
│ ├── 20190227163004-shot.gif
│ ├── 20190228093003-shot.gif
│ ├── 20190228123003-shot.gif
│ ├── 20190228163004-shot.gif
│ ├── 20190301093003-shot.gif
│ ├── 20190301123003-shot.gif
│ ├── 20190301163003-shot.gif
│ ├── 20190302093003-shot.gif
│ ├── 20190302123003-shot.gif
│ ├── 20190302163003-shot.gif
│ ├── 20190303093004-shot.gif
│ ├── 20190303123004-shot.gif
│ ├── 20190303163004-shot.gif
│ ├── 20190304093003-shot.gif
│ ├── 20190304123003-shot.gif
│ ├── 20190304163004-shot.gif
│ ├── 20190305093004-shot.gif
│ ├── 20190305123003-shot.gif
│ ├── 20190305163004-shot.gif
│ ├── 20190306093004-shot.gif
│ ├── 20190306123004-shot.gif
│ ├── 20190306163003-shot.gif
│ ├── 20190307093004-shot.gif
│ └── 20190307123003-shot.gif
├── JPG
│ ├── 20190226093004-shot.jpg
│ ├── 20190226123003-shot.jpg
│ ├── 20190226163004-shot.jpg
│ ├── 20190227093004-shot.jpg
│ ├── 20190227123003-shot.jpg
│ ├── 20190227163004-shot.jpg
│ ├── 20190228093003-shot.jpg
│ ├── 20190228123003-shot.jpg
│ ├── 20190228163004-shot.jpg
│ ├── 20190301093003-shot.jpg
│ ├── 20190301123003-shot.jpg
│ ├── 20190301163003-shot.jpg
│ ├── 20190302093003-shot.jpg
│ ├── 20190302123003-shot.jpg
│ ├── 20190302163003-shot.jpg
│ ├── 20190303093004-shot.jpg
│ ├── 20190303123004-shot.jpg
│ ├── 20190303163004-shot.jpg
│ ├── 20190304093003-shot.jpg
│ ├── 20190304123003-shot.jpg
│ ├── 20190304163004-shot.jpg
│ ├── 20190305093004-shot.jpg
│ ├── 20190305123003-shot.jpg
│ ├── 20190305163004-shot.jpg
│ ├── 20190306093004-shot.jpg
│ ├── 20190306123004-shot.jpg
│ ├── 20190306163003-shot.jpg
│ ├── 20190307093004-shot.jpg
│ └── 20190307123003-shot.jpg
├── PNG
│ ├── 20190226093004-shot.png
│ ├── 20190226123003-shot.png
│ ├── 20190226163004-shot.png
│ ├── 20190227093004-shot.png
│ ├── 20190227123003-shot.png
│ ├── 20190227163004-shot.png
│ ├── 20190228093003-shot.png
│ ├── 20190228123003-shot.png
│ ├── 20190228163004-shot.png
│ ├── 20190301093003-shot.png
│ ├── 20190301123003-shot.png
│ ├── 20190301163003-shot.png
│ ├── 20190302093003-shot.png
│ ├── 20190302123003-shot.png
│ ├── 20190302163003-shot.png
│ ├── 20190303093004-shot.png
│ ├── 20190303123004-shot.png
│ ├── 20190303163004-shot.png
│ ├── 20190304093003-shot.png
│ ├── 20190304123003-shot.png
│ ├── 20190304163004-shot.png
│ ├── 20190305093004-shot.png
│ ├── 20190305123003-shot.png
│ ├── 20190305163004-shot.png
│ ├── 20190306093004-shot.png
│ ├── 20190306123004-shot.png
│ ├── 20190306163003-shot.png
│ ├── 20190307093004-shot.png
│ └── 20190307123003-shot.png
└── treeview.txt
3 directories, 88 files
Ladet die Zip-Datei "CSV_Dateien.zip" herunter und entpackt diese auf Eurem Desktop
Das Terminal bietet Möglichkeiten, um mehrere Texte in eine Textdatei zusammenzufassen oder aus einer Textdatei gezielt Zeilen herauszukopieren…
cd ~/Desktop/CSV_Dateien
ls -l
more 2019_10_temperatur.csv
less 2019_10_temperatur.csv
head -n 5 2019_10_temperatur.csv
tail -n 8 2019_10_temperatur.csv
cat 2019_10_temperatur.csv 2019_11_temperatur.csv > temperatur.csv
cat 2019_12_temperatur.csv >> temperatur.csv
">>" fügt die neue Datei hinzu
">" würde die alten Inhalte überschreiben
tail -n 10 2019_12_temperatur.csv | cat > 2019_12_temperatur_last_10.csv
Das Symbol "|" wird als "Pipe" bezeichnet, damit kann man mehrere Befehle verketten, wie hier gezeigt: Zuerst die letzten 10 Zeilen einer Datei auswählen und in einem 2. Schritt diese dann mit "cat" in eine neue Datei einfügen
Man kann sich direkt im Terminal Uhrzeit und Kalender anzeigen lassen – mit unterschiedlichen Ausgaben
Probiert es mal aus – Ihr erhaltet so super einfach einen Kalender für das gewünschte Jahr – auch weit in der Vergangenheit oder Zukunft!
date
ncal
ncal -h
ncal -m 6
ncal -3
ncal -y 1024
ncal -yw 2020 > jahre.txt
Die Option "w" fügt noch die Kalenderwochen ein!
ncal -yw 2021 >> jahre.txt
man ncal
curl dict://dict.org/d:design
curl wttr.in/:help
Fragt doch mal ab, wie das Wetter wird…
curl wttr.in/Munich
curl wttr.in/Oymyakon
curl wttr.in/Moon
curl wttr.in/Moon@2019-April-12
cd ~/Desktop
wget http://fk12.org/index.html
damit funktionieren diese auch offline auf Eurem PC/Mac…
cd ~/Desktop && mkdir Scripte && cd Scripte
wget -r -k -E -l 8 https://scripte.matthias-edler-golla.de
Die Option -r sorgt dafür, dass rekursiv bis zu einer Tiefe von 8 (-l 8) vorgegangen wird,
-k konvertiert die Links, so dass sie lokal funktionieren und -E erzwingt die Endung .html
für alle Dateien (ist dann nützlich, wenn .php- oder .asp-Seiten geladen werden)
Achtung: Das Herunterladen dauert!
Das Terminal-Fenster stellt uns einige „Shortcuts“ zur Verfügung, damit wir möglichst wenig tippen müssen!
cd
cd und Leerzeichen eingeben und dann vom Finder den gewünschten Ordner ins Terminal-Fenster ziehen, jetzt ENTER-Taste drücken und das Terminal wechselt zum gewünschten Ordner. Ich weiss leider nicht, ob das unter Windows auch so geht!
cd ~/Desktop/test
open .
Damit springt ein Finder-Fenster auf und zeigt den Inhalt des Ordners test, der sich auf dem Desktop befindet…
Die TAB-Taste befindet sich links vom Q auf der Tastatur
cd /Deskt
statt das Wort Desktop weiter zu schreiben, einfach an dieser Stelle die TAB-Taste drücken und das Terminal „vollendet“ das Wort. Wenn es nicht eindeutig ist, macht das Terminal Vorschläge, was gemeint sein könnte.
…ruft hintereinander die zuletzt verwendeten Befehle auf. Durch Drücken der Entertaste wählt man den jeweiligen Befehl aus.
history
…
7191 cp *.gif GIF && cp *.png PNG
7192 ls
7193 rm GIF/* && rm JPG/* && PNG/*
7194 ls
7195 mv *.jpg JPG
7196 mv *.gif GIF && mv *.png PNG
7197 ls
7198 tree
7199 tree > treeview.txt
7200 ls
7201 cd
7202 history
7203 ls
7204 cd Desktop
will man einen der oben aufgeführten Befehle noch mal ausführen (oder anpassen), muss man nur folgendes eingeben:
! 7196
Damit ruft man erneut den Befehl mv *.gif GIF && mv *.png PNG auf…
Um schnell innerhalb der History nach dem richtigen Befehl zu suchen, einfach CTRL + R eingeben und dann die Buchstaben eintippen, an die man sich vom Befehl noch erinnern kann
Sometimes only words will do. Graphic user interfaces (GUIs) were a great advance, creating an easy route into computer use for many non-technical users. For complex tasks, though, the interface can become a limitation: blocking off choices, and leaving a circuitous route even for only moderately complicated jobs.
If you’re not comfortable when faced with the $ prompt, then don’t panic! In this fully updated book, we’ll quickly make you feel at home, and able to find your way around the terminal on the Pi, or any other GNU/Linux computer: getting things done, and unlocking the power of the command line.
Das Buch könnt Ihr Euch ebenfalls kostenlos als PDF herunterladen!
Ladet die Zip-Datei "Shots_CSVs.zip" herunter und entpackt diese auf Eurem Desktop
Bitte probiert es erst selber aus, bevor Ihr Euch die Lösungen anschaut!
mkdir phase-1 && mkdir phase-2 && mkdir phase-3 && mkdir phase-4
mv phase-1-* phase-1 && mv phase-2-* phase-2 && mv phase-3-* phase-3 && mv phase-4-* phase-4
mkdir CSV
mv *.csv CSV
die jeweils die ersten 10 Zeilen der 3 existierenden CSV-Dateien enthält
cd CSV
head -n 10 2019_03_08_sensor_data.csv > sensor_data.csv
head -n 10 2019_03_09_sensor_data.csv >> sensor_data.csv
head -n 10 2019_03_10_sensor_data.csv >> sensor_data.csv
2019-03-08,00:00:06,Temp,19.9,Humidity,67.1
2019-03-08,00:15:06,Temp,19.8,Humidity,65.8
2019-03-08,00:30:06,Temp,19.8,Humidity,64.2
2019-03-08,00:45:06,Temp,19.8,Humidity,62.5
2019-03-08,01:00:06,Temp,19.8,Humidity,61.1
2019-03-08,01:15:06,Temp,19.8,Humidity,59.8
2019-03-08,01:30:07,Temp,19.8,Humidity,58.7
2019-03-08,01:45:06,Temp,19.8,Humidity,57.7
2019-03-08,02:00:07,Temp,19.8,Humidity,57.3
2019-03-08,02:15:06,Temp,19.8,Humidity,56.6
2019-03-09,00:00:08,Temp,20.7,Humidity,90.3
2019-03-09,00:15:06,Temp,20.7,Humidity,90.3
2019-03-09,00:30:07,Temp,20.7,Humidity,90.4
2019-03-09,00:45:06,Temp,20.6,Humidity,90.5
2019-03-09,01:00:06,Temp,20.6,Humidity,90.4
2019-03-09,01:15:06,Temp,20.6,Humidity,90.3
2019-03-09,01:30:06,Temp,20.6,Humidity,90.2
2019-03-09,01:45:08,Temp,20.5,Humidity,89.8
2019-03-09,02:00:06,Temp,20.5,Humidity,89.8
2019-03-09,02:15:11,Temp,20.5,Humidity,88.7
2019-03-10,00:00:07,Temp,20.3,Humidity,52.6
2019-03-10,00:15:09,Temp,20.2,Humidity,52.4
2019-03-10,00:30:06,Temp,20.2,Humidity,52.4
2019-03-10,00:45:06,Temp,20.1,Humidity,52.3
2019-03-10,01:00:06,Temp,20.1,Humidity,52.3
2019-03-10,01:15:06,Temp,20.0,Humidity,52.0
2019-03-10,01:30:07,Temp,19.9,Humidity,51.2
2019-03-10,01:45:06,Temp,19.8,Humidity,50.6
2019-03-10,02:00:07,Temp,19.8,Humidity,50.2
2019-03-10,02:15:06,Temp,19.7,Humidity,49.9
Wir hören/sehen uns nächsten Donnerstag (30.4.2020)!
Bleibt gesund!