Wie leitet man die Ausgabe bestimmter Befehle mit zsh an einen Pager weiter?

Wie leitet man die Ausgabe bestimmter Befehle mit zsh an einen Pager weiter?

Ich arbeite häufig mit Subversion in der Konsole und verwende den Client svn. Eine der häufigsten Aufgaben ist das Anzeigen von svn log; die Ausgabe ist jedoch trotz der --limitOption normalerweise ziemlich umfangreich. Ich möchte die Ausgabe an meinen $PAGER(genauer gesagt less) weiterleiten, genau wie ich. Ich frage mich, ob dies mit erweiterten Vervollständigungsfunktionen git logerreicht werden kann ; d. h. immer wenn ich tippezsh

svn log path1 path2 path3<Enter>

die Rohrleitungskonstruktion wird angehängt:

svn log path1 path2 path3 | $PAGER

Für mich ähnelt dies der Funktionsweise von Aliasnamen, allerdings von der „anderen Seite“.

Ist das in zsh möglich?

Antwort1

Sie können dies mit einer Shell-Funktion tun. Fügen Sie diese einfach in Ihr ein ~/.zshrc.

svn() {
    if [ "$1" = "log" ]
    then
        command svn "$@" | less -FX
    else
        command svn "$@"
    fi
}

Ich habe das mit bashund getestet, aber es sollte mit und p4genauso funktionieren . Die Optionen geben an, dass es beendet werden soll, wenn die gesamte Datei auf den ersten Bildschirm passt, und nicht zum anderen Bildschirm wechseln soll. Dadurch sieht es so aus, als ob es überhaupt nicht verwendet wurde, wenn die Ausgabe auf einen Bildschirm passt.zshsvn-FXlessless

verwandte Informationen