Befehl auf jede Zeile im Bash-Terminal anwenden

Befehl auf jede Zeile im Bash-Terminal anwenden

Ich habe heute zufällig das Lolcat-Paket entdeckt.

Bildbeschreibung hier eingeben

Das erste, was mir einfiel, war: Es wäre fantastisch, wenn ich alles, was von stdout kommt, über lolcat zum Terminal leiten könnte, um diese Regenbogeneffekte zu erzielen. Man stelle sich nur die Möglichkeiten für Streiche vor.

Im Wesentlichen bitte ich um eine Möglichkeit, einen Befehl auf jede Zeile anzuwenden, die aus einer Bash-Eingabeaufforderung an die Standardausgabe gesendet wird.

Antwort1

Führen Sie Bash einfach wie folgt aus:Schlag | lolcat

Antwort2

In einer Bash-Sitzung möchten Sie Folgendes tun:

exec > >(lolcat)

Ich habe das nicht installiert, aber eine ähnliche Idee:

$ date
Sun Mar 22 20:01:23 EDT 2015
$ exec > >(rev)
$ date
5102 TDE 23:10:02 22 raM nuS

Antwort3

Ich habe eine Shell-Erweiterung für den schnellsten Website-Generator der Welt erstellt, den ich mache, genanntSchick. Es hat ein Easter Egg, mit dem Sie die Lolcat-Ausgabe für die meisten Dinge aktivieren können lolcat.on(nachdem Sie die Shell beispielsweise mit gestartet haben nift sh). Sie erhalten sogar eine Regenbogenausgabe, wenn Sie die Tabulatortaste drücken, um mögliche Vervollständigungsoptionen zu erhalten. Ich bezweifle, dass Sie das mit einer der anderen vorgeschlagenen Lösungen erhalten.

Die Shell-Erweiterung ist fürf++Das ist die eingebaute Skriptsprache, diedieseFunktionen unddieseTypen verfügbar. Aber alles, was es nicht erkennt, wird als Systemaufruf mit der (wahrscheinlich primären/Standard-)Shell auf Ihrem Computer ausgeführt (deshalb wird es als Shell-Erweiterung im REPL-Shell-Modus bezeichnet).

Nift sucht nach einer Version von lolcat, die auf Ihrem Computer installiert ist, und verwendet andernfalls eine integrierte Version davon, die die schnellste der Welt sein sollte (sie ist nahezu identisch mit meiner C++-Implementierunglolcat-ccdas ist das schnellste der Welt). Ich empfehle dringend, lolcat-cc (oder eine andere Version von lolcat) über Nift zu installieren, da Sie sonst häufig für praktisch alle Systemaufrufe die ca. 5 MB große Nift-Binärdatei ausführen, anstatt einer <1 MB großen Binärdatei für lolcat.

f++ ist auch eine interessante Skriptsprache.DasSkript zum Beispiel, das 100k leere Textdateien erstellt und löscht. Auf meiner Maschine läuft dies in ~3,5 Sekunden, währendDasEin Bash-Skript, das im Wesentlichen dasselbe tut, dauert etwa 3 Minuten!! Einige der coolen Dinge, die Ihnen an diesem F++-Skript vielleicht schon aufgefallen sind, sind, dass Sie Variablen in Zeichenfolgen erweitern können, dass Sie Variablen mit Typen definieren können, dass Sie Variablen mit Funktionsaufrufen in mehrere Parameter erweitern können und dass Sie VIEL mehr als 10.000 Eingabeparameter für Funktionsaufrufe haben können (es sollten Millionen möglich sein!).

Weitere Informationen zu den Nift REPLs (einschließlich Verknüpfungen für verschiedene Plattformen) finden Sie unterHier.

Wenn Sie Shell-Variablen definieren müssen (nicht über f++, sondern über die zugrunde liegende Shell), müssen Sie Codeblöcke mit der Funktion sys/system erstellen. Sie können auf ähnliche Weise auch Codeblöcke für Lua (JIT) und ExprTk erstellen, da beide in Nift eingebettet sind. Sie können sowohl Lua als auch ExprTk verwenden, um auf f++-Variablen zuzugreifen/sie zu ändern.

So erhalten Sie diese Shell (Erweiterung). Installieren Sie Nift über einen Paketmanager oder klonen Sie es, erstellen Sie es und installieren Sie es von GitHub. Geben Sie es nift shin Ihr Terminal ein, um die Nift f++ Shell-Erweiterung zu starten, und geben Sie dann ein, lolcat.onum die Rainbow-Ausgabe einzuschalten.

verwandte Informationen