{"id":21230,"date":"2025-11-09T20:51:03","date_gmt":"2025-11-09T19:51:03","guid":{"rendered":"https:\/\/linux-bibel.at\/?p=21230"},"modified":"2025-11-12T05:58:16","modified_gmt":"2025-11-12T04:58:16","slug":"die-shell-working-in-a-coalmine-teil-1","status":"publish","type":"post","link":"https:\/\/linux-bibel.at\/index.php\/2025\/11\/09\/die-shell-working-in-a-coalmine-teil-1\/","title":{"rendered":"die shell &#8212; working in a coalmine Teil 1"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Die shell, das terminal, das schwarze Fenster oder nur xterm  wie auch immer man es bezeichnen will, wir wollen \u00fcber jenen Befehlsinterpreter sprechen mit dem man unglaublich viel anstellen kann. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Er ist immer aktiv und   braucht keine Grafik, kommt mit ein paar KB-Speicher aus und kann uns ungemein helfen. Zur Shell gibt es ein paar build-in Befehle und ungemein viele Befehle die als eigenst\u00e4ndige Programme vorliegen. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In diesem Beitrag m\u00f6chte ich ein paar Kommandos die in jedem System vorhanden sind unter die Lupe nehmen. Damit es einen Mehrwert hat, basteln wir uns daraus ein Telefonbuch In den nachfolgenden Beitr\u00e4gen werden wir das Telefonbuch erweitern. Mal sehen was daraus wird. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Liste der Standardkommandos <\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Aber schauen wir uns die Kommandos an:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>grep      sucht einen Begriff in einer Datei<\/li>\n\n\n\n<li>cat         zeigt den Inhalt einer Datei<\/li>\n\n\n\n<li>tr            ersetzt in einem String einen Begriff<\/li>\n\n\n\n<li>cut          schneidet einen Teil eines Strings aus<\/li>\n\n\n\n<li>sort        sortiert eine Liste<\/li>\n\n\n\n<li>echo      Ausgabe einer Variablen oder eines Strings<\/li>\n\n\n\n<li>expr       Anweisung, dass man etwas rechnen will.<\/li>\n\n\n\n<li>set          Variable inhalte setzen oder Traces aktivieren. <\/li>\n\n\n\n<li>tail          das Ende einer Datei oder Liste anzeigen. <\/li>\n\n\n\n<li>head       den Anfang einer Liste oder Datei anzeigen. <\/li>\n\n\n\n<li>date        Datum und Uhrzeit setzen oder anzeigen. <\/li>\n\n\n\n<li>bc             Taschenrechner<\/li>\n\n\n\n<li>diff            2 Dateien vergleichen <\/li>\n\n\n\n<li>mkdir       Verzeichnis anlegen.<\/li>\n\n\n\n<li>rmdir        verzeichnis l\u00f6schen<\/li>\n\n\n\n<li>rm              Datei l\u00f6schen<\/li>\n\n\n\n<li>cd               wechseln in ein Verzeichnis<\/li>\n\n\n\n<li>df               Plattenbelegung anzeigen. <\/li>\n\n\n\n<li>du              Belegung von Verzeichnissen und Dateien<\/li>\n\n\n\n<li>wc              z\u00e4hlen von Bytes und Zeilen.<\/li>\n\n\n\n<li>ls                Ausgabe von Verzeichnisinhalten<\/li>\n\n\n\n<li>find            Suchen von Dateien. <\/li>\n\n\n\n<li>file              Art der Datei <\/li>\n\n\n\n<li>sum           Pr\u00fcfsumme \u00fcber eine Datei bilden. <\/li>\n\n\n\n<li>more         seitenweise Ausgabe<\/li>\n\n\n\n<li>cp               kopie einer Datei<\/li>\n\n\n\n<li>tar              Sicherungsmethode<\/li>\n\n\n\n<li>cpioc          Sicherungsmethode<\/li>\n\n\n\n<li>vi, ed, vim  Editoren<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Testdaten<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">als erstes brauchen wir f\u00fcr unser  Telefonbuch Daten. Wir legen uns eine Textdatei im Home-Verzeichnis an. Nennen wir sie telefonbuch.txt. Mit dem Editor eurer Wahl schreiben wir in die Datei.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Feuerwehr;122; moedling@feuerwehr.at<br>Polizei;133;moedling@polizei.at<br>Rettung;144;baden@rettung.at<br>meine_telefonnummer;+43-1234-56789;juhu01@gmx.at<br>deine_anschrift;;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wir speichern diese Datei und wollen jetzt damit beginnen damit zu arbeiten. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dazu starten wir ein Terminal und tippen ein <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat telefonbuch.txt<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Wir erhalten eine Liste des Dateiinhaltes so wie wir ihn eingetippt haben.  Wenn wir diese Liste sortier haben wollen, dann k\u00f6nnen wir die Ausgabe als Eingabe bei der Sortierung verwenden.  Eine Ausgabe weiterleiten erfolgt mit dem Zeichen | (Pipe) <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat telefonbuch.txt | sort  <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">und schon ist es nach Namen sortiert. Jetzt wollen wir es nach Telefonnummer sortieren und erg\u00e4nzen unser Kommando um den Parameter -t und -k . Wenn man in den man-\u00dcages nachschaut finden man unter -t die Feldtrennung und unter -k das Feld.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat telefonbuch.txt | sort -t \";\" -k 2<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">und schon ist unsere Liste nach Telefonnummern sortiert. Nat\u00fcrlich eine 3 und es w\u00e4re nach der e-Mail sortiert.  Wenn ich mehrere Felder sortieren m\u00f6chte kann ich es in Form von -k 2,1 angeben. Dann wird es zuerst nach Telefonnummer, dann nach Namen sortiert.  Ihr seht, es ist keine Hexerei <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Gehen wir zum n\u00e4chsten Befehl dem grep. Grep sucht mir aus einer Liste nur jene Begriff die mit dem Suchbegriff \u00fcbereinstimmen. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat telefonbuch.txt | grep \"Feuer\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Alles was mit &#8222;Feuer&#8220; beginnt wird gefunden. Wenn ich feuer und Feuer suche dann sage ich grep mit -i ignoriere die Gro\u00df- und Kleinschreibung. Mit einem -v soll grep alles liefern au\u00dfer &#8222;Feuer&#8220; <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat telefonbuch.txt | grep -i -v \"feuer\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Auch bei vielen 1000 Datens\u00e4tzen w\u00fcrde sich das im Millisekundenbereich bewegen. Wenn ihr wissen wollt, wie lange ein Befehl braucht, schreibt einfach ein den Begriff time davor <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vielleicht ist es aufgefallen, dass ich des \u00f6fteren etwas unter &#8222;&#8220; Anf\u00fchrungszeichen geschrieben habe. Die shell hat einen Haufen reservierte Zeichen die eine Sonderbedeutung haben. Eines ist der ;  als Trennzeichen zwischen 2 Kommandos.  Wenn ich jetzt das Zeichen expliziert suche\/verwende dann muss ich das der shell sagen. Dazu kann man das Anf\u00fchrungszeichen nutzen. Wir werden sp\u00e4ter noch weitere kennen lernen.  <br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Als letzten Befehl f\u00fcr heute wollen wir uns noch den Befehl cut ausschneiden, anschauen<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat telefonbuch.txt | grep -i -v \"feuer\" | cut -d\";\" -f3-3<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">-d ist unser Trennzeichen der ; und wir wollen das 3 Feld haben. Profis wie wir sind haben wir das sofort durchschaut. Wenn wir jetzt nur den Mailnamen ohne Domaine haben wollen dann h\u00e4ngen wir einfach ein weiteres cut an .<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">cat telefonbuch.txt | grep -i -v &#8222;Feuer&#8220; | cut -d&#8220;;&#8220; -f3 | cut -d&#8220;@&#8220; -f1-1 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">und wenn wir jetzt nur die ersten 4 buchstaben haben wollen dann k\u00f6nnen wir es mit der Option -c1-4 machen. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Klassifizierung-<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Einf\u00fchrung in das Scripten\/Shell<\/li>\n\n\n\n<li>ungef\u00e4hrlich<\/li>\n\n\n\n<li>EDV Grundwissen von Vorteil<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n<div class=\"pld-like-dislike-wrap pld-custom\">\r\n    <div class=\"pld-like-wrap  pld-common-wrap\">\r\n    <a href=\"javascript:void(0)\" class=\"pld-like-trigger pld-like-dislike-trigger  \" title=\"Gef\u00e4llt mir\" data-post-id=\"21230\" data-trigger-type=\"like\" data-restriction=\"cookie\" data-already-liked=\"0\">\r\n                            <img src=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/12\/Daumen-Hoch.png\" alt=\"Gef\u00e4llt mir\" \/>\r\n            <\/a>\r\n    <span class=\"pld-like-count-wrap pld-count-wrap\">12    <\/span>\r\n<\/div><div class=\"pld-dislike-wrap  pld-common-wrap\">\r\n    <a href=\"javascript:void(0)\" class=\"pld-dislike-trigger pld-like-dislike-trigger  \" title=\"Gef\u00e4llt mir nicht\" data-post-id=\"21230\" data-trigger-type=\"dislike\" data-restriction=\"cookie\" data-already-liked=\"0\">\r\n                            <img src=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/12\/Daumen-Runter.png\" alt=\"Gef\u00e4llt mir nicht\" \/>\r\n            <\/a>\r\n    <span class=\"pld-dislike-count-wrap pld-count-wrap\">1<\/span>\r\n<\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Die shell, das terminal, das schwarze Fenster oder nur xterm wie auch immer man es bezeichnen will, wir wollen \u00fcber jenen Befehlsinterpreter sprechen mit dem man unglaublich viel anstellen kann. Er ist immer aktiv und braucht keine Grafik, kommt mit ein paar KB-Speicher aus und kann uns ungemein helfen. Zur Shell gibt es ein paar [&hellip;]<\/p>\n","protected":false},"author":52,"featured_media":21273,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,61,17,4],"tags":[1442],"class_list":["post-21230","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-allgemein","category-scripts","category-system","category-terminal","tag-einfuehrung-in-das-scripten-shell"],"_links":{"self":[{"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/posts\/21230","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/users\/52"}],"replies":[{"embeddable":true,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/comments?post=21230"}],"version-history":[{"count":3,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/posts\/21230\/revisions"}],"predecessor-version":[{"id":21242,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/posts\/21230\/revisions\/21242"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/media\/21273"}],"wp:attachment":[{"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/media?parent=21230"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/categories?post=21230"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/tags?post=21230"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}