Моя тема терміналу раніше була такою,
Але я думав, що підказка витрачає стільки місця. А згодом у мене з’явилося уявлення, що я можу прибирати підказку кожного разу, коли виконую команду. Я використовував bash, одним із рішень є використання preexec_invoke_exec
функції.
Я використовую таку команду для очищення останніх символів підказок:
echo -ne "\033[1A\033[K\033[1A\033[K\033[31;1m$ \033[0m"
Так що термінал дуже чистий, як це,
Але тепер моя проблема полягає в тому, що буде проблема, якщо я хочу використовувати кілька команд в одному рядку , скажімо, коли я використовую for i in ...
.
Ось повна версія функції в моєму .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
його функцією, вихід команд ітерації стає «проковтнутим», так би мовити. Тож ОП хотіла санітувати поведінку, вмикаючи це. Причиною, чому я підтримую це, є інтерес до обізнаності в оболонці, зручності використання, зворотного зв'язку та портативності. Посилання, яке я виклав у своєму попередньому коментарі, веде до публікації про суперпользователя - вони вирішили приписати цей фрагмент, тому це прототип, який імітує нативну функціональність zsh (що, на мою думку, цікаве), у вигляді функції пастки тут.