Можно ли вставить разделитель после команды в приглашении? Вот пример:
~/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:
В частности, я хочу добавить часть --------- после выдачи команды, чтобы было легче отличить команду от результата.
решение1
В 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
написано "докаждую простую команду».
решение2
Если вы используете bash или ksh в качестве оболочки, вы можете создать функцию в одном из dotfile-файлов (.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
между элементами в операторе цикла. Это значительно упрощает чтение выходных данных скрипта.