Спеціальні символи командного рядка [дублювати]


0

На це запитання вже є відповідь:

При встановленні значення основного командного рядка (PS1) слід два випадки

export PS1="\u"
export PS1="\\u"

дає той самий результат:

root

як рядок командного рядка. Як працює \u і \\u відрізняється, якщо обидва результати ідентичні? Не повинен \\u виходи просто \u з \\ позначає зворотний слеш?


Командний рядок є терміном Microsoft. Ви насправді звертаєтеся до терміналу?
LPChip

1
Я просто маю на увазі баш підказка контролюється змінною PS1.
Ringger81

Відповіді:


1

У подвійних рядках bash, зворотні коси риски зберігаються, якщо не потрібний наступний символ (тільки " ` $ \ ).

  • Наприклад, foo="\$bar" призведе до $bar оскільки $ потрібно уникнути.
  • Однак, foo="\%bar" призведе до \%bar оскільки % не потрібно уникнути.

Так обидва PS1="\u" і PS1="\\u" призведе до $ PS1, що має значення \u.


Код \u всередині $ PS1 розширено до вашого імені користувача набагато пізніше - не при призначенні змінної, але кожного разу, коли буде показано запит.


Отже, послідовність така:
Ringger81

@gravity Отже, алгоритм - bash приймає перший символ і перевіряє наступний. В \u випадок перевіряє це u - це звичайний символ, який не потрібно виводити, і таким чином зберігається зворотна слеш, що виходить \u. В \\u case bash приймає другий символ, який тепер є іншим зворотним слесом, так що він виривається, в результаті чого тільки один зворотний слеш з двох. Після цього є зараз \u і таке ж лікування застосовують, як і в першому \u випадок, описаний раніше. Чи є моє пояснення?
Ringger81
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.