Gibt es eine Standardmethode, um die Ausgabereihenfolge eines Terminalausgangs umzukehren:
~/Developer $ command0
-bash: comman0: command not found
~/Developer $ command2
-bash: command2: command not found
~/Developer $ command3
-bash: command3: command not found
~/Developer $
würde angezeigt werden als:
~/Developer $
-bash: command3: command not found
~/Developer $ command3
-bash: command2: command not found
~/Developer $ command2
-bash: comman0: command not found
~/Developer $ comman0
Ich bin der Meinung, dass es kontraintuitiv ist, Ihre Eingabeaufforderung immer ganz unten zu haben. Eine effektivere Möglichkeit, die Ausgabe zu präsentieren, besteht darin, die Ausgabereihenfolge umzukehren. Wie kann ich das umsetzen? Speziell wo Ausgabeabschnitt des OSX-Terminalprogramms definiert?
bash
).Antworten:
In bash wird die aktuelle Eingabeaufforderung / der aktuelle Befehl oben und die Ausgabe unten angezeigt, jedoch ohne Bildlauf oder vorherige Befehle:
Diese Funktion fügt die vorherigen Befehle unten ein, aber Sie müssen jeden einzelnen Befehl einzeln weiterleiten.
exec > >(f)
Kann leider nicht helfen, da es die gesamte Bash umleitet, nicht einzelne Befehle. Hier ist die Funktion:Führen Sie dann jeden Befehl wie folgt aus:
Es speichert die Ausgabe, erstellt eine Anzahl von Leerzeilen mit der Länge + 1 und setzt die Ausgabe wieder ein. Sie können am Ende eine Zeile markieren, die eine falsche Eingabeaufforderung oder eine horizontale Linie anzeigt, wenn Sie möchten. Z.B
Als eine beschissene, aber automatische Alternative zu dieser ganzen Funktionssache können wir dem Ende unseres früheren $ PROMPT_COMMAND einen Befehl hinzufügen, der etwas willkürliche 11 Zeilen löscht:
Sie können auch verwenden
tput -S
, um mehrere binäre Aufrufe zu vermeiden.Ich habe die
$PROMPT_COMMAND
von https://github.com/swirepe/alwaysontop .quelle
Leider wird dies ziemlich schwierig sein. Das Protokoll zwischen den Anwendungen und dem OS-X-Terminal ist eine Variante des VT100 / ANSI- Terminalsteuerprotokolls, insbesondere des XTerm- Protokolls.
Dies schließt eine Reihe von Annahmen über die Bildschirmposition usw. ein, die eine Neuzuordnung auf eine Welt erfordern würden, in der die Anzeige umgekehrt war.
Schlimmer noch, alles, was Ihr Terminal-Emulator bekommt, ist eine Zeichenfolge mit Befehlen vom Typ "Setze dieses Zeichen an diese Position". Es wird kein Unterschied zwischen der Eingabeaufforderung und der Ausgabe eines von ihr ausgeführten Befehls gemacht, sodass Sie nicht für beide Teile eines tun können - zumindest nicht ohne die Mitarbeit der Shell darunter.
Die Shell und die Programme gehen davon aus, dass der Bildschirm nach oben zeigt - neue Daten unten und für immer nach unten.
Sie können Ihren Terminal-Emulator zumindest theoretisch so modifizieren lassen, dass er die Zeilen in umgekehrter Reihenfolge anzeigt - die "untere" Zeile zuerst und so weiter bis zur "oberen" Zeile am unteren Bildschirmrand.
Dies würde jedoch die Reihenfolge der Zeilen in der Befehlsausgabe umkehren, sodass der Rest des Inhalts auch rückwärts herausspringt. Wenn Sie wollten, dass die Befehle (z. B. ls, cat) "down" werden, aber die Aufforderung, "up" zu bewegen, ist das Leben schwieriger.
Ich kenne keine Software, die dies implementiert. (... aber siehe JdeBDs Kommentar dazu für einen Link zu einem.) :)
quelle
Dadurch wird die Ausgabe zwar nicht genau umgekehrt, die Eingabeaufforderung bleibt jedoch oben:
https://github.com/swirepe/alwaysontop
So verwenden Sie es:
Wenn es Ihnen gefällt, geben Sie es einfach in Ihrem .bash_profile mit so etwas wie:
quelle