{"id":1475,"date":"2024-07-03T08:00:00","date_gmt":"2024-07-03T06:00:00","guid":{"rendered":"https:\/\/www.fuhselab.de\/?p=1475"},"modified":"2025-05-27T13:37:34","modified_gmt":"2025-05-27T11:37:34","slug":"standardkanaele","status":"publish","type":"post","link":"https:\/\/www.fuhselab.de\/index.php\/2024\/07\/03\/standardkanaele\/","title":{"rendered":"Standardkan\u00e4le"},"content":{"rendered":"\n<p>Im vergangenen Artikel ging es auch um das grep-Kommando. In diesem Artikel werden die Standardkan\u00e4le etwas genauer betrachtet und die Eingabe- und Ausgabeumlenkung\u2026<\/p>\n\n\n\n<!--more-->\n\n\n\n<p><strong>Die Standardkan\u00e4le:<\/strong><\/p>\n\n\n\n<p>Viele Linux-Kommandos \u2013 wie etwa grep \u2013 sind so gebaut, dass sie Eingabedaten lesen, diese dann irgendwie manipulieren und dann das Ergebnis ausgeben.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>grep xyz<\/li>\n<\/ul>\n\n\n\n<p>Wird dieser Befehl im Terminal eingetippt, dann k\u00f6nnen anschlie\u00dfend Textzeilen im Terminal eingegeben werden und grep l\u00e4sst nur noch die mit der vorgegebenen Zeichenkette durch. Erkennbar wird das daran, dass im Terminal die Zeichenfolge (hier xyz) zus\u00e4tzlich farbig hervorgehoben dargestellt wird\u2026<\/p>\n\n\n\n<p>Mit Tastenkombination \u201cSTRG\u201c und \u201cd\u201c wir die Eingabe beendet. Die Standard-Eingabe ist die Tastatur. Die Standard-Ausgabe ist der Bildschirm (Konsole\/Terminal) Der dritte Standardkanal ist die Fehlerausgabe.<\/p>\n\n\n\n<p><strong>Standardkan\u00e4le umleiten:<\/strong><\/p>\n\n\n\n<p>Am Beispiel des Befehls \u201cuname -a\u201c soll nun eine Umleitung in eine Datei realisiert werden. Zur Erinnerung: uname -a zeigt uns die aktuelle Kernelversion und wird standardm\u00e4\u00dfig im Terminal ausgegeben\u2026<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>uname -a &gt; version.txt<\/li>\n<\/ul>\n\n\n\n<p>Wenn alles funktioniert hat, sollte es in unserem home-Verzeichnis jetzt die Datei \u201cversion.txt\u201c geben und die Ausgabe wurde als Inhalt in die Datei geschrieben. Aufpassen sollte man nur, dass es den hier gew\u00e4hlten Dateinamen am Zielort noch nicht gibt, denn sonst w\u00fcrde der Inhalt \u00fcberschrieben\u2026 Wer sich die Textdatei jetzt auch im Terminal anschauen m\u00f6chte, kann das mit dem less-Befehl machen\u2026<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>less version.txt<\/li>\n<\/ul>\n\n\n\n<p>Der Lesemodus wird mit \u201cQ\u201c beendet. Sollen jetzt Daten der bestehenden Datei zugef\u00fcgt werden, bietet sich folgender Befehl an.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>uname -a &gt;&gt; version.txt<\/li>\n\n\n\n<li>uname -m &gt;&gt; version.txt<\/li>\n<\/ul>\n\n\n\n<p><strong>Kommandosubstitution:<\/strong><\/p>\n\n\n\n<p>Eine andere M\u00f6glichkeit zur Umleitung der Standardausgabe eines Programms bieten die \u00bbverkehrten\u00ab Anf\u00fchrungszeichen\u2026<\/p>\n\n\n\n<p>F\u00fcr die Experimente erzeugen wir die Datei \u201ctermine.txt\u201c mit folgendem Inhalt:<\/p>\n\n\n\n<p>01.01 Hans Geburtstag<\/p>\n\n\n\n<p>02.01 Klaus Geburtstag<\/p>\n\n\n\n<p>21.01 Peter Geburtstag<\/p>\n\n\n\n<p>Das letzte Datum sollte an das aktuelle Datum angepasst werden \u2013 nur dann funktioniert das Experiment\u2026<\/p>\n\n\n\n<p>Das aktuelle Datum wird mit folgendem Terminalbefehl ermittelt:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>date +%d.%m.<\/li>\n<\/ul>\n\n\n\n<p>Dieses Datum suchen wir nun in der Datei. Das Zeichen Zirkumflex sucht am Anfang der Zeile nach der angegeben Zeichenfolge. So wurde es auch im vorherigen Artikel beschrieben. Das Zirkumflex-Zeichen findet sich \u00fcbrigens links neben der Eins und danach bitte auch einmal auf die Leertaste hauen. Die verkehrten Anf\u00fchrungszeichen liegen rechts neben dem Fragezeichen und auch hier hilft ein Schlag auf die Leertaste\u2026<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>grep ^`date +%d.%m.` termine.txt<\/li>\n<\/ul>\n\n\n\n<p>Die Standardausgabe eines Kommandos, das in verkehrten Anf\u00fchrungszeichen steht, wird anstelle des Kommandoaufrufs in die Befehlszeile eingebaut; ausgef\u00fchrt wird dann das, was sich durch diese Ersetzung ergibt\u2026<\/p>\n\n\n\n<p><strong>Standardeingabe umleiten:<\/strong><\/p>\n\n\n\n<p>F\u00fcr dieses Experiment brauchen wir wieder eine neue Textdatei \u201cinfo.txt\u201c mit dem Inhalt:<\/p>\n\n\n\n<p>Es war einmal eine Prinzessin<\/p>\n\n\n\n<p>Nun lassen wir mal die W\u00f6rter z\u00e4hlen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>wc -w &lt; info.txt<\/li>\n<\/ul>\n\n\n\n<p>Das Experiment zeigt auch, dass Leerzeichen mitgez\u00e4hlt werden. Da unser Beispielsatz aus 5 W\u00f6rtern besteht, sollte auch 5 als Ergebnis im Terminal angezeigt werden. Wenn das nicht so ist, einfach die Leerzeichen am Dateiende entfernen\u2026<\/p>\n\n\n\n<p><strong>Kommando-Pipelines:<\/strong><\/p>\n\n\n\n<p>Das Pipe-Zeichen liegt zwischenShift-Taste und Y-Taste und wird \u00fcber die Tastenkombination mit \u201cAltGr\u201c aufgerufen.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ls -laF | less<\/li>\n<\/ul>\n\n\n\n<p>Mit diesem Befehl wird ein Zwischenschritt eingespart. Es wird keine Datei erzeugt, sondern per Pipeline gleich die gew\u00fcnschten Daten ausgegeben\u2026<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Im vergangenen Artikel ging es auch um das grep-Kommando. In diesem Artikel werden die Standardkan\u00e4le etwas genauer betrachtet und die Eingabe- und Ausgabeumlenkung\u2026<\/p>\n","protected":false},"author":1,"featured_media":791,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[21],"class_list":["post-1475","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux","tag-linux-gruppe-peine"],"_links":{"self":[{"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/posts\/1475","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/comments?post=1475"}],"version-history":[{"count":3,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/posts\/1475\/revisions"}],"predecessor-version":[{"id":2803,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/posts\/1475\/revisions\/2803"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/media\/791"}],"wp:attachment":[{"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/media?parent=1475"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/categories?post=1475"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/tags?post=1475"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}