Linux Shell: Mit der Bash arbeiten

Inhalt

  1. Schnelleinstieg – Die wichtigsten Shell-Befehle
  2. Was ist die Linux Shell?
  3. Shell-Befehle ausführlich erklärt
  4. Der Vim-Editor

1. Schnelleinstieg – Die wichtigsten Shell-Befehle

$ echo $0

Welche Shell gerade verwendet wird, zeigt dir dieser Befehl.

$ ls 

Mit dem Befehl ls lässt du den Inhalt des aktuellen Verzeichnisses anzeigen

$ mkdir Documents/project

Erstellt ein Verzeichnis Namens project im Documents-Verzeichnis

$ touch Documents/project/date.js

Erstellt eine Datei Namens date.js unterhalb des eben angelegten Verzeichnisses project

$ vim Documents/project/date.js

Öffnet die Datei date.js im VIM Editor

date =date +%Y-%m-%d
echo $date

Im Editor-Mode kannst du Code hinzufügen, z.B. das Datum als Bash-Skript

$ cat Documents/project/date.js

Cat zeigt dir den Inhalt der angegebenen Datei an

$ open Documents/project/date.js

Öffnet die ausgewählte Datei im Standard-Editor

$ grep date Documents/project/*

Sucht in allen Dateien (*) nach dem String date

$ find Documents/project/* -iname "at.*"

Mit find können u.A. Dateien gefunden werden. In diesem Beispiel wird in project/ nach dem String „at“ gesucht, das in einem beliebigen Dateinamen mit beliebiger Dateiendung vorkommen kann

$ tail -10 /project/log

Der tail-Befehl zeigt in diesem Fall die letzten 10 Zeilen z.B. einer Log-Datei an.

Pipes

Möchtest du Ein- und/oder Ausgabe verketten oder umleiten, ist die Funktion der Pipes sehr hilfreich.

Um zum Beispiel den Inhalt der Auflistung des Befehls ls in eine Datei zu schreiben, nutzt du

$ ls >inhalt.txt

Mit dem grep-Befehl

$ grep a <inhalt.txt

kann man die Datei wieder auslesen.

2. Was ist die Linux Shell?

Die Linux Shell ist eigentlich die Bash, für Bourne-again shell. Es gibt noch andere Shells, die Bash ist aber die Standard-Shell auf Linux-Systemen und kann auf macOS und Windows Systemen nachinstalliert werden.

Sie dient als Kommandozeilentool und kann für verschiedene, teilweise in das System tiefgreifende, Operationen verwendet werden, für die keine grafischen Benutzeroberflächen gewünscht sind oder zur Verfügung stehen.

Die bereits im Schnelleinstieg gelisteten Bash-Befehle werden nun mit weiteren praxisrelevanten Beispielen erklärt. Eine sehr ausführliche Referenz-Übersicht findest du unter https://www.shellbefehle.de/befehle/

3. Shell-Befehle ausführlich erklärt

echo

Der Befehl echo gibt dir Textinhalt auf der Konsole aus. Folgende Beispiele werden häufig verwendet:

$ echo $USER

für den aktuell angemeldeten Benuter (Groß-/Kleinschreibung beachten)

$ echo Inhalt der Datei inhalt.txt ist: `cat inhalt.txt`

listet dir den Inhalt der angegebenen Datei mittels cat in einer Zeile als String auf

ls

$ ls 

Dieser Befehl listet dir die Verzeichnisse und Dateien auf.

$ ls k*

Anzeige aller Dateien die mit einem „k“ beginnen

$ ls -lash

Eine ausführliche Auflistung mit Verzeichnis-/Datei-Attributen

mkdir

$ mkdir project

Mit mkdir (für make directory) kannst du ein neues Verzeichnis anlegen.

$ mkdir project-01 project-02 

Du kannst mehrere Verzeichnisse anlegen, mit Leerzeichen getrennte Benamung

$ mkdir -p project-01/project-11

Hiermit legst du zudem Unterverzeichnisse an.

touch

$ touch Documents/project/date.js

Zum Erstellen neuer Dateien verwendest du touch, hier im Beispiel die Datei date.js in genannten Unterverzeichnissen.

cat

$ cat Documents/project/date.js

Willst du dir den Inhalt der angelegten Datei ansehen, ist cat der perfekte Befehl.

 $ cat datei-01 datei-02 >project

Es lassen sich auch Textdateien zusammenfassen und in einer dritten Datei (project) ablegen

open

$ open Documents/project/date.js

Über den Befehl open öffnest du die angegebene Datei in deinem Standard-Editor.

grep

$ grep date Documents/project/*

Das sehr mächtige Tool grep (für general regular expression print) sucht in dem Fall nach dem String „date“ in allen Dateien des Verzeichnisses project.

$ ls | grep ^p

In diesem Fall auch mit einer Pipe als Filter, zeigt dir der Befehl alle Dateien an, die mit p beginnen. Dazu wird ein einfaches Beispiel einer Suche nach einem RegExp-Muster verwendet.

Hier ein paar wichtige RegExp-Muster:

regText „reg“
[reg]nur eines der Zeichen „reg“
[a-z]ein Zeichen von „a-z“
[a-z0-9]ein Zeichen von a-z oder eine Zahl von 0-9
[^reg]keines der Zeichen „reg“
?das davorstehende Zeichen oder keines
+das davorstehende Muster einmal oder mehrmals
* das davorstehende Msuter beliebig oft
. das beliebiges Zeichen
{3}das davorstehende Muster dreimal
{2,4}das davorstehende Muster mind. dreimal, max. viermal
^[Uh]zum Zeilenbeginn steht ein U oder ein h
[0-9]$zum Zeilenende steht eine Ziffer von 0-9

Weitere Informationen zu RegExp findest du unter https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions

find

$ find Documents/project/* -iname "at.*"

Möchtest du im Verzeichnis project alle Dateinamen (*) nach einem enthaltenen String „at“ durchsuchen, nutzt du find wie oben gezeigt. Der * hinter „at“ sucht nach allen Dateiendungen.

tail

$ tail -10 /project/log

Der Befehl zeigt die letzten Zeilen einer Datei an. Recht praktisch, wenn in langen Log-Dateien nur die letzten Logs angezeigt werden sollen.

$ tail -f inhalt.txt

Ein sehr interessanter Befehl, der durch -f (follow) die aktuellen Bearbeitungen live aufzeichnet (nach dem Speichern).

4. Der Vim-Editor

$ vim Documents/project/date.js

Vim ist der Editor in der Bash, der zum Editieren von Dateien etwas gewöhnungsbedürftig ist, mit der Übersicht der wichtigsten Befehle aber schnell verhältnismäßig gut bedient werden kann.

Hier eine Übersicht:

aEingabemodus (rechts vom Cursor)
ESCEingabemodus beenden
ddZeile löschen
yykopiert die ausgewählte Zeile
U Zeile wieder herstellen
:qschließt das Fenster
:wqspeichert die Datei und schließt das Fenster
:q!schließt das Fenster ohne zu speichern
/datesucht nach einem Muster (vorwärts), in dem Fall nach date

Ausführliche VIM-Referenz: https://duetsch.info/downloads/vimref.pdf

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

© All rights reserved.

Supported by