shell in 128 seconds

next:

Skript

Notizen

intro

Eine Shell ist ein Programm, das nur mit Tastatureingaben gesteuert wird, nur Textausgaben produziert und die einfache und flexible Ausführung anderer Programme ermöglicht.

Es gibt unterschiedliche Shells für Linux. Dieses Video nutzt bash, aber für diese Einführung ist das weitgehend egal. [0:16]

user@hostname:~$ echo $SHELL
/usr/bin/bash
commandline elements

Die wichtigsten Aktionen einer Shell sind das Erstellen und Ausführen einer Kommandozeile am Prompt. Im einfachsten Fall besteht eine Kommandozeile aus nur einem Wort, dem Namen des Kommandos.

Weitere häufige Bestandteile von Kommandozeilen sind:

  • Argumente für das Kommando, also v.a. Datei- und Verzeichnispfade

  • Optionen, die spezifisch für das jeweilige Kommando sind

  • und unterschiedlicher Shell-Funktionalitäten, aus denen Argumente erzeugt werden, v.a. Variablen, pattern matching, command substitution und brace expansion

[0:48]

testuser@learnlinux: ~$ ls
ls-test

testuser@learnlinux: ~$ ls -ld ls-test/
drwxrwx---. 3 testuser testuser 4096 Apr  8 02:59 ls-test/

testuser@learnlinux: ~$ subdir='ls-test/' ; ls -l "$subdir"v*
-rw-rw----. 1 testuser testuser 8192 Mar 29 20:53 ls-test/visible_file
-rw-rw----. 1 testuser testuser    0 Mar 30 22:40 ls-test/visible_file2
-rw-rw----. 1 testuser testuser   10 Mar 30 22:37 ls-test/visible_file3

testuser@learnlinux: ~$ ls -l ls-test/visible_file{,4}
ls: cannot access 'ls-test/visible_file4': No such file or directory
-rw-rw----. 1 testuser testuser 8192 Mar 29 20:53 ls-test/visible_file

testuser@learnlinux: ~$ echo "Das aktuelle Datum ist: $(date +%F)"
Das aktuelle Datum ist: 2026-04-19
  • quoting, also das Ignorieren der normalen Wirkung von Leerzeichen und Shellzeichen

user@hostname:~$ echo a      b "a      b"
a b a      b

testuser@debian-selinux:~$ echo $HOME "_  $HOME  _" '$HOME' \;
/home/testuser _  /home/testuser  _ $HOME ;
  • und die Umleitung der Eingabe und Ausgabe von Programmen [0:58]

user@hostname:~$ ls -m ls-test/ >output.txt

testuser@debian-selinux:~$ cat <output.txt
directory, dir.txt, symlink, visible_file, visible_file2, visible_file3
commandline editing

Die Shell hilft auch beim Erstellen der Kommandozeilen:

  • Über die Pfeiltaste nach oben erreicht man die früheren Kommandozeilen.

testuser@learnlinux: ~$ echo 1
1

testuser@learnlinux: ~$ echo 2
2

testuser@learnlinux: ~$ echo 3
3

testuser@learnlinux: ~$ # press arrow up
  • Tab completion – aktiviert über die Tabulatortaste – hilft beim Erstellen von Dateipfaden oder sogar derjenigen Optionen, die das jeweilige Kommando versteht.

testuser@learnlinux: ~$ echo foo bar bat # press Ctrl-C   ^C

testuser@learnlinux: ~$
  • Man kann Teile der aktuellen Kommandozeile löschen:

    • mit Ctrl-C wird die gesamte Kommandozeile verworfen, und die Shell springt zum nächsten Prompt

    • mit Ctrl-W wird das Wort links von der Cursorposition gelöscht

    • mit Ctrl-U wird die Kommandozeile von der Cursorposition bis zum Anfang gelöscht

    • mit Ctrl-K wird die Kommandozeile von der Cursorposition bis zum Ende gelöscht

    • mit Ctrl-Y wird der zuletzt gelöschte Text an der Cursorposition eingefügt

    [01:39]

testuser@learnlinux: ~$ echo foo bar bat # press Ctrl-C   ^C

testuser@learnlinux: ~$

 

testuser@learnlinux: ~$ echo foo bar bat  # press Ctrl-W

testuser@learnlinux: ~$

 

testuser@learnlinux: ~$ echo foo echo bar # press Ctrl-U

testuser@learnlinux: ~$

 

testuser@learnlinux: ~$ echo foo echo bar # press Ctrl-K

testuser@learnlinux: ~$
aborting a command

Ein im Vordergrund laufendes Programm kann mit Ctrl-C abgebrochen werden.

testuser@learnlinux: ~$ date +%T ; sleep 5
04:55:39
^C

testuser@learnlinux: ~$ date +%T
04:55:40

testuser@learnlinux: ~$
background

Durch ein angehängtes & kann eine Kommandozeile im Hintergrund ausgeführt werden.

testuser@learnlinux: ~$ sleep 2 &
[1] 8084

testuser@learnlinux: ~$ echo foo
foo
[1]+  Done                    sleep 2

testuser@learnlinux: ~$
pipeline

Die Shell kann zwei Kommandos gleichzeitig starten und die Ausgabe des einen mit der Eingabe des anderen verknüpfen. Diese Struktur nennt man eine Pipeline.

testuser@learnlinux: ~$ ls -l ls-test/
total 20
drwxrwx---. 2 testuser testuser 4096 Mar 30 03:34 directory
-rw-rw----. 1 testuser testuser    0 Mar 30 03:33 dir.txt
-rw-rw----. 1 testuser testuser    4 Apr  8 02:59 selinux
lrwxrwxrwx. 1 testuser testuser    7 Mar 30 22:25 symlink -> dir.txt
-rw-rw----. 1 testuser testuser 8192 Mar 29 20:53 visible_file
-rw-rw----. 1 testuser testuser    0 Mar 30 22:40 visible_file2
-rw-rw----. 1 testuser testuser   10 Mar 30 22:37 visible_file3

testuser@learnlinux: ~$ ls -l ls-test/ | grep ^l
lrwxrwxrwx. 1 testuser testuser    7 Mar 30 22:25 symlink -> dir.txt

testuser@learnlinux: ~$
see also

Die spezifischen Funktionen von bash und was ein Terminal ist werden in diesem Video erklärt.

user@hostname:~$