Kleine Shelleinführung (1. Befehle und Pfade)

07 Juni 2024

Allgemeines

Eine Shell (Hülle (um das Betriebssystem)) ist eine Benutzerschnittstelle. Benutzer können darüber mit dem Betriebssystem interagieren.

Es gibt viele Shells (auch graphisch). Dieser Überblick bezieht sich jedoch auf die CLI-Shell bash

Eine CLI-Shell wird ausgeführt:

  • direkt nach dem Shell-Login (siehe auch: /etc/passwd)

  • als *terminal aus einer graphischen Oberfläche

  • oder in einem Skript (erste Zeile "shebang")

Typische Eigenschaften einer Shell sind:

  • stellt Umgebung (Prompt, Pfade, Variablen…​) zur Verfügung

  • Build-in Befehle, Operatoren, Funktionen, Variablen, …​

  • Ausführen von externen Befehlen/Programmen

  • Kommandozeileninterpreter

Konfiguration der bash über:

  • /etc/bash.bashrc (global)

  • ~/.bashrc (lokal)

  • ggf. noch weiter aufgesplittet, je nach Distribution unterschiedlich

(Zur Vollständigkeit: daneben gibt es noch /etc/profile (global) bzw. ~/.bash_profile (lokal) für die Login shell. Sieht auch: shopt login_shell)

Important
*nix Shells sind case sensitive!

Befehlsstruktur

Befehl Beschreibung

cd [DIR]

ChangeDirectory

ls [OPTION]…​ [FILE]…​

LiSt directory

cp [OPTION]…​ <SOURCE>…​ <DEST>

CoPy: Datei kopieren

mv [OPTION]…​ <SOURCE>…​ <DEST>

MoVe: Datei(en) verschieben

rm [OPTION]…​ [DATEI]…​

ReMove: Datei(en) löschen (Aufpassen, insb. mit Wildcards!)

pwd [OPTION]

PrintWorkingDirektory

file [OPTION…​] <FILE>…​

Art der FILEs bestimmen

alias [-p] [name[=value] …​ ]

ALIASnamen definieren oder anzeigen

echo [OPTION]…​ [STRING]…​

Zeichenkette ausgeben

…​

siehe /bin/* und /usr/bin/ sowie /sbin

Wildcards/Platzhalter Beschreibung

*

alle Zeichen, beliebige Länge

?

genau ein beliebiges Zeichen

[ ]

Zeichenmengen

{ }

Klammerexpansion, z.B. Wertebereich

Legende:

  • <mandatory> : in spitzer Klammer = obligatorisch

  • [optional] : in eckiger Klammer = optional

  • …​ : weitere

Weitere Infos:

  • BEFEHL --help

  • man BEFEHL

  • (wiki)

Beispiele: Pfade

Pfadangabe Beschreibung

/

root-Verzeichnis (absolut)

.

aktuelles Verz. (relativ)

# ohne Argument: nach $HOME wechseln
cd

#
cd .
cd /
cd

# CDPATH setzten
CDPATH=$HOME
# nach /tmp wechseln
cd /tmp
# Verz. bin erzeugen
mkdir bin
# in verzeichnis bin wechseln
cd bin
# -> $HOME/bin
unset CDPATH
cd
ls .bash*
cp .bashrc /tmp
mv /tmp/.bashrc /tmp/.bashrc-neu
cd /tmp
rm .bashrc-neu
cd
unset CDPATH
cd
ln -s /bin/ping ./pingpong
ls ./ping*
./pingpong -c 1 lug-vs.org
file ./pingpong
file /bin/ping
file /bin/ping?
file /bin/ping*
rm ./pingpong

Einschub: Prioritäten der Ausführung beachten: [3]

  1. build-in Befehle

  2. alias

  3. Reihenfolge im Pfad ($PATH)

Beispiel: alias

Eigene aliase ansehen:

alias

Eigenen alias erstellen

alias 1ping="ping -c 1"
1ping google.de
unalias 1ping

Siehe auch [4]

alias "cd.."="cd .."
alias ".."="cd .."
alias "..."="..; .."
cd
...

Weitere Einblicke

env
pstree -a