Terminal
Inhalt
Terminal⌗
Das Terminal ist dein Freund, du musst nur noch seiner werden.
Hab keine Angst vorm Terminal. Es ist super nützlich und effizient, man muss nur wissen wie man es nutzt.
Begriffsklärungen⌗
Terminal⌗
Das Terminal ist das Fenster, in das man die Befehle eingibt. Es gibt hier viele Optionen, aber die meisten vorinstallierten Terminals sind in Ordnung. Allerdings gibt es auch Gründe ein anderes Terminal zu nutzen, zum Beispiel wegen der Features in Sachen Personalisierung (*siehe kitty)
Shell⌗
Die Shell ist das, mit dem man die Befehle dann tatsächlich ausführt. Es ist das Programm, welches das Kernel wie eine Schale (daher der Name) umgibt. Über sie kann man mit dem Rechner Interaagieren. Auch hier gibt es viele Optionen, die verschiedene Zielgruppen und Anwendungen haben.
- Bash => Die Standart shell, mit der man scriptet
- fish => Eine Shell, die versucht moderner und benutzerfreundlicher zu sein (nixht für scripting geeignet)
- zsh => so was dazwischen
- Nu => eine neue (aber coole) Shell, die noch in alpha ist
Hier werde ich vor allem über Bash schreiben, denn hier soll es ja um die ersten Schritte gehen.
grundsätzlicher Aufbau der Commandline⌗
Prompt⌗
Wenn man das Terminal auf mach und die shell gestartet wird, wird man als erstes von einem Promt und einem Cursor begrüßt. So sieht das in Bash bei mir aus.
[lovis@compooter:~/website/git]$
Das ist
- der Benutzername (
lovis
) - der Hostname (
compooter
), mit dem dein Rechner im Netzwerk erkannt werden kann - der Weg zum aktuellen “Ordner” (
~/website/git
, in Linux spricht man eher von directories) - und zu guter letzt der Privilegienstatus (
$
). Das Dollarzeichen symbolisiert normale Privilegien und#
die erhöhten Rechtes desroot
Nutzers
Und natürlich gibt es auch hier viele Optionen. Man kann es einstellen und personalisieren, so viel man will.
Befehle⌗
Wie oben angesprochen gibt es $
und #
. Diese Struktur wird auch gerne in Wikis oder anderen Foren gentutzt. Wenn also eine Anweisung so aussieht:
$ ncdu -x -q /
,
dann sollte er als normaler Nutzer ausgeführt werden. Und so
# ncdu -x -q /
als root nutzer.
Nicht einfach so Befehle aus dem Internet kopieren und ausführen, sie können sehr viel Sachaden anrichten.
sudo⌗
Um nicht jedes mal zum root
Nutzer zu wechseln, wenn man höhere Privilegien braucht gibt es auf den meisten Distros das sudo
Werkzeug. Um es zu nutzen schreibt man es wie einen Präfix vor den Befehl. sudo sudo arp-scan
zum Beispiel.
Befehlsstruktur⌗
Wenn man etwas ausführen möchte, dann muss man im Terminal den Befehl dafür kennen. Ein Befehl kommt aber selten alleine, denn oft haben diese CLIs (commandline interfaces), also Apps für das Terminal, mehrere Funktionen. Um zu sagen, was man möchte werden meistens sogenannte flags genutzt. Um sie zu finden kann man meist $ <Befehl> --help
oder $ man <Befehl>
ausführen.
Warum das Terminal?⌗
Wenn man sein System über das Terminal bedient, dann bewegt man sich in reinen Daten. Da lernt man erst zu schätzen, wie praktisch eine txt
Datei ist. Und muss sich nicht mit den vorgefertigten Workflows oder den von andferen leuten bevorzugte Art und Weise Dinge zu machen herumschlagen. Die Wrkzeuge, die man benutzt sind auf so einem niedrigen System-Level, dass man sie so nutzen kann wie man es eben gerne hätte.
scripting⌗
Außerdem kann man in der shell viel einfacher Dinge automatisieren, denn die shell ist eine scripting Sprache, nicht nur eine Eingabe für den Nutzer. Ich finde, das ist auch ein guter Einstieg ins Programmieren. Weil man muss keine komplexen Programme schreiben. Nein kleine scripts, die häufig ausgeführte Aktionen vereinfachen.
Schreibe dazu deinen Script in eine .sh
Datei und führe die dann aus mit sh <filename>.sh
.
Allgemeines⌗
Ein paar allgemeine Tricks und Tips, die nicht besonders sind baerr für den Anfang ganz gut zu wissen.
Es gibt relative und absolute Wege zu einer Datei. Wenn ich in ~
(meiner home-dir) bin und in den “Music” Ordner möchte kann ich entweder cd ./Music
oder cd /home/lovis/Music
nutzen.
In einem Ordner gibt es immer schon 2 Unterordner, .
und ..
. Dabei ist .
der aktuelle Ordner, daher kann man im oben genannten Beispiel den Punkt auch weg lassen (also cd Music
). Und wenn ich zum nächsthöheren Ordner wechseln möchte kann ich cd ..
nutzen.
Sogenannte dotfiles
sind Dateien, die mit einem Punkt beginnen. Sie werden standartmäßig versteckt. In ihnen werden häufig Konfigurationen oder ähnliches gespeichert. Man kann sie auflisten mit ls -a
(oder ls -A
, wenn man .
und ..
verstecken möchte, denn sie haben keinen praktischen Zweck).
*
bedeutet alle ->rm *
löscht alle Dateien im momentanen Ordner (oder auchrm *.html
, löscht alle html Dateien)|
die Pipe ermöglicht es das Ergebnis des vorherigen Befehls in den nächsten weiter zu geben>
schreibt den gegebenen input in eine Datei (cat file1 > file2
, schreibt die Inhalte von 1 in 2)>>
fügt den Inhalt an die Datei hinzu, wobei>
alle schon gegebenen Inhalte überschreibt
Dateimanagement⌗
Eines der wichtigsten Dinge ist es die Dateien auf dem System zu managen. Hier ein paar nützliche Befehle.
rm
Entferne Dateien (mit der-r
Flag kann man auch Ordner löschen (recursive))ls
liste alle Ordner und Dateien in dem momentanen Directorypwd
gibt den “working path”, also der Ordner, in dem man sich momentan befindetcd
“change dir” ->cd Music
wechselt den momentanen Ordner zu “Music”cat
listet die Inhalte einer text Datei in das Terminaltouch
erstellt eine neue Datei
Einstellungen⌗
Man kann die shell (und das Terminal) auch configurieren und seinen Bedürfnissen anpassen.
Das geht in der configurationsdatei. Sie ist auch ein guter Einstieg in die Welt der Linux-Einstellungen, die anders als bisher wahrscheinlich bekannt keine GUIs haben, sondern einfach Textdateien sind.
Für bash liegt die Datei bei ~/.bashrc
.
Environmentvariables⌗
Linux nutzt sogenannte environmntvariables. Sie können Programmen wichtige Daten mitteilen, sind aber auch für die shell selbst essenziell. Zum Beispiel die PATH
variable. Wenn man sie sehen möchte kann man echo "$PATH"
ausführen. Sie sagt dem System, wo die Binaries, also die ausführbaren Dateien liegen. Wenn ich zum Beispiel ~/.local/bin/
hinzufügen, dann können die Binaries auch dort liegen und ich muss sie nicht mit ./.local/bin/examplebin
ausführen, sondern kann einfach examplebin
ausführen.
52posts⌗
Dieser Beitrag ist Teil meines Plans, in 2023 jede Woche einen Post zu erstellen, mit Dingen, die ich gelernt habe. (Das sind dann 52 Posts).