bash interne Kommandos Tutorial Teil 6

Die internen Kommandos (builtins) der bash sind in jeder Installation ohne weiteres Dazutun verfügbar. Es sind die wichtigsten und meistbenutzten Kommandos der Shell, die jeder Nutzer kennen sollte.

bash Logo, CC-BY-NC 4.0 Dr. Dirk Colbry, Michigan State University
Dr. Dirk Colbry, Michigan State
Gnu-bash-logoCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
bash Logo, CC-BY-NC 4.0 Dr. Dirk Colbry, Michigan State University
1Einführung
2Der bash Prompt
3key bindings
4Der Startvorgang
5Environment Variablen
6builtin commands
7Arbeiten mit Dateien
8nano
9bash Scripting
10Variablen
11Verzweigungen (if)
12Schleifen
13Kommandozeilenparameter
14exit Codes bash Tutorial Teil 14
15von der Idee zum Script
16grep
17Piping und Redirection
18tee

interne Kommandos

Der allergrößte Vorteil der builtins liegt in erster Linie darin, dass du sie in jeder bash Installation findest. Für sie muss kein PATH konfiguriert werden. Dadurch ist es unproblematisch, sie in deiner .bashrc zu verwenden. Ein weiterer Vorteil ist, dass sie nicht vom Datenträger nachgeladen werden müssen. Das war allerdings früher, als Festplatten oder gar Disketten noch sehr viel langsamer waren als moderne Datenträger, viel wichtiger.

Um eine Liste aller builtins in der Shell zu erstellen, kannst du dieses interne Kommando benutzen

compgen -b
Ausgabe von compgen -b mit einem Auszug der bash internen Kommandos
Olli Graf - raspithek.de
compgen-b-1Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Ausgabe von compgen -b mit einem Auszug der bash internen Kommandos

Bei fast allen Kommandos kannst du mit dem Parameter --help Informationen zur Benutzung ausgeben lassen und auch die möglichen Parameter werden dir angezeigt.

pwd

pwd steht für „print work directory“ und tut genau das, was der Name sagt, es gibt dir den Namen mit Pfad des aktuellen Verzeichnisses aus. Nach dem Login auf dem Raspberry Pi ist dies in der Regel dein home Verzeichnis.

cd

cd („change directory“) wechselt das aktuelle Verzeichnis.

mkdir

mkdir ist eine Kurzschreibweise für „make dir“, also: Lege neues Verzeichnis an.

echo

echo gibt den übergebenen String auf der Console aus. Im String können Variablen eingebettet sein. Beispielsweise macht echo "${PWD}" das gleiche wie pwd.

Vor allem in Skripts ist echo wichtig, um Daten auszugeben und Werte aus Funktionen zurückzugeben.

ls

ls steht kurz für list und listet alle Dateien im aktuellen Verzeichnis auf. ls besitzt eine Vielzahl von Parametern, die ich selbst nicht alle auswendig kann. ls ist eigentlich kein eingebautes Kommando, ich halte es aber für so wichtig, dass ich es hier mit aufnehme.

ls

ls listet alle Dateien im aktuellen Verzeichnis auf. Nun ja, nicht alle, denn die sogenannten versteckten Dateien, also alle, die mit einem Punkt beginnen, werden ausgelassen. Diese kannst du mit dem Parameter -a anzeigen lassen, a wie all.

Ausgaben von la und ls -a
Olli Graf - raspithek.de
lsCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Ausgaben von la und ls -a

In den meisten Fällen interessiert mich bei den Dateien entweder das Dateidatum oder deren Größe. Mit dem Parameter -l kannst du dir die detaillierten Informationen auflisten lassen, also ein long listing

Ausgaben von la -a und ls -al
Olli Graf - raspithek.de
ls-lCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Ausgaben von la -a und ls -al

Der Screenshot zeigt, dass du die Parameter ls -a -l zu ls -al zusammenziehen kannst.

alias

Mit alias kannst du einen neuen Befehl definieren, der ein bekanntes Kommando unter einem anderen Namen aufruft. Damit kannst du lange Kommandonamen abkürzen oder auch ständig benutzte Parameter automatisch mitgeben lassen. Wenn du, wie ich immer alle Dateien im langen Listing von ls angezeigt bekommen möchtest, kannst du dir dies auf ein alias legen:

alias ll='ls -al'

In der Standard .bashrc sind üblicherweise schon mehrere Aliase für ls definiert, allerdings auskommentiert.

# some more ls aliases
alias ll='ls -l'
alias la='ls -A'
alias l='ls -CF'

alias ll anlegen und ausführen
Olli Graf - raspithek.de
aliasCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
alias ll anlegen und ausführen

Ein alias besteht immer nur innerhalb einer Session. Nach dem Logout ist er wieder weg. Mit unalias kannst du einen alias wieder aufheben.

cat

cat steht für catalogue und gibt den Inhalt einer Datei auf der Console aus. Bei Binärdateien kommt da ein ziemlicher Datenmüll zusammen, der uU. Das Terminal zerschießen kann. cat läuft immer bis zum Dateiende durch, daher benutze ich es häufig mit einem Pager wie less. Aber dazu erzähle ich dir später mehr. Interessant ist hier der Parameter -n, der die Zeilennummern anzeigt.

cat und cat -n mit einer Testdatei.
Olli Graf - raspithek.de
catCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
cat und cat -n mit einer Testdatei.

Auch cat ist so wichtig, dass ich hier mit aufnehme.

source

source führt ein Kommando oder Skript in der aktuellen Login -shell aus. Es lässt sich auch mit . abkürzen.

Ich schreibe mir ein kleines Testskript:

export VAR1="Wert"
alias dir='ls -la'

Hier wird nur eine globale Variable definiert (global, da sie nach Ende des Skripts erhalten bleibt) und ein alias dir für ls angelegt. Was vor allem DOS Umsteiger früher häufig gemacht haben.

Ausführung des test.sh Skripts mit source, danach sind VAR1 und der alias dir definiert.
Olli Graf - raspithek.de
sourceCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Ausführung des test.sh Skripts mit source, danach sind VAR1 und der alias dir definiert.

Tipp: Wenn du Änderungen an deiner .bashrc machst, kannst du diese mit source .bashrc in der laufenden Session wirksam werden lassen ohne dich aus- und wieder einzuloggen.

Nächstes Mal arbeiten wir dann mit Dateien.

Schreibe einen Kommentar

Creative Commons License
Except where otherwise noted, the content on this site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Olli Graf - raspithek.de
WordPress Cookie Hinweis von Real Cookie Banner