Mój motyw terminalu był taki,
Ale myślałem, że szybkie marnuje tyle miejsca. Później wpadłem na pomysł, że mogę wyczyścić monit za każdym razem, gdy uruchamiam polecenie. Korzystałem z bash, jednym z rozwiązań jest użycie preexec_invoke_exec
funkcji.
Używam następującego polecenia, aby wyczyścić ostatnie znaki zachęty:
echo -ne "\033[1A\033[K\033[1A\033[K\033[31;1m$ \033[0m"
Aby terminal był bardzo czysty, taki jak ten,
Ale teraz mój problem polega na tym, że będzie problem, jeśli chcę używać wielu poleceń w jednym wierszu , powiedzmy, kiedy używam for i in ...
.
Oto pełna wersja funkcji w moim .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
jego funkcję, wynik komend iteracyjnych zostanie „połknięty”, że tak powiem. Więc OP chciał zdezynfekować zachowanie, jednocześnie umożliwiając to pytanie. Powodem, dla którego to popieram, jest zainteresowanie świadomością powłoki, użyteczność, informacje zwrotne i przenośność. Link, który umieściłem w poprzednim komentarzu, prowadzi do posta na stronie superużytkownika - zadali sobie trud przypisania tego fragmentu kodu, więc jest to prototyp, który emuluje natywną funkcjonalność zsh (co moim zdaniem jest interesujące), w postaci funkcji pułapki tutaj.