Как изменить цвета в подсказке bash [duplicate]

Если вы хотите что-то под ключ, Synergy должен сделать трюк. Я никогда не использовал его только в одной коробке, через X сеансов. Он работает, чтобы разделить буфер обмена между отдельными машинами, поэтому было бы удивительно, если бы из-за недостатка дизайна или удобства использования он не работал для вас.

Также: для ваших vms у них есть сборки Synergy .

1
задан 21 September 2015 в 00:08

1 ответ

Вот один мой друг, над которым я работаю. Он дает серой пунктирной линии, когда вы обычный пользователь, а затем, если вы выполняете команды как пользователь root, он меняется на красный как на пунктирную линию, так и на текст.

[d4 ] В файле .bashrc добавьте следующий код в конец файла:

if [ -f "$HOME/.bash_ps1" ]; then
    . "$HOME/.bash_ps1"
fi

EDIT: Также добавьте его в нижней части /root/.bashrc. Это происходит, если вы переключитесь на пользователя root, выпустив команду sudo su -. (Остальная часть редактирования продолжается ниже кода)

Затем скопируйте и вставьте остальную часть этого кода в новый файл с именем /home/<username>/.bash_ps1

# Fill with minuses
# (this is recalculated every time the prompt is shown in function prompt_command):
fill="--- "

reset_style='\[\033[00m\]'

# determine if root or not
a=$(id|awk -F\( '{print $1}')
if [ "$a" = "uid=0" ]
then
    # for root
    status_style=$reset_style'\[\033[1;31m\]' # bold red; use 0;37m for lighter color
    command_style=$reset_style'\[\033[1;31m\]' # bold red
else
    # for other users
    status_style=$reset_style'\[\033[0;90m\]' # gray color; use 0;37m for lighter color
    command_style=$reset_style'\[\033[1;29m\]' # bold black
fi
prompt_style=$reset_style

# Prompt variable:

PS1="$status_style"'$fill $(date +"%m/%d/%y ")\t\n'"$prompt_style"'${debian_chroot:+($debian_chroot)}\u@\h:\w\$'"$command_style "

# Reset color for command output
# (this one is invoked every time before a command is executed):
trap 'echo -ne "\033[00m"' DEBUG

function prompt_command {
# create a $fill of all screen width minus the time string and a space:
let fillsize=${COLUMNS}-18
fill=""
while [ "$fillsize" -gt "0" ]
do
    fill="-${fill}" # fill with underscores to work on
    let fillsize=${fillsize}-1
done

# If this is an xterm set the title to user@host:dir
case "$TERM" in
    xterm*|rxvt*)
    bname=$(basename "${PWD/$HOME/~}")
    echo -ne "\033]0;${bname}: ${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"
    ;;
    *)
    ;;
esac
}

PROMPT_COMMAND=prompt_command

EDIT: Теперь создайте ссылку на .bash_ps1 в папке /root

sudo -s
cd /root
ln -s /home/<username>/.bash_ps1

Вы можете изменить любой из приведенных выше кодов в соответствии с вашими потребностями. Это тот, который я использую на самом деле на работе, поэтому я знаю, что я набираю команды в качестве пользователя root, который может быть потенциально опасным. Кроме того, метка времени появляется чуть выше каждой строки, которую вы вводите, что делает ее немного легче, если вы прокрутите назад, чтобы увидеть, когда вы ввели эту команду.

Надеюсь, это поможет!

10
ответ дан 23 May 2018 в 17:18
  • 1
    Кажется, работает =) – A.B. 20 September 2015 в 20:25
  • 2
    Мне нравится этот, хорошо! – kos 20 September 2015 в 21:07
  • 3
    Это не сработало для меня; текст белый с нормальными привилегиями (как и должно быть), но нормальный цвет (светло-белый), когда я root – Promille 20 September 2015 в 22:07
  • 4
    @Wildcard Извините, я пропустил эту часть, если вы набрали sudo su -, чтобы переключиться на пользователя root. Обычно я не делаю полного переключения на root, поэтому я пропустил эту часть. Но я сделал изменения, так что теперь это работает. – Terrance 20 September 2015 в 23:29

Другие вопросы по тегам:

Похожие вопросы: