Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
subjects:administration:start [2018/06/05 12:18] ¶ |
subjects:administration:start [2023/05/09 19:53] (текущий) ¶ [Приглашение командной строки] продублировал свой комментарий |
||
---|---|---|---|
Строка 4: | Строка 4: | ||
FIXME | FIXME | ||
+ | |||
+ | ===== Настройки ===== | ||
+ | ===== Приглашение командной строки ===== | ||
<file bash .bashrc> | <file bash .bashrc> | ||
+ | # Раскрашиваем приглашение командной строки | ||
PS1="\`if [ \$? = 0 ]; then echo \[\e[33m\]\t\[\e[00m\] \[\e[01\;32m\]\(^_^\)\[\e[00m\] \[\e[32m\]\u\[\e[33m\]@\[\e[32m\]\h\[\e[00m\]; else echo \[\e[31m\]\t\[\e[00m\] \[\e[01\;41m\]\(O_o\)\[\e[00m\] \[\e[33m\]\u\[\e[31m\]@\[\e[33m\]\h\[\e[00m\]; fi\`\[\e[01;34m\] [ \w ]\[\e[00m\]\n⌎ ${debian_chroot:+($debian_chroot)}\[\e[01;32m\]\!\[\e[01;34m\] \$\[\e[00m\] " | PS1="\`if [ \$? = 0 ]; then echo \[\e[33m\]\t\[\e[00m\] \[\e[01\;32m\]\(^_^\)\[\e[00m\] \[\e[32m\]\u\[\e[33m\]@\[\e[32m\]\h\[\e[00m\]; else echo \[\e[31m\]\t\[\e[00m\] \[\e[01\;41m\]\(O_o\)\[\e[00m\] \[\e[33m\]\u\[\e[31m\]@\[\e[33m\]\h\[\e[00m\]; fi\`\[\e[01;34m\] [ \w ]\[\e[00m\]\n⌎ ${debian_chroot:+($debian_chroot)}\[\e[01;32m\]\!\[\e[01;34m\] \$\[\e[00m\] " | ||
+ | </file> | ||
+ | |||
+ | * __wiki.archlinux.org/title/Bash/Prompt_customization__ | ||
+ | * __habr.com/post/558316/comments/#comment_23073468__ | ||
+ | ++++Много-много текста: подробный разбор| | ||
+ | Стандартное приглашение в моей системе выглядело так: | ||
+ | |||
+ | <code bash>PS1="[\u@\h \W]\$ "</code> | ||
+ | |||
+ | * %%[%% — символ "[" | ||
+ | * %%\u%% — логин пользователя @ — %%"@"%% | ||
+ | * %%\h%% — имя хоста | ||
+ | * %%" "%% — пробел | ||
+ | * %%\W%% — рабочий каталог/дирректория/папка | ||
+ | * %%"\$ "%% — символы %%"]$ "%% | ||
+ | |||
+ | Наиболее близкой частью этой конструкции, является вот эта часть кода: | ||
+ | |||
+ | <code bash>"\n⌎ ${debian_chroot:+($debian_chroot)}\[\e[01;32m\]\!\[\e[01;34m\] \$\[\e[00m\] "</code> | ||
+ | |||
+ | * %%\n%% — символ перевода строки. | ||
+ | * %%"⌎ "%% — это просто два символа %%"⌎"%% и пробел. | ||
+ | * ''%%${debian_chroot:+($debian_chroot)}%%'' — https://askubuntu.com/questions/372849/what-does-debian-chrootdebian-chroot-do-in-my-terminal-prompt | ||
+ | * %%\[%% — | ||
+ | * %%\e[01;32m%% — %%\033[1;32m%% — активируем стиль: жирный зелёный | ||
+ | * %%\]%% — | ||
+ | * %%\e[01;34m%% — %%\033[1;34m%% — активируем стиль: жирный синий | ||
+ | * %%\]%% — | ||
+ | * %%\!%% — номер текущей команды | ||
+ | * %%\]%% — | ||
+ | * %%" \$"%% — это пробел и %%$%% | ||
+ | * %%\[%% — | ||
+ | * %%\e[00m%% — %%\033[0m%% — сброс текущего стиля к изначальному | ||
+ | * %%\]%% — | ||
+ | * %%" "%% — пробел | ||
+ | |||
+ | Вообще, конструкции ''%%"\["%%'' и ''%%"\]"%%'' тут что-то вроде визуальной обёртки. Не помню, зачем их вставил. Если их убрать, будет: | ||
+ | |||
+ | <code bash>"\n⌎ ${debian_chroot:+($debian_chroot)}\e[01;32m\!\e[01;34m \$\e[00m "</code> | ||
+ | |||
+ | Помимо этого, мною добавлены были лишние символы 0, до двухсимвольных конструкций. Их тоже можно убрать. | ||
+ | |||
+ | <code bash>"\n⌎ ${debian_chroot:+($debian_chroot)}\e[1;32m\!\e[1;34m \$\e[0m "</code> | ||
+ | |||
+ | Лично мне, такую конструкцию воспринимать сложнее. | ||
+ | |||
+ | Ещё можно поменять %%\e%% на %%\033%% | ||
+ | |||
+ | <code bash>"\n⌎ ${debian_chroot:+($debian_chroot)}\033[1;32m\!\033[1;34m \$\033[0m "</code> | ||
+ | |||
+ | Это - рабочая конструкция: | ||
+ | <code bash>PS1="\n⌎ ${debian_chroot:+($debian_chroot)}\033[1;32m\!\033[1;34m \$\033[0m "</code> | ||
+ | |||
+ | Можно попробовать ввести её в консоль. | ||
+ | |||
+ | Конструкция: | ||
+ | <code bash>"\`if [ \$? = 0 ]; then echo … ; else echo … ; fi\`"</code> | ||
+ | |||
+ | Позволяет отследить успешное выполнение команды или возврат ошибки. | ||
+ | |||
+ | Именно вот эту конструкцию из статьи: | ||
+ | <code bash>"PS1="\`if [ \$? = 0 ]; then echo \[\e[33m\]^_^\[\e[0m\]; else echo \[\e[31m\]O_O\[\e[0m\]; fi\`[\u@\h:\w]\\$ "</code> | ||
+ | |||
+ | я вроде бы брал за основу. | ||
+ | |||
+ | Строки: | ||
+ | <code bash>echo \[\e[33m\]\t\[\e[00m\] \[\e[01\;32m\]\(^_^\)\[\e[00m\] \[\e[32m\]\u\[\e[33m\]@\[\e[32m\]\h\[\e[00m\];</code> | ||
+ | и | ||
+ | <code bash>echo \[\e[31m\]\t\[\e[00m\] \[\e[01\;41m\]\(O_o\)\[\e[00m\] \[\e[33m\]\u\[\e[31m\]@\[\e[33m\]\h\[\e[00m\];</code> | ||
+ | |||
+ | повторяют друг-друга по конструкции, но отличаются деталями. ; приходится экранировать из-за конструкции if. | ||
+ | |||
+ | * %%\e[33m%% — активируем стиль: жёлтый | ||
+ | * %%\e[31m%% — активируем стиль: красный | ||
+ | * %%\t%% — время | ||
+ | * %%\e[00m%% — сброс стиля | ||
+ | * %%" "%% — пробел | ||
+ | * %%\e[01\;32m%% — %%\033[1;32m%% — активируем стиль: жирный зелёный | ||
+ | * %%\e[01\;41m%% — %%\033[1;41m%% — активируем стиль: жирный и красный фон | ||
+ | * ''%%"\(^_^\)\"%%'' — довольная рожица | ||
+ | * ''%%"\(O_o\)\"%%'' — удивлённая рожица | ||
+ | * %%\e[00m%% — %%\033[0m%% — сброс стиля | ||
+ | * %%" "%% — пробел | ||
+ | * %%\e[32m%% — %%\033[32m%% — активируем стиль: зелёный | ||
+ | * %%\e[33m%% — %%\033[33m%% — активируем стиль: жёлтый | ||
+ | * %%\u%% — логин пользователя | ||
+ | * %%\e[33m%% — %%\033[33m%% — активируем стиль: жёлтый | ||
+ | * %%\e[31m%% — %%\033[31m%% — активируем стиль: красный | ||
+ | * %%@%% — %%"@"%% | ||
+ | * %%\e[32m%% — %%\033[32m%% — активируем стиль: зелёный | ||
+ | * %%\e[33m%% — %%\033[33m%% — активируем стиль: жёлтый | ||
+ | * %%\h%% — имя хоста | ||
+ | * %%\e[00m%% — %%\033[0m%% — сброс стиля | ||
+ | |||
+ | Остался вот этот кусочек: | ||
+ | |||
+ | <code bash>[\e[01;34m\] [ \w ]\[\e[00m\]</code> | ||
+ | |||
+ | * %%\e[01\;34m%% — %%\033[1;34m%% — активируем стиль: жирный синий | ||
+ | * %%" [ " — " [ " \w%% — рабочий каталог/дирректория/папка | ||
+ | * %%" ] " — " ] "%% | ||
+ | * %%\e[00m%% — %%\033[0m%% — сброс стиля | ||
+ | |||
+ | Теперь, по прошествии времени и ещё раз разобравшись со всем заново, я могу всё переписать в стиле статьи, убрав лишнее. | ||
+ | |||
+ | Было: | ||
+ | |||
+ | .bashrc | ||
+ | |||
+ | <code bash>PS1="\`if [ \$? = 0 ]; then echo \[\e[33m\]\t\[\e[00m\] \[\e[01\;32m\]\(^_^\)\[\e[00m\] \[\e[32m\]\u\[\e[33m\]@\[\e[32m\]\h\[\e[00m\]; else echo \[\e[31m\]\t\[\e[00m\] \[\e[01\;41m\]\(O_o\)\[\e[00m\] \[\e[33m\]\u\[\e[31m\]@\[\e[33m\]\h\[\e[00m\]; fi\`\[\e[01;34m\] [ \w ]\[\e[00m\]\n⌎ ${debian_chroot:+($debian_chroot)}\[\e[01;32m\]\!\[\e[01;34m\] \$\[\e[00m\] "</code> | ||
+ | |||
+ | Стало: | ||
+ | |||
+ | .bashrc | ||
+ | |||
+ | <code bash>PS1="\`if [ \$? = 0 ]; then echo \e[33m\t\e[0m \e[1\;32m\(^_^\)\e[0m \e[32m\u\e[33m@\e[32m\h\e[0m; else echo \e[31m\t\e[0m \e[1\;41m\(O_o\)\e[0m \e[33m\u\e[31m@\e[33m\h\e[0m; fi\`\e[1;34m [ \w ]\e[0m\n⌎ ${debian_chroot:+($debian_chroot)}\e[1;32m\!\e[1;34m \$\e[0m "</code> | ||
+ | |||
+ | Если заменить %%"\e"%% на %%"\033"%%, то получится ближе к тексту статьи: | ||
+ | |||
+ | .bashrc | ||
+ | |||
+ | <code bash>PS1="\`if [ \$? = 0 ]; then echo \033[33m\t\033[0m \033[01\;32m\(^_^\)\033[0m \033[32m\u\033[33m@\033[32m\h\033[0m; else echo \033[31m\t\033[0m \033[1\;41m\(O_o\)\033[0m \033[33m\u\033[31m@\033[33m\h\033[0m; fi\`\033[1;34m [ \w ]\033[0m\n⌎ ${debian_chroot:+($debian_chroot)}\033[1;32m\!\033[1;34m \$\033[0m "</code> | ||
+ | |||
+ | И оно вроде как даже работает, но "глючит" при навигации по истории, например. В отличие от изначальной конструкции. Может, конструкции ''%%"\["%%'' и ''%%"\]"%%'' были нужны или что-то лишнее удалил случайно, когда переписывал. Искать проблему сейчас — лень, но думаю, смысл я объяснил. Сам предпочту пользоваться старой конструкцией, проверенной мною же. | ||
+ | |||
+ | ++++ | ||
+ | ===== Путешествие по истори ===== | ||
+ | Использование: начните набирать команду, используйте ''PgUp'' и ''PgDown'' для путешествия по истории, где такое же начало. | ||
+ | |||
+ | <file bash .inputrc> | ||
+ | "\e[5~": history-search-backward | ||
+ | "\e[6~": history-search-forward | ||
</file> | </file> |