Il mio tema terminale era così,
Ma ho pensato che il prompt avesse sprecato così tanto spazio. E più tardi ho avuto l'idea che avrei potuto pulire il prompt ogni volta che ho eseguito un comando. Stavo usando bash, una delle soluzioni è usare la preexec_invoke_exec
funzione.
Uso il seguente comando per pulire i caratteri dell'ultimo prompt:
echo -ne "\033[1A\033[K\033[1A\033[K\033[31;1m$ \033[0m"
In modo che il terminale sia molto pulito, in questo modo,
Ma ora il mio problema è che ci saranno problemi se voglio usare più comandi in una riga , diciamo, quando uso for i in ...
.
Ecco la versione completa della funzione nel mio .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
con la sua funzione, l'output dei comandi iteranti viene "ingoiato" per così dire. Quindi OP ha voluto disinfettare il comportamento mentre abilitava quel prompt. Il motivo per cui sostengo questo è l'interesse per la consapevolezza nella shell, l'usabilità, il feedback e la portabilità. Il link che avevo inserito nel mio precedente commento porta al post su superutente: si sono presi la briga di attribuire questo snippet, quindi è un prototipo che emula la funzionalità zsh nativa (che ritengo interessante), sotto forma di una funzione trap Qui.