Когда я выполняюсь printf
на командной строке по некоторым причинам это включает мой текст запроса в вывод. Команда:
printf '%s\n' 'Some text'
Вывод:
' 'Some text' {~} (myusername@my-PC-name)Some text
Достаточно странно это только делает это, если я использую escape-последовательность новой строки в строке формата. Если я пропускаю это:
printf '%s' 'Some text'
Я добираюсь:
Some text
Должно быть что-то не так с тем, как моя подсказка была установкой. Ниже отрывок из моего .bashrc файла. Большая часть этого кода шла с файлом. Я удалил комментарии, которые шли с файлом и добавленными комментариями, указывающими на мои модификации:
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
case "$TERM" in
xterm-color|*-256color) color_prompt=yes;;
esac
force_color_prompt=yes
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
color_prompt=yes
else
color_prompt=
fi
fi
# I added these lines:
black="\[\033[0;30m\]"
blue="\[\033[0;34m\]"
green="\[\033[0;32m\]"
cyan="\[\033[1;36m\]"
red="\[\033[0;31m\]"
magenta="\[\033[0;35m\]"
yellow="\[\033[1;33m\]"
gray="\[\033[0;37m\]"
reset_color="\[\033[00m\]"
# end of my additions
if [ "$color_prompt" = yes ]; then
# I added the following two lines:
user_host_color="$cyan"
path_color="$yellow"
# Below is the original line assigning PS1:
# PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
# Below is my version:
PS1="${debian_chroot:+($debian_chroot)}${user_host_color}\u@\h${reset_color}:${path_color}\w${reset_color}\\$ "
# My addition below: unsetting some variables I added
unset user_host_color path_color
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt
# My addition below: unsetting variables I added
unset black blue green cyan red magenta yellow gray reset_color
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
Это приводит к цветной подсказке, которая похожа: myusername@my-PC-name:/current/path $
, где myusername
является зеленым, my-PC-name
является синим, /current/path
является желтым, и $
является зеленым.
Примечания о моей системе: Я выполняю Bash 4.3.48 на Ubuntu 16.04.3 LTS в моем Windows 10 (Осеннее Обновление Создателей) машина с помощью Windows Subsystem для Linux. Таким образом, это не полная настольная система Ubuntu, это - просто версия командной строки, доступная в Windows Store. Хотя я не уверен, имеет ли это значение для этой проблемы.