Mein Terminal-Thema war früher so:
Aber ich dachte, die Eingabeaufforderung verschwendet so viel Platz. Und später kam mir die Idee, dass ich die Eingabeaufforderung jedes Mal bereinigen könnte, wenn ich einen Befehl ausführte. Ich habe Bash verwendet. Eine Lösung besteht darin, die preexec_invoke_exec
Funktion zu verwenden.
Ich verwende den folgenden Befehl, um die Zeichen der letzten Eingabeaufforderung zu bereinigen:
echo -ne "\033[1A\033[K\033[1A\033[K\033[31;1m$ \033[0m"
Damit das Terminal so sehr sauber ist,
Aber jetzt ist mein Problem, es wird ein Problem geben, wenn ich mehrere Befehle in einer Zeile verwenden möchte , beispielsweise wenn ich sie verwende for i in ...
.
Hier ist die Vollversion der Funktion in meiner .bashrc,
preexec () { echo -ne "\033[1A\033[K\033[1A\033[K\033[31;1m$ \033[0m"; echo -n "$1"; echo -ne " \033[37;2m["; echo -n "$2"; echo -ne "]\033[0m\n"; }
preexec_invoke_exec () {
[ -n "$COMP_LINE" ] && return # do nothing if completing
[ "$BASH_COMMAND" = "$PROMPT_COMMAND" ] && return # don't cause a preexec for $PROMPT_COMMAND
local this_command=`history 1 | sed -e "s/^[ ]*[0-9]*[ ]*//g"`;
local this_pwd=`pwd`;
preexec "$this_command" "$this_pwd"
}
trap 'preexec_invoke_exec' DEBUG
zsh
...
for i in $(seq 1 10); do ls; done
mit seiner Funktion arbeiten, wird die Ausgabe der iterierenden Befehle sozusagen "verschluckt". Daher wollte OP das Verhalten bereinigen und gleichzeitig diese Eingabeaufforderung aktivieren. Der Grund, warum ich dies unterstütze, ist das Interesse an Bewusstsein für die Shell, Benutzerfreundlichkeit, Feedback und Portabilität. Der Link, den ich in meinem vorherigen Kommentar eingefügt hatte, führt zu dem Beitrag über Superuser. Sie haben sich die Mühe gemacht, dieses Snippet zuzuordnen. Es handelt sich also um einen Prototyp, der die native zsh-Funktionalität (die ich für interessant halte) in Form einer Trap-Funktion emuliert Hier.