У меня есть сценарий оболочки, который выполняет одну и ту же команду в нескольких каталогах ( fgit ). Для каждого каталога я хотел бы показать текущее приглашение + команду, которая будет там выполняться. Как получить строку, соответствующую декодированному (расширенному) PS1
? Например, мой PS1 по умолчанию -
${debian_chroot:+($debian_chroot)}\[\e[1;32m\]\u\[\e[0m\]@\[\e[1;32m\]\h\[\e[0m\]:\[\e[1;34m\]\w\[\e[0m\]$(__git_ps1 ' (%s)')$
, и я хотел бы повторить полученное приглашение У меня есть сценарий оболочки, который выполняет одну и ту же команду в нескольких каталогах ( fgit ). Для каждого каталога я хотел бы показать текущее приглашение + команду, которая будет там выполняться. Как получить строку, соответствующую декодированному (расширенному) , и я хотел бы повторить полученное приглашение У меня есть сценарий оболочки, который выполняет одну и ту же команду в нескольких каталогах ( fgit ). Для каждого каталога я хотел бы показать текущее приглашение + команду, которая будет там выполняться. Как получить строку, соответствующую декодированному (расширенному) , и я хотел бы повторить полученное приглашение , и я хотел бы повторить полученное приглашение , и я хотел бы повторить полученное приглашение Я хотел бы показать текущее приглашение + команду, которая будет там выполняться. Как получить ...
PS1
? Например, мой PS1 по умолчанию - ${debian_chroot:+($debian_chroot)}\[\e[1;32m\]\u\[\e[0m\]@\[\e[1;32m\]\h\[\e[0m\]:\[\e[1;34m\]\w\[\e[0m\]$(__git_ps1 ' (%s)')$
Я хотел бы показать текущее приглашение + команду, которая будет там выполняться. Как получить ...
PS1
? Например, мой PS1 по умолчанию - ${debian_chroot:+($debian_chroot)}\[\e[1;32m\]\u\[\e[0m\]@\[\e[1;32m\]\h\[\e[0m\]:\[\e[1;34m\]\w\[\e[0m\]$(__git_ps1 ' (%s)')$
Как получить строку, соответствующую декодированному (расширенному)
PS1
? Например, мой PS1 по умолчанию - ${debian_chroot:+($debian_chroot)}\[\e[1;32m\]\u\[\e[0m\]@\[\e[1;32m\]\h\[\e[0m\]:\[\e[1;34m\]\w\[\e[0m\]$(__git_ps1 ' (%s)')$
Как получить строку, соответствующую декодированному (расширенному)
PS1
? Например, мой PS1 по умолчанию - ${debian_chroot:+($debian_chroot)}\[\e[1;32m\]\u\[\e[0m\]@\[\e[1;32m\]\h\[\e[0m\]:\[\e[1;34m\]\w\[\e[0m\]$(__git_ps1 ' (%s)')$
username @ hostname : / path $
, желательно (но не обязательно) с приятными цветами. Беглый взгляд на руководство по Bash не дал определенного ответа, и echo -e $ PS1
оценивает только цвета.
Возможно, вам придется написать небольшую программу на C, которая будет использовать тот же код, что и bash (это вызов библиотеки?), Чтобы отобразить это приглашение, и просто вызвать программу C. Конечно, это не очень переносимо, поскольку вам придется компилировать его на каждой платформе, но это возможное решение.
Почему бы вам просто не обработать escape-замены $ PS1
самостоятельно? Ряд замен, таких как эти:
p="${PS1//\\u/$USER}"; p="${p//\\h/$HOSTNAME}"
Между прочим, zsh имеет возможность интерпретировать escape-последовательности.
print -P '%n@%m %d'
или
p=${(%%)PS1}