Я пытаюсь настроить свой терминал, но не могу понять, как полностью завершить sh это:
В значении $ PS1 почти все уже сделано. Я сейчас работаю над PATH, который показан. Вот чего я хочу достичь:
- измените $ HOME на ~
- , если значение pwd <20 символов, оставьте это как </li>
- , если значение pwd равно > 20 символов, поставьте 10 первых символов, затем "...", затем 20 последних символов
Вот моя ошибочная функция:
PWD() {
echo "$*" |perl -pne \
's:^'"$HOME"':~:;'"$cygpwd"'s:^(.{10}).{4}.*(.{20})$:$1...$2:;'
}
Работает хорошо везде, но не удается с этой ошибкой, если я пытаюсь ввести папку с круглыми скобками:
- bash: подстановка команды: строка 1: синтаксическая ошибка рядом с неожиданным токеном `('
Не могу понять, как избежать скобок для регулярного выражения. Как я могу это сделать?
Вот мой полный файл:
# _________________________________________________________________________________________
# FUNCTIONS FOR PROMPT
GIT_BRANCH() {
local TEMP=$(git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/');
[ ! -z $TEMP ] && echo "${TEMP} "
}
PWD() {
echo "$*" |perl -pne \
's:^'"$HOME"':~:;'"$TEMP"'s:^(.{10}).{4}.*(.{20})$:$1...$2:;'
}
# _________________________________________________________________________________________
# _________________________________________________________________________________________
# PROMPT COLOR INFO
# BACKGROUND COLOR (LEFT VALUE) TYPE (RIGHT VALUE)
# Black background: 40 Black: 30 Normal Text: 0
# Blue background: 44 Blue: 34 Bold or Light Text: 1 (It depends on the terminal emulator.)
# Cyan background: 46 Cyan: 36 Dim Text: 2
# Green background: 42 Green: 32 Underlined Text: 4
# Purple background: 45 Purple: 35 Blinking Text: 5 (This does not work in most terminal emulators.)
# Red background: 41 Red: 31 Reversed Text: 7 (This inverts the foreground and background colors, so you’ll see black text on a white background if the current text is white text on a black background.)
# White background: 47 White: 37 Hidden Text: 8
# Yellow background: 43 Yellow: 33
# _________________________________________________________________________________________
# BG SYNTAX: \[\033[VALUEm\]
# COLOR SYNTAX: \[\033[LEFT_VALUE;RIGHT_VALUEm\] or \[\033[LEFT_VALUEm\]
# _________________________________________________________________________________________
TEXT_COLOR="\[\033[30m\]"
PATH_COLOR="\[\033[33m\]"
BASIC_COLOR="\[\033[0;32m\]"
BASIC_COLOR="\[\033[0;32m\]"
GIT_COLOR="\[\033[34m\]"
if [ "$(id -u)" = 0 ]
then
# root: red BG
USER_COLOR="\[\033[41m\]"
elif [ "$(id -un)" != "$(basename $HOME)" ]
then
# not root, not self: red text
USER_COLOR="\[\033[31m\]"
else
# user color
USER_COLOR="\[\033[0;32m\]"
fi
# PROMPT TEXT
PR_USER="\u"
PR_HOST="\h"
PR_DIR_PATH="\$(PWD \w)"
PR_BRANCH="\$(GIT_BRANCH)"
PR_END="->"
PS1="${USER_COLOR}[${PR_USER}:${PR_HOST}] ${PATH_COLOR}${PR_DIR_PATH} ${GIT_COLOR}${PR_BRANCH}${PR_END} ${TEXT_COLOR}"
unset USER_COLOR TEXT_COLOR PATH_COLOR BASIC_COLOR BASIC_COLOR GIT_COLOR PR_USER PR_HOST PR_DIR_PATH PR_BRANCH PR_END