Stammtisch 2024-06-14: Unterschied zwischen den Versionen

Aus lugvswiki
Zur Navigation springenZur Suche springen
 
(16 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 12: Zeile 12:
 
* d'Michl
 
* d'Michl
 
* Ulf
 
* Ulf
*
 
  
  
Zeile 43: Zeile 42:
  
 
=== Praxis-Übung zum Vortrag Plockis vom 07.06.2024 ===  
 
=== Praxis-Übung zum Vortrag Plockis vom 07.06.2024 ===  
<!-- [https://plocki.org/blog/linux/shelleinfuehrung1-draft.html], bash, shell, bashrc, alias, Alias, Alias erstellen, Alias hinzufügen, Joe-Editor, Ping-Befehl, ping, cat -->
+
<!-- [https://plocki.org/blog/linux/shelleinfuehrung1-draft.html], Shelleinführung, kurze Shelleinführung, Joe, Editor, Alias-Befehl, Alias-Datei, bash, shell, bashrc, alias, Alias, Alias erstellen, Alias hinzufügen, Joe-Editor, Ping-Befehl, ping, cat -->
 
Hier noch einmal das Skript zu Plockis Vortrag und das Video:
 
Hier noch einmal das Skript zu Plockis Vortrag und das Video:
 
# Skript: [https://plocki.org/blog/linux/shelleinfuehrung1-draft.html ''Skript Shelleinführung'']
 
# Skript: [https://plocki.org/blog/linux/shelleinfuehrung1-draft.html ''Skript Shelleinführung'']
 
# Video: [https://tube.sp-codes.de/w/iNRwq2mStTJr42XJypUGrx ''Kleine Shelleinführung'']
 
# Video: [https://tube.sp-codes.de/w/iNRwq2mStTJr42XJypUGrx ''Kleine Shelleinführung'']
  
Holger fragt, wie er sich einen ''Alias'' erstellen kann. Das hat Plocki letzte Woche wohlweislich noch nicht erwähnt, da es je nach genutzter Shell und auch in Abhängigkeit von der genutzten Distribution voneinander abweichen kann.
+
Holger fragt, wie er sich einen ''Alias'' erstellen kann. Denn die können, wie wir letzte Woche ja gehört haben, das Arbeiten an der Konsole schon stark vereinfachen.
 +
Wie das geht, hat Plocki letzte Woche wohlweislich noch nicht erwähnt, da es je nach genutzter Shell und auch in Abhängigkeit von der genutzten Distribution unterschiedlich gehandhabt werden kann.
  
 
Holger teilt den Bildschirm und lässt sich das an der Konsole etwas erklären.
 
Holger teilt den Bildschirm und lässt sich das an der Konsole etwas erklären.
Zeile 55: Zeile 55:
  
 
Die Ausgabe sieht auf Holgers openSUSE Tumbleweed so aus:
 
Die Ausgabe sieht auf Holgers openSUSE Tumbleweed so aus:
  ''$'' holger@aelbler:~> '''cat .bashrc'''
+
  <$> holger@aelbler:~> '''cat .bashrc'''
 
  # Sample .bashrc ['rc' steht (vermutlich) für 'resource' = Systemdateien werden beim Start eines Terminals verändert]
 
  # Sample .bashrc ['rc' steht (vermutlich) für 'resource' = Systemdateien werden beim Start eines Terminals verändert]
 
  # Copyright (c) SUSE Software Solutions Germany GmbH
 
  # Copyright (c) SUSE Software Solutions Germany GmbH
Zeile 91: Zeile 91:
 
  da mehrsprachige X-Sitzungen nicht richtig funktionieren würden, wenn LANG in jeder # Subshell überschrieben würde."
 
  da mehrsprachige X-Sitzungen nicht richtig funktionieren würden, wenn LANG in jeder # Subshell überschrieben würde."
  
Da Holger bislang keine Datei mit Namen <code>'''.alias'''</code> angelegt und definiert hat, wird sie auch nicht gefunden.  
+
Da Holger bislang keine (versteckte) Datei mit Namen <code>'''.alias'''</code> angelegt und definiert hat, wird sie auch nicht gefunden.
  
''$'' '''cat .alias'''
+
<$> '''cat .alias'''
 
  cat: .alias: Datei oder Verzeichnis nicht gefunden
 
  cat: .alias: Datei oder Verzeichnis nicht gefunden
  
Bei Ulf schon ...
+
==== Die (versteckte) ''Datei'' '''.alias''' ====
 +
Nun war die Ursprungsfrage ja, wie Holger eine ''Alias-Datei'' ('''.alias''') anlegen kann; in dieser können Befehle / Shortcuts hinterlegt, aber eben auch verändert, beziehungsweise neue Shortcuts (Pseudonyme / Platzhalter) erstellt werden. So können längere, umständlich zu tippende Befehle durch Aliasse ersetzt werden.
  
Nun war die Ursprungsfrage ja, wie Holger eine ''Alias-Datei'' ('''.alias''') anlegen kann (in dieser können Befehle / Shortcuts hinterlegt werden (sind sie bei Holger standarmäßig schon), aber eben auch verändert werden, beziehungsweise neue Shortcuts erstellt werden.
+
Dazu öffnet Holger den [https://wiki.ubuntuusers.de/Editor/ ''Editor''] [https://wiki.ubuntuusers.de/Editoren/ ''Joe''] (jeder andere wäre auch möglich, weicht dann aber in der Bedienung ab).
 +
<$> '''joe .alias'''
 +
Die Datei wird aber erst "angelegt", wenn sie auch gespeichert wurde!
  
Dazu öffnet Holger den Editor ''Joe'' (jeder andere wäre auch möglich, weicht dann aber in der Bedienung ab).
+
Holger verlässt den Editor mittels Shortcut '''Strg + K''', gefolgt von einem '''Q''' (Quit / Verlassen) wieder, wonach er gefragt wird, ob er die Änderung (in diesem Fall einfach nur die Erstellung der Datei ''.alias'') übernehmen möchte, was er mit '''Y''' (Yes / Ja) übernimmt.  
joe .alias
+
 
Die Datei wird aber erst "angelegt", wenn sie auch gespeichert wurde!
+
Was Holger (jetzt beim Schreiben des Protokolls) aber noch nicht weiß, ist folgendes:
 +
Er hat zwar die '''Datei''' <code><$> '''.alias'''</code> erstellt (sie konnte anfangs ja nicht aufgerufen werden), aber ...
 +
 
 +
----
  
Holger verlässt den Editor mittels Shortcut '''Strg + K''', gefolgt von einem '''Q''' wieder, wonach er gefragt wird, ob er die Änderung (in diesem Fall einfach nur die Erstellung der Datei ''.alias'') übernehmen möchte, was er mit '''Y''' (Ja) übernimmt.
+
==== Der ''Befehl'' '''alias''' ====
 +
... es gibt auch den '''Befehl''' (keine Datei!) '''alias''', mit dem man die vom Betriebssystem ''schon vorkonfigurierten'' Aliasse aufrufen kann, wie er zwar gleich feststellt, aber erst am nächsten Tag auch versteht.  ;-)
  
Was Holger (jetzt beim Schreiben des Protokolls) aber noch nicht kapiert ist folgendes:
+
Dieser Befehl gibt folgenden Inhalt aus:
Die Datei .alias konnte Anfangs ja nicht aufgerufen werden. Nun, nachdem sie mit dem Editor Joe erstellt wurde (ohne etwas in die Datei einzutragen) wird mit dem Aufruf
 
 
  <$> holger@aelbler:~> '''alias'''
 
  <$> holger@aelbler:~> '''alias'''
folgendes ausgegeben:
 
 
  alias +='pushd .'
 
  alias +='pushd .'
 
  alias -- -='popd'
 
  alias -- -='popd'
Zeile 133: Zeile 138:
 
  alias you='if test "$EUID" = 0 ; then /sbin/yast2 online_update ; else su - -c "/sbin/yast2 online_update" ; fi'
 
  alias you='if test "$EUID" = 0 ; then /sbin/yast2 online_update ; else su - -c "/sbin/yast2 online_update" ; fi'
  
Also war die Datei doch schon da? Holgers Betriebssystem openSUSE Tumbleweed hat jedenfalls schon eine Menge Alias hinterlegt ...
+
Holgers Betriebssystem openSUSE Tumbleweed hat jedenfalls im Befehl ''alias'' schon eine Menge ''Pseudonyme'' hinterlegt.
Nun möchte er einen hinzufügen, nämlich den Befehl [https://wiki.ubuntuusers.de/ping/ Wiki Ubuntuusers.de ''ping'']
+
 
 +
'''O'''ff'''T'''opic:
 +
Das Wort "Alias" wird laut ''Korrekturen.de'' (auch Duden) übrigens auch im Plural als "die Alias" geschrieben, darf aber auch als "die Alias'''se'''" notiert werden [https://www.korrekturen.de/flexion/deklination/Alias/ Quelle: Korrekturen.de "Alias"] ...
 +
 
 +
----
 +
 
 +
==== Alias hinzufügen ====
 +
Nun möchte Holger einen schon bestehenden Befehl modifizieren und zu der versteckten Datei '''.alias''' hinzufügen, nämlich den Befehl [https://wiki.ubuntuusers.de/ping/ ''ping''] (Wiki Ubuntuusers.de).
  
 
Ulf und Plocki erklären, wie das geht:
 
Ulf und Plocki erklären, wie das geht:
 
  <$> '''alias ping1='ping -c 1''''
 
  <$> '''alias ping1='ping -c 1''''
Obiger Befehl erstellt einen Alias mit Namen ''ping1'' und setzt folgende Option dahinter:
+
Obiger Befehl erstellt einen neuen Alias mit Namen ''ping1'' und setzt folgende Option / Parameter dahinter:
'''c''' = ''count'' = der Abruf der aufgerufenen Adresse (wird nachher noch gezeigt) erfolgt nun nur noch einmal; normalerweise wäre das endlos, bis man mit '''Strg + C''' das händisch beenden würde. Würde statt der ''1'' eine ''3'' gesetzt, würde beim Host (zum Beispiel netcup.de) nicht nur ein-, sondern dreimal "angeklopft" werden. Holger erstellt gleich noch zwei weitere Alias, den ''ping2'' und ''ping3''.
+
<code><$> ping '''-c''' 1</code>, dabei steht das "C" für ''count'' (zählen).
Das bedeutet, dass ''ping1'' bis ''ping3'' nun mit Variablen definiert wurden, welche in der Datei ''.alias'' nun fest hinterlegt wurden. Sie sind jetzt jederzeit nutzbar.
+
Und die Zahl im Befehl <code> <$> ping -c '''1'''</code> &ndash; in diesem Fall die '''1''' &ndash; bewirkt, dass nur exakt '''ein''' Mal "angeklopft" wird.
Hätte Holger diese Alias nicht neu angelegt, müsste er sie jedes mal (sogar schon in einem Unterfenster oder einer neuen Konsole) jedes mal neu definieren, um sie nutzen zu können.
 
  
"Klopft man" nun bei einem [https://de.wikipedia.org/wiki/Host_(Datenbankanbieter) Wikipedia: ''Host''] (Internetanbieter) mit dem Standard-Befehl ''ping'' "an", sieht das so aus:
+
Normalerweise würde &ndash; mit dem Standardbefehl <code>'''ping'''</code> &ndash; endlos "angeklopft". Und zwar so lange, bis man das mit '''Strg + C''' händisch beenden würde.
''$'' holger@aelbler:~> '''ping www.xn--audiobibelne-olb.de'''
+
Würde nun statt der ''1'' eine ''3'' gesetzt, würde beim Host &ndash; zum Beispiel www.netcup.de oder www.audiobibelneü.de &ndash; nicht nur ein-, sondern dreimal "angeklopft" werden. Aber dann ist auch Schluss.
PING www.xn--audiobibelne-olb.de (2a03:4000:61:63dc::19:3189) 56 Datenbytes
+
 
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=1 ttl=58 Zeit=14.8 ms
+
Holger erstellt gleich noch zwei weitere Aliasse, den ''ping2'' und ''ping3''.
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=2 ttl=58 Zeit=14.4 ms
+
Das bedeutet, dass ''ping1'' bis ''ping3'' nun mit Variablen definiert wurden, welche in der Datei ''.alias'' auch fest hinterlegt wurden. Sie sind jetzt jederzeit nutzbar. Also in allen drei möglichen Shells, der ''Login''-Shell, der ''normalen'' und der ''interaktiven'' Shell.  
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=3 ttl=58 Zeit=14.6 ms
 
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=4 ttl=58 Zeit=14.7 ms
 
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=5 ttl=58 Zeit=14.5 ms
 
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=6 ttl=58 Zeit=14.4 ms
 
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=7 ttl=58 Zeit=14.4 ms
 
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=8 ttl=58 Zeit=14.4 ms
 
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=9 ttl=58 Zeit=14.4 ms
 
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=10 ttl=58 Zeit=14.2 ms
 
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=11 ttl=58 Zeit=14.9 ms
 
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=12 ttl=58 Zeit=14.7 ms
 
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=13 ttl=58 Zeit=14.5 ms
 
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=14 ttl=58 Zeit=14.7 ms
 
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=15 ttl=58 Zeit=14.6 ms
 
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=16 ttl=58 Zeit=14.4 ms
 
... (endlos, bis händischer Abbruch!)
 
^C
 
--- www.xn--audiobibelne-olb.de ping-Statistik ---
 
52 Pakete übertragen, 52 empfangen, 0% packet loss, time 51078ms
 
rtt min/avg/max/mdev = 14.188/14.673/20.342/0.815 ms
 
  
Nutzt Holger aber den Alias ''ping3'' sieht es so aus:
+
Hätte Holger diese Aliasse nicht neu angelegt, müsste er sie jedes mal (zum Beispiel beim Öffnen eines weiteren Terminal-Unterfensters oder eines neuen Terminals) neu definieren, um sie nutzen zu können.
''$'' holger@aelbler:~> '''ping3 www.xn--audiobibelne-olb.de'''
 
PING www.xn--audiobibelne-olb.de (2a03:4000:61:63dc::19:3189) 56 Datenbytes
 
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=1 ttl=58 Zeit=15.1 ms
 
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=2 ttl=58 Zeit=14.6 ms
 
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=3 ttl=58 Zeit=14.4 ms
 
 
--- www.xn--audiobibelne-olb.de ping-Statistik ---
 
3 Pakete übertragen, 3 empfangen, 0% packet loss, time 2003ms
 
rtt min/avg/max/mdev = 14.353/14.705/15.148/0.330 ms
 
holger@aelbler:~>
 
  
Die Millisekunden-Zeiten (ms) weichen bei dem ''ping3'' ab, da die Statistik schlechter gemittelt ist; je häufiger der Ping abgefragt wird, desto genauer ist der ermittelte Wert.
+
----
  
Um zu kontrollieren, ob die neu angelegten Alias ''ping1'' bis ''ping3'' hinterlegt wurden, ruft Holger den Befehl ''alias'' auf und findet sie:
+
==== Kontrolle der erstellen Aliasse ====
  ''$'' holger@aelbler:~> '''alias'''
+
Um zu kontrollieren, ob die neu angelegten Aliasse ''ping1'' bis ''ping3'' hinterlegt wurden, ruft Holger den Befehl ''alias'' auf und findet sie dort nun auch hinterlegt (fette Markierungen):
 +
  <$> holger@aelbler:~> '''alias'''
 
  alias +='pushd .'
 
  alias +='pushd .'
 
  alias -- -='popd'
 
  alias -- -='popd'
Zeile 211: Zeile 194:
 
  holger@aelbler:~>
 
  holger@aelbler:~>
  
Und nachdem Holger mit dem Joe-Editor die Variablen ebenso auch in die zuvor erstellte Datei ''.alias'' eingetragen hat, sind sie auch dort hinterlegt.
+
Auch wenn Holger aus dem grafischen Terminal (das ist bei ihm unter openSUSE Tumbleweed die Konsole ''TTY'''2''''') in die Login-Shell, die ''TTY'''1''''' wechselt, und dort den Befehl ''alias'' aufruft, findet er die drei neuen Einträge.  :-)
 +
 
 +
Bei Holger (openSUSE Tumbleweed) wird der Wechsel von der grafischen Ebene (TTY2) in die Login-Shell mit dem Tastaturkürzel '''Strg + Alt + ''F1''''' vollzogen; zurück in die grafische Ebene geht es dann wieder mit '''Strg + Alt + ''F2'''''.
 +
 
 +
Unter anderen Distributionen kann das auch abweichen; siehe zum Beispiel den Link des Ubuntu-Wiki: [https://wiki.ubuntuusers.de/Terminal/ ''Virtuelle Konsole'']; dazu bis fast zur Mitte des Artikels scrollen und unter ''Virtuelle Konsole'' lesen.
 +
 
 +
Und nachdem Holger mit dem Joe-Editor die Variablen ebenso auch in die zuvor erstellte Datei ''.alias'' eingetragen und abgespeichert hat, sind sie auch dort hinterlegt.
 
   
 
   
  ''$'' holger@aelbler:~> '''joe .alias'''
+
  <$> holger@aelbler:~> '''joe .alias'''
 
     IW  .alias (Modified)                                                    Row 4    Col 1   
 
     IW  .alias (Modified)                                                    Row 4    Col 1   
 
  alias ping1='ping -c 1'  
 
  alias ping1='ping -c 1'  
Zeile 221: Zeile 210:
 
----
 
----
  
 +
==== Alias nutzen ====
 +
"Klopft man" mit dem Standard-Befehl ''ping'' nun bei einem [https://de.wikipedia.org/wiki/Host_(Datenbankanbieter) ''Host''] (Internetanbieter) "an", sieht das so aus:
 +
<$> holger@aelbler:~> '''ping www.xn--audiobibelne-olb.de'''
 +
PING www.xn--audiobibelne-olb.de (2a03:4000:61:63dc::19:3189) 56 Datenbytes
 +
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=1 ttl=58 Zeit=14.8 ms
 +
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=2 ttl=58 Zeit=14.4 ms
 +
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=3 ttl=58 Zeit=14.6 ms
 +
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=4 ttl=58 Zeit=14.7 ms
 +
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=5 ttl=58 Zeit=14.5 ms
 +
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=6 ttl=58 Zeit=14.4 ms
 +
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=7 ttl=58 Zeit=14.4 ms
 +
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=8 ttl=58 Zeit=14.4 ms
 +
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=9 ttl=58 Zeit=14.4 ms
 +
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=10 ttl=58 Zeit=14.2 ms
 +
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=11 ttl=58 Zeit=14.9 ms
 +
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=12 ttl=58 Zeit=14.7 ms
 +
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=13 ttl=58 Zeit=14.5 ms
 +
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=14 ttl=58 Zeit=14.7 ms
 +
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=15 ttl=58 Zeit=14.6 ms
 +
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=16 ttl=58 Zeit=14.4 ms
 +
... (endlos, bis händischer Abbruch!)
 +
'''^C''' (händischer Abbruch durch ''Strg + C'')
 +
--- www.xn--audiobibelne-olb.de ping-Statistik ---
 +
52 Pakete übertragen, 52 empfangen, 0% packet loss, time 51078ms
 +
rtt min/avg/max/mdev = 14.188/14.673/20.342/0.815 ms
  
 +
Nutzt Holger aber den Alias ''ping'''3''''' sieht es so aus:
 +
<$> holger@aelbler:~> '''ping3 www.xn--audiobibelne-olb.de'''
 +
PING www.xn--audiobibelne-olb.de (2a03:4000:61:63dc::19:3189) 56 Datenbytes
 +
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=1 ttl=58 Zeit=15.1 ms
 +
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=2 ttl=58 Zeit=14.6 ms
 +
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=3 ttl=58 Zeit=14.4 ms
 +
 +
--- www.xn--audiobibelne-olb.de ping-Statistik ---
 +
'''3 Pakete übertragen, 3 empfangen,''' 0% packet loss, time 2003ms
 +
rtt min/avg/max/mdev = 14.353/14.705/15.148/0.330 ms
 +
holger@aelbler:~>
  
 +
Die Millisekunden-Zeiten (ms) weichen bei dem ''ping3'' etwas ab, da die Statistik bei nur dreimaligem "Anklopfen" schlechter gemittelt ist; je häufiger der Ping abgefragt wird, desto genauer ist auch der ermittelte Wert.
  
  
  
----
 
 
Zurück zur [[Archiv|Übersicht]]
 
Zurück zur [[Archiv|Übersicht]]

Aktuelle Version vom 15. Juni 2024, 18:40 Uhr

14.06.2024 - 20:00 Uhr, Online-Stammtisch auf https://bbb.ch-open.ch/rooms/ulf-nm2-y26/join

wöchentlicher onlineStammtisch

Auf dem Stammtisch Mai 2020 beschlossener wöchentlicher Stammtisch jeden Freitag ab 20:00 Uhr anstelle des monatlichen Stammtisches im realen Leben.


Anwesende

  • Holger
  • Plocki
  • Jos
  • d'Michl
  • Ulf


Themen

Daten dem Internet anvertrauen

Michael fragt, ob jemand die Seite WeTransfer kennt. Ulf empfiehlt, generell sensible Daten nicht ins Internet hochzuladen. Holger hat das als Tool der Mailanwendung Thunderbird schon verwendet ...


Ausfall von Julians Vortrag zum Thema Effiziente Tastaturnutzung

Da Julian privat nach wie vor verhindert ist, schlägt Ulf vor, den Termin in weitere Ferne zu verschieben und er versucht, Julian privat zu erreichen. Die Termine dieser geplanten Stammtischthemen#Geplante_Themen_Stammtisch werden von Ulf geändert.


Praxis-Stammtisch?

Michael fragt, ob Interesse besteht, sich einmal wieder real zu treffen. Wir wollen dem nachgehen; und wäre gut, wenn Michael die anderen ein wenig erinnert.


Kassenprüfung-Termin am 21.06.2024

Noch mal zur Erinnerung: Nächste Woche wird endlich die Kassenprüfung abgeschlossen. Daher wäre es gut, dass möglichst viele Mitglieder anwesend sind! :-)


Praxis-Übung zum Vortrag Plockis vom 07.06.2024

Hier noch einmal das Skript zu Plockis Vortrag und das Video:

  1. Skript: Skript Shelleinführung
  2. Video: Kleine Shelleinführung

Holger fragt, wie er sich einen Alias erstellen kann. Denn die können, wie wir letzte Woche ja gehört haben, das Arbeiten an der Konsole schon stark vereinfachen. Wie das geht, hat Plocki letzte Woche wohlweislich noch nicht erwähnt, da es je nach genutzter Shell und auch in Abhängigkeit von der genutzten Distribution unterschiedlich gehandhabt werden kann.

Holger teilt den Bildschirm und lässt sich das an der Konsole etwas erklären.

Zunächst möchte Ulf, dass er mit dem Befehl cat die (versteckte) Datei .bashrc öffnet. Was macht der Befehl cat? Siehe hier: Wiki Ubuntuusers cat.

Die Ausgabe sieht auf Holgers openSUSE Tumbleweed so aus:

<$> holger@aelbler:~> cat .bashrc
# Sample .bashrc ['rc' steht (vermutlich) für 'resource' = Systemdateien werden beim Start eines Terminals verändert]
# Copyright (c) SUSE Software Solutions Germany GmbH

# There are 3 different types of shells in bash: the login shell, normal shell
# and interactive shell. Login shells read ~/.profile and interactive shells
# read ~/.bashrc; in our setup, /etc/profile sources ~/.bashrc - thus all
# settings made here will also take effect in a login shell.
#
# NOTE: It is recommended to make language settings in ~/.profile rather than
# here, since multilingual X sessions would not work properly if LANG is over-
# ridden in every subshell.

# Include local und sik Linux/Skripte/ path
test -d ${HOME}/Linux/Skripte/ && test $(echo ${PATH} | grep ${HOME}/Linux/Skripte/) || export PATH=${PATH}:${HOME}/Linux/Skripte/

# change dir
alias dir="ls -ahl"
test -s ~/.alias && . ~/.alias || true

export EDITOR=/usr/bin/joe
holger@aelbler:~> cat .alias

Da heißt es (unter anderem) ins Deutsche übersetzt (mit https://deepl.com):

"Es gibt 3 verschiedene Arten von Shells in der Bash: die Login-Shell, die normale Shell
und die interaktive Shell. 

Login-Shells lesen ~/.profile
und interaktive Shells lesen ~/.bashrc. 

In unserem Fall ist /etc/profile der Quellcode von ~/.bashrc - daher werden alle
Einstellungen, die hier vorgenommen werden, auch in einer Login-Shell wirksam werden.

HINWEIS: Es wird empfohlen, die Spracheinstellungen in ~/.profile und nicht # hier vorzunehmen,
da mehrsprachige X-Sitzungen nicht richtig funktionieren würden, wenn LANG in jeder # Subshell überschrieben würde."

Da Holger bislang keine (versteckte) Datei mit Namen .alias angelegt und definiert hat, wird sie auch nicht gefunden.

<$> cat .alias
cat: .alias: Datei oder Verzeichnis nicht gefunden

Die (versteckte) Datei .alias

Nun war die Ursprungsfrage ja, wie Holger eine Alias-Datei (.alias) anlegen kann; in dieser können Befehle / Shortcuts hinterlegt, aber eben auch verändert, beziehungsweise neue Shortcuts (Pseudonyme / Platzhalter) erstellt werden. So können längere, umständlich zu tippende Befehle durch Aliasse ersetzt werden.

Dazu öffnet Holger den Editor Joe (jeder andere wäre auch möglich, weicht dann aber in der Bedienung ab).

<$> joe .alias

Die Datei wird aber erst "angelegt", wenn sie auch gespeichert wurde!

Holger verlässt den Editor mittels Shortcut Strg + K, gefolgt von einem Q (Quit / Verlassen) wieder, wonach er gefragt wird, ob er die Änderung (in diesem Fall einfach nur die Erstellung der Datei .alias) übernehmen möchte, was er mit Y (Yes / Ja) übernimmt.

Was Holger (jetzt beim Schreiben des Protokolls) aber noch nicht weiß, ist folgendes: Er hat zwar die Datei <$> .alias erstellt (sie konnte anfangs ja nicht aufgerufen werden), aber ...


Der Befehl alias

... es gibt auch den Befehl (keine Datei!) alias, mit dem man die vom Betriebssystem schon vorkonfigurierten Aliasse aufrufen kann, wie er zwar gleich feststellt, aber erst am nächsten Tag auch versteht. ;-)

Dieser Befehl gibt folgenden Inhalt aus:

<$> holger@aelbler:~> alias
alias +='pushd .'
alias -- -='popd'
alias ..='cd ..'
alias ...='cd ../..'
alias beep='echo -en "\007"'
alias cd..='cd ..'
alias dir='ls -ahl'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias ip='ip --color=auto'
alias l='ls -alF'
alias la='ls -la'
alias ll='ls -l'
alias ls='_ls'
alias ls-l='ls -l'
alias md='mkdir -p'
alias o='less'
alias rd='rmdir'
alias rehash='hash -r'
alias unmount='echo "Error: Try the command: umount" 1>&2; false'
alias you='if test "$EUID" = 0 ; then /sbin/yast2 online_update ; else su - -c "/sbin/yast2 online_update" ; fi'

Holgers Betriebssystem openSUSE Tumbleweed hat jedenfalls im Befehl alias schon eine Menge Pseudonyme hinterlegt.

OffTopic: Das Wort "Alias" wird laut Korrekturen.de (auch Duden) übrigens auch im Plural als "die Alias" geschrieben, darf aber auch als "die Aliasse" notiert werden Quelle: Korrekturen.de "Alias" ...


Alias hinzufügen

Nun möchte Holger einen schon bestehenden Befehl modifizieren und zu der versteckten Datei .alias hinzufügen, nämlich den Befehl ping (Wiki Ubuntuusers.de).

Ulf und Plocki erklären, wie das geht:

<$> alias ping1='ping -c 1'

Obiger Befehl erstellt einen neuen Alias mit Namen ping1 und setzt folgende Option / Parameter dahinter: <$> ping -c 1, dabei steht das "C" für count (zählen). Und die Zahl im Befehl <$> ping -c 1 – in diesem Fall die 1 – bewirkt, dass nur exakt ein Mal "angeklopft" wird.

Normalerweise würde – mit dem Standardbefehl ping – endlos "angeklopft". Und zwar so lange, bis man das mit Strg + C händisch beenden würde. Würde nun statt der 1 eine 3 gesetzt, würde beim Host – zum Beispiel www.netcup.de oder www.audiobibelneü.de – nicht nur ein-, sondern dreimal "angeklopft" werden. Aber dann ist auch Schluss.

Holger erstellt gleich noch zwei weitere Aliasse, den ping2 und ping3. Das bedeutet, dass ping1 bis ping3 nun mit Variablen definiert wurden, welche in der Datei .alias auch fest hinterlegt wurden. Sie sind jetzt jederzeit nutzbar. Also in allen drei möglichen Shells, der Login-Shell, der normalen und der interaktiven Shell.

Hätte Holger diese Aliasse nicht neu angelegt, müsste er sie jedes mal (zum Beispiel beim Öffnen eines weiteren Terminal-Unterfensters oder eines neuen Terminals) neu definieren, um sie nutzen zu können.


Kontrolle der erstellen Aliasse

Um zu kontrollieren, ob die neu angelegten Aliasse ping1 bis ping3 hinterlegt wurden, ruft Holger den Befehl alias auf und findet sie dort nun auch hinterlegt (fette Markierungen):

<$> holger@aelbler:~> alias
alias +='pushd .'
alias -- -='popd'
alias ..='cd ..'
alias ...='cd ../..'
alias beep='echo -en "\007"'
alias cd..='cd ..'
alias dir='ls -ahl'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias ip='ip --color=auto'
alias l='ls -alF'
alias la='ls -la'
alias ll='ls -l'
alias ls='_ls'
alias ls-l='ls -l'
alias md='mkdir -p'
alias o='less'
alias ping1='ping -c 1'
alias ping2='ping -c 2'
alias ping3='ping -c 3'
alias rd='rmdir'
alias rehash='hash -r'
alias unmount='echo "Error: Try the command: umount" 1>&2; false'
alias you='if test "$EUID" = 0 ; then /sbin/yast2 online_update ; else su - -c "/sbin/yast2 online_update" ; fi'
holger@aelbler:~>

Auch wenn Holger aus dem grafischen Terminal (das ist bei ihm unter openSUSE Tumbleweed die Konsole TTY2) in die Login-Shell, die TTY1 wechselt, und dort den Befehl alias aufruft, findet er die drei neuen Einträge. :-)

Bei Holger (openSUSE Tumbleweed) wird der Wechsel von der grafischen Ebene (TTY2) in die Login-Shell mit dem Tastaturkürzel Strg + Alt + F1 vollzogen; zurück in die grafische Ebene geht es dann wieder mit Strg + Alt + F2.

Unter anderen Distributionen kann das auch abweichen; siehe zum Beispiel den Link des Ubuntu-Wiki: Virtuelle Konsole; dazu bis fast zur Mitte des Artikels scrollen und unter Virtuelle Konsole lesen.

Und nachdem Holger mit dem Joe-Editor die Variablen ebenso auch in die zuvor erstellte Datei .alias eingetragen und abgespeichert hat, sind sie auch dort hinterlegt.

<$> holger@aelbler:~> joe .alias
    IW   .alias (Modified)                                                    Row 4    Col 1   
alias ping1='ping -c 1' 
alias ping2='ping -c 2'
alias ping3='ping -c 3'

Alias nutzen

"Klopft man" mit dem Standard-Befehl ping nun bei einem Host (Internetanbieter) "an", sieht das so aus:

<$> holger@aelbler:~> ping www.xn--audiobibelne-olb.de
PING www.xn--audiobibelne-olb.de (2a03:4000:61:63dc::19:3189) 56 Datenbytes
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=1 ttl=58 Zeit=14.8 ms
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=2 ttl=58 Zeit=14.4 ms
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=3 ttl=58 Zeit=14.6 ms
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=4 ttl=58 Zeit=14.7 ms
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=5 ttl=58 Zeit=14.5 ms
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=6 ttl=58 Zeit=14.4 ms
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=7 ttl=58 Zeit=14.4 ms
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=8 ttl=58 Zeit=14.4 ms
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=9 ttl=58 Zeit=14.4 ms
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=10 ttl=58 Zeit=14.2 ms
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=11 ttl=58 Zeit=14.9 ms
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=12 ttl=58 Zeit=14.7 ms
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=13 ttl=58 Zeit=14.5 ms
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=14 ttl=58 Zeit=14.7 ms
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=15 ttl=58 Zeit=14.6 ms
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=16 ttl=58 Zeit=14.4 ms
... (endlos, bis händischer Abbruch!)
^C (händischer Abbruch durch Strg + C)
--- www.xn--audiobibelne-olb.de ping-Statistik ---
52 Pakete übertragen, 52 empfangen, 0% packet loss, time 51078ms
rtt min/avg/max/mdev = 14.188/14.673/20.342/0.815 ms
Nutzt Holger aber den Alias ping3 sieht es so aus:
<$> holger@aelbler:~> ping3 www.xn--audiobibelne-olb.de
PING www.xn--audiobibelne-olb.de (2a03:4000:61:63dc::19:3189) 56 Datenbytes
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=1 ttl=58 Zeit=15.1 ms
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=2 ttl=58 Zeit=14.6 ms
64 Bytes von 2a03:4000:61:63dc::19:3189: icmp_seq=3 ttl=58 Zeit=14.4 ms

--- www.xn--audiobibelne-olb.de ping-Statistik ---
3 Pakete übertragen, 3 empfangen, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 14.353/14.705/15.148/0.330 ms
holger@aelbler:~> 

Die Millisekunden-Zeiten (ms) weichen bei dem ping3 etwas ab, da die Statistik bei nur dreimaligem "Anklopfen" schlechter gemittelt ist; je häufiger der Ping abgefragt wird, desto genauer ist auch der ermittelte Wert.


Zurück zur Übersicht