Команда Wrap в подсказке

Можно ли вставить разделитель после команды в приглашении? Это пример:

~/Desktop: ls -al ------------------------------------- total 80 drwx------+ 6 eddie staff 204B Apr 29 16:57 . drwxr-xr-x+ 54 eddie staff 1.8K Apr 30 10:54 .. ~/Desktop: 

В частности, я хочу добавить часть ——— после выдачи команды, чтобы легче отличить команду от результата

  • Что означает% F и как я могу остановить его, это значит?
  • Стандартное завершение Zsh отлично работает, так почему люди рекомендуют загружать модуль compinit?
  • Как отобразить все команды unix, доступные в системе?
  • Сериализовать переменную оболочки в bash или zsh
  • ssh / mosh для удаленной интерактивной оболочки и выполнить определенную функцию
  • Формат запроса zsh в соответствии со значением переменной среды
  • Как скопировать / выставить многострочное выражение, которое я ввел в приглашении ZSH?
  • Лучший способ убить процессы в списке
  • 2 Solutions collect form web for “Команда Wrap в подсказке”

    В zsh вы можете определить функцию preexec для эха указанной строки перед каждой командой.

    В bash вы можете использовать ловушку DEBUG чтобы настроить крюк preexec, чтобы сделать то же самое.

    Вы определяете функцию preexec () следующим образом:

     preexec () { echo "-------------------------------"; } preexec_invoke_exec () { [ -n "$COMP_LINE" ] && return # do nothing if completing preexec } trap 'preexec_invoke_exec' DEBUG 

    См. Более подробную информацию о том, есть ли у bash крючок, который выполняется перед выполнением команды?

    Я не думаю, что это работает во всех версиях bash. На моем старом сервере Ubuntu, запускающем bash 3.2.39 (1), help trap говорит

    Если SIGNAL_SPEC является DEBUG, ARG выполняется после каждой простой команды.

    На другом сервере, запущенном bash 4.1.2 (1), говорится:

    Если SIGNAL_SPEC является DEBUG, ARG выполняется перед каждой простой командой.

    это то, что нам нужно. Поэтому убедитесь, что в вашей версии bash, help trap говорит « перед каждой простой командой».

    Если вы используете bash или ksh для своей оболочки, вы можете создать функцию в одном из ваших dotfiles (.profile, .bash_profile и т. Д.) Следующим образом:

     function hr { echo "--------------------------------------------------------------------------------" } 

    Затем вы можете добавлять его к командам всякий раз, когда вы хотите, чтобы этот разделитель использовал && или ; как разделители команд. Как в:

     bash-[534]$ hr && ls -------------------------------------------------------------------------------- ddtool_23.jnlp prtconf-pv 

    или

     bash-[536]$ hr ; ls -la -------------------------------------------------------------------------------- total 36K drwxr-xr-x 2 tim staff 4 2012-12-06 15:02 ./ drwxr-xr-x 46 tim staff 134 2013-04-30 14:59 ../ -rw------- 1 tim staff 2.7K 2012-12-06 15:00 ddtool_23.jnlp -rw-r--r-- 1 tim staff 24K 2012-12-06 15:02 prtconf-pv 

    Я делаю это. У меня есть вторая функция, которая также печатает более толстый разделитель.

     function hr2 { echo "================================================================================" } 

    Я часто использую эти функции в сценариях оболочки, чтобы обеспечить разделение на разные части скриптов, например hr2 между основными задачами, и hr между элементами в инструкции цикла. Это значительно облегчает чтение скриптов.

    Interesting Posts
    Linux и Unix - лучшая ОС в мире.