Mi tema terminal solía ser así,
Pero pensé que el aviso desperdiciaba mucho espacio. Y luego tuve la idea de que podía limpiar el mensaje cada vez que ejecutaba un comando. Estaba usando bash, una de las soluciones es usar la preexec_invoke_exec
función.
Uso el siguiente comando para limpiar los últimos caracteres de solicitud:
echo -ne "\033[1A\033[K\033[1A\033[K\033[31;1m$ \033[0m"
Para que la terminal esté muy limpia, así,
Pero ahora mi problema es que habrá un problema si quiero usar comandos múltiples en una línea , digamos, cuando lo use for i in ...
.
Aquí está la versión completa de la función en mi .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 su función, la salida de los comandos iterativos se "traga", por así decirlo. Por lo tanto, OP quería desinfectar el comportamiento mientras habilitaba ese aviso. La razón por la que apoyo esto es el interés por la conciencia en el shell, la usabilidad, la retroalimentación y la portabilidad. El enlace que había puesto en mi comentario anterior conduce a la publicación en superusuario: se tomaron la molestia de atribuir este fragmento, por lo que es un prototipo que emula la funcionalidad nativa de zsh (que creo que es interesante), en forma de una función de captura aquí.