Gibt es eine Möglichkeit, den Befehlsverlauf in Windows mit cmder zu filtern?

Gibt es eine Möglichkeit, den Befehlsverlauf in Windows mit cmder zu filtern?

Unter Linux kann ich etwas wie und tun, history | grep abcwodurch nur die Befehle angezeigt werden, die mit „abc“ beginnen. Unter Windows kann ich in cmder den Befehlsverlauf mit dem historyBefehl anzeigen, aber ich kann ihn nicht nach den ersten Buchstaben des Befehls filtern. Es scheint kein Äquivalent zu |und zu geben grep.

Antwort1

cat %CMDER_ROOT%\config\.history | grep abc

In Cmder::CmderSitzungen historybefindet sich ein Doskey-Makro. Die Ausgabe eines Makros kann nicht über die Pipe weitergegeben werden |, aber Sie können den Befehl verwenden, der den Inhalt des Doskey-Makros darstellt.

Referenziert: https://github.com/cmderdev/cmder/issues/1770

Antwort2

Das grobe Analogon zu grepin Windows ist findund findstr. Führen Sie also einfach history 2>&1 | find "abc"oder aushistory 2>&1 | findstr abc

Der Unterschied zwischen ihnen besteht darin, dass:

  • findunterstützt Unicode (UTF-16), aber keine regulären Ausdrücke, und findstrunterstützt reguläre Ausdrücke, aber kein Unicode
  • finderfordert Anführungszeichen um den Suchbegriff, aber findstrnicht

Warum gibt es sowohl FIND- als auch FINDSTR-Programme mit unabhängigen Funktionssätzen?

In PowerShell gibt es eine bessere Lösung:Select-String. Es unterstützt alles in findund findstrnoch viel mehr. Und es hat keine Zeilenlängenbeschränkung

verwandte Informationen