Linux-Befehle

Bash Tac-Befehl

Bash Tac-Befehl
Tac ist einer dieser Befehle, die Sie erst erkennen, wenn Sie es bereits getan haben und das Rad neu erfunden haben, was in der Programmierpraxis nicht ungewöhnlich ist, egal ob Sie gerade erst die Seile erlernen oder ein Profi mit jahrelanger Erfahrung sind prahle, du bist großartig. Wenn deine Hände sauber sind, dann gut für dich; So oder so, Sie werden sich freuen, ich werde alles, was ich über das Tac-Kommando weiß, ausladen und mehr. Weiter lesen.

Auch bekannt als reverse cat, tac ist ein einfaches Befehlszeilen-Dienstprogramm, mit dem Sie Zeilen in der Ausgabe mit dem Befehl | . umkehren können eingebauter Pfeifenoperator und Tac. Das heißt, wenn Sie einen Befehl auf der linken Seite (lhs) haben und den Inhalt seiner Ausgabe umkehren möchten, müssen Sie nur lhs | . eingeben tac. Das ist es!

Zugegeben, es gibt mehr zu takten, als man auf den ersten Blick sieht. Mach dir keine Sorgen. Wir decken alles rechtzeitig ab.

Tipps zur Taktik

Nutzen oder nicht nutzen, das ist hier die Frage. Du wirst nicht, du willst nicht tac, wenn du nicht musst. Wenn Sie jedoch Tac als Ihren Brot-und-Butter-Befehl verbreiten möchten, liegt das an Ihnen. In der Zwischenzeit ist hier mein Ratschlag, beide Seiten zu taktieren, um neutral zu bleiben.

Wann sollte man tac . verwenden?

Es gibt Zeiten, in denen Sie tac verwenden können, um mehr aus der Befehlszeile herauszuholen, mit weniger Code und weniger Zeit für die Suche nach lhs-Befehlsoptionen.

Wenn Sie sich über die Optionen von lhs . nicht sicher sind

Viele Befehle wie sort haben eine Option, um die Ausgabe eines Befehls umzukehren. Wenn Sie sich jedoch nicht sicher sind, ob ein Befehl auf der linken Seite eine Option -r zum Umkehren der Ausgabe hat oder nicht, ist die Verwendung von tac eine sichere Möglichkeit, die Ausgabezeilen umzukehren.

Wenn Leistung keine Rolle spielt

Obwohl unbedeutend, funktionieren die meisten Befehle, die in Verbindung mit einer integrierten Option zum Umkehren der Ausgabe verwendet werden, besser als die Ausgabe an tac . weiterzuleiten. Wenn also eine kleine Leistungsverzögerung kein Problem ist, ist es in Ordnung, die Ausgabe in den Tac zu leiten, um die Ausgabe umgekehrt wiederzugeben.

Wann sollte man Tac nicht verwenden?

Es gibt Zeiten, in denen Sie Tac möglicherweise nicht verwenden, weil Sie es besser wissen. Hier sind ein paar zu beachten.

Wenn Sie wissen, dass der Befehl auf der linken Seite eine Option zum Umkehren von Ausgabezeilen hat

Wie ich schon sagte: „Die meisten Befehle verfügen über eine Option zum Umkehren der Ausgabe.” Wenn Sie wissen, dass ein bestimmter lhs-Befehl eine Option hat, dürfen Sie tac nicht verwenden. Schließlich ist -r kürzer als - | tac.

Wenn Leistung zählt

Wie ich schon sagte: „Die Verwendung der linken Reverse-Option kann eine bessere Leistung erbringen als tac.” Wenn Sie ein paar Sekunden in einem Bash-Skript herausquetschen möchten oder mit größeren Dateien zu tun haben, deren Lesen Zeit benötigt, können Sie tac nicht verwenden.

Tac-Hilfe

Das Ausführen des Befehls help für tac oder man tac zeigt die Verwendung zusammen mit den Optionen, die verwendet werden können. Hier ist, was Sie erwartet.

Befehle

tac --help

Ausgabe

Tac-Version

Welche Version bin ich??
Du bist die neueste Version von dir. Für die Version Ihres Tacs gibt es jedoch eine Option dafür.

Befehle

tac --version

Ausgabe

Anmerkungen

Wenn Sie tac unter FreeBSD oder macOS verwenden, ist die lange Option für die Version möglicherweise nicht verfügbar. Versuchen Sie in diesem Fall -v oder man tac. Wenn du es probiert hast, lass es mich wissen. Ich bin neugierig. Vielen Dank

Tac-Optionen

Neben Hilfe und Version hat tac nicht viele Optionen. Für das, was es hat, werden Sie sicher feststellen, dass Tac nicht nur eine alte umgekehrte Katze ist.

Tac vor Option

Mit der Option -b können Sie ändern, wie das Trennzeichen in der Ausgabe angehängt wird. Standardmäßig wird das Newline-Trennzeichen nach jeder Zeile angehängt.

Ich weiß, es ist verwirrend. Lass es uns anhand eines Beispiels aufschlüsseln.

Sehen wir uns zuerst an, wie unsere Ausgabe aussieht, bevor wir tac -b . verwenden.

Befehle

sequenz 10

Ausgabe

Sehen wir uns nun an, was unsere Ausgabe nach der Verwendung von tac ohne -b . wird.

Befehle

seq 10 | tac

Ausgabe

Sehen wir uns nun an, was die Ausgabe mit tac -b . wird.

Befehle

seq 10 | tac -b

Ausgabe

Tac-Trennzeichen-Option

Mit der Trennoption -s 'literal string' können Sie das Zeichen oder die Zeichenfolge angeben, die von tac verwendet werden, um Zeilen zu unterscheiden. Standardmäßig wird das Newline-Zeichen ('0a' in Hex) verwendet.

Wie man die Tac-Trennungsoption verwendet, ist zunächst nicht offensichtlich obvious. Sobald Sie jedoch wissen, dass es da ist, ist es schwer, es nicht zu verwenden.

Betrachten Sie das folgende Beispiel, das auf Linien arbeitet, die in hex dargestellt sind.

Befehle

Folge 20 | xxd -ps | tac -s '0a' | xxd -ps -r

Ausgabe

Anmerkungen

(1) Es mag trivial erscheinen, wenn man die seq 20 | tac-Befehl, in diesem Fall haben wir jedoch keine Zeit damit verbracht, am Ausgabestream in Hex zu arbeiten. Die Verwendung dieses Musters ist nützlich, wenn das Trennen nicht so trivial ist wie das neue Zeilenzeichen wie das nullte Byte.

Versuchen Sie jetzt weniger, Tac für etwas weniger Rohes und mehr Meta wie einfaches HTML zu verwenden.

Betrachten Sie die folgende Datei.

Datei

EIN
B
C

Befehle

file () echo -e " A
B
C
" ;
Datei | tac-s"
"

Ausgabe

Wir haben es geschafft, die HTML-Seite zu konvertieren

EIN
B
C

in

C
B
EIN

mit tac.

Angenommen, Sie müssen etwas Komplizierteres tun, z. B. ein beliebiges Tag als Tac-Trennzeichen behandeln. In diesem Fall kommen Sie nicht davon, nur die Trennoption allein zu verwenden. Hier kommt die Regex-Option ins Spiel. In Kombination mit der Separatoroption können Sie mit dem tac-Befehl mehr tun, als eine Zeile in einer Datei umzukehren. Hier ist wie.

Tac-Regex-Option

Mit der Regex-Option -r -s 'regex' können Sie festlegen, dass die Trennzeichenfolge als regulärer Ausdruck behandelt werden soll.

Die Verwendung der Option tac regex ist so einfach wie das Hinzufügen der Option -r vor oder nach dem Trennzeichen.

Betrachten Sie das vorherige Beispiel mit der Option regex in Verbindung mit der Option separator. Lassen Sie uns von Tac jedes Markup-Tag als Trennzeichen behandeln.

Datei



einfache Funktionen


Funktionen sind in bash einfach. Zumindest dieser ist. Es legt eine Zeichenfolge auf den Bildschirm.


Befehle


einfache-funktion
()
Echo
so einfach wie es geht einfache-funktion

Quelle: https://temptemp3.github.io/bash-Funktionen

Befehle

Datei ()

Echo'



einfache Funktionen

Funktionen sind in bash einfach. Zumindest dieser ist. Es stellt ein
Zeichenfolge auf dem Bildschirm.

Befehle



einfache-funktion

(
)

Echo so einfach wie es geht

einfache-funktion
'

Datei | tac -r -s "]*."

Ausgabe

Wir haben es geschafft, die HTML-Seite zu konvertieren, indem wir die Datei mithilfe von HTML-Tags umkehren. Wenn man sich die Details anschaut, wird man feststellen, dass es noch nicht perfekt ist.

Tac-Befehl in reiner Bash

Hier ist eine primitive Version von Tac-Implement in reiner Bash, die die von einem lhs-Befehl eingegebenen Zeilen umkehrt. Zukünftige Versionen bleiben als Übung übrig.

#!/bin/bash
## tac
##-Version 0.0.1 - Initiale
##################################################
tac()
local -a arr
local -i i
Kartendatei arr -
i="$#arr[@]"
während [ $i -ge 0 ]
tun
echo $arr[i]
lass i-=1
getan

################################################
tac
################################################

Quelle: https://github.com/temptemp3/ba.sh/blob/master/tac.Sch

Tac-Befehl mit anderen Befehlen

Hier sind einige primitive Versionen von tac implementieren, die andere Befehle verwenden, die die von einem lhs-Befehl eingegebenen Zeilen umkehren. Zukünftige Versionen bleiben als Übung übrig.

Bevor wir beginnen, schließen Sie die Augen und denken Sie: „Was könnte verwendet werden, um eine primitive Version von Tac zu implementieren??”
Viele Befehle fallen mir ein, aber ich werde mich auf diejenigen konzentrieren, für die wir Platz haben.

gaffen

Ähnlich wie beim Tac-Befehl im reinen Bash-Beispiel würden wir zur Implementierung von Tac zuerst die gelesenen Zeilen speichern, die rückwärts wiedergegeben werden sollen, nachdem alle Zeilen gelesen wurden. So würde es mit Gawk aussehen.

 gawk ' line[++line[0]]=$(0)  END  for(i=0;i

Versuchen Sie es nun mit dem lhs-Befehl seq 10.

 seq 10 | gawk '  line[++line[0]]=$(0)  END  for(i=0;i

Wie zu erwarten ist die Ausgabe

Übungen

1. Die Funktion lhs() seq 10; listet die ganzen Zahlen 1 bis 10 auf. Schreiben Sie einen rhs-Befehl, so dass lhs | rhs entspricht 10864213579 nur mit tac (Hinweis: siehe Tac vor Optionsbeispiel)
2. Kehren Sie die Ausgabe von rhs() um find -mindepth 1 -maxdepth 1 -print0 ; mit tac (Hinweis: siehe Beispiel für Tac-Trennzeichenoption)
3. Takt verlängern.sh (im Tac-Befehl in reiner bash), um sich genau wie tac . zu verhalten. Sie müssen Optionen hinzufügen und deren Verhalten testen.
4. Implementieren Sie eine primitive Version von tac in reiner bash als rekursive Funktion.

TL;DR

Auch hier hat es mir Spaß gemacht, den Bash-Tac-Befehl zu schreiben. Nach dem Lesen hoffe ich, dass Sie zustimmen können, dass es mehr zu takten gibt, als Sie dachten. Außerdem hoffe ich, dass Sie wissen, wie nützlich der Befehl tac sein könnte, nachdem Sie versucht haben, die Dinge auf die harte Tour zu machen. Wenn es jemand schafft, eine der Übungen zu absolvieren oder Hilfe bei den Hausaufgaben braucht, lass es mich wissen. Vielen Dank,

Fügen Sie mit diesen kostenlosen Tools Mausgesten zu Windows 10 hinzu
In den letzten Jahren haben sich Computer und Betriebssysteme stark weiterentwickelt. Es gab eine Zeit, in der Benutzer Befehle verwenden mussten, um ...
Steuern und verwalten Sie Mausbewegungen zwischen mehreren Monitoren in Windows 10
Dual-Display-Maus-Manager lässt Sie die Mausbewegung zwischen mehreren Monitoren steuern und konfigurieren, indem Sie ihre Bewegungen in der Nähe der ...
Mit WinMouse können Sie die Mauszeigerbewegung auf einem Windows-PC anpassen und verbessern improve
Wenn Sie die Standardfunktionen Ihres Mauszeigers verbessern möchten, verwenden Sie Freeware WinMouse. Es fügt weitere Funktionen hinzu, damit Sie das...