8 Полезных и Интересных Bash Подсказок

Программист за ноутбуком.

Многие люди не рассматривают командную строку как полезный элемент или даже не обращают на нее много внимания. Тем не менее, полезная подсказка может изменить ваш подход к использованию командной строки и, соответственно, вашей системы. Эта статья показывает вам несколько полезных и интересных Bash подсказок с примерами. Обратите внимание, что мы начинаем с самих подсказок, а затем даем некоторые дополнительные инструкции по их использованию.

Здесь мы предлагаем несколько Bash подсказок, и не все они будут серьезными. Например, наша первая запись в списке может немного порадовать вас при использовании командной строки!

Также читайте: Основные команды Bash для новичков в Linux

1. Показать “Камодзи” при успешном выполнении

Эта подсказка забавная и полезная! Идея заключается в том, что, пока вы выполняете успешные команды, ваша подсказка будет показывать счастливый камодзи.

Отображение Камодзи в подсказке Bash.

Наоборот, когда команда не выполнится, вы увидите грустный камодзи.

Чтобы применить это, используйте следующий код:

PS1="\`if [ \$? = 0 ]; then echo \[\e[33m\]^_^\[\e[0m\]; else echo \[\e[31m\]O_O\[\e[0m\]; fi\`[\u@\h:\w]\\$ "

Это может выглядеть запутанно, но мы используем условные операторы, чтобы определить, хороша команда или нет. Затем мы используем экранирование вокруг камодзи, чтобы убедиться, что они отображаются правильно.

Также читайте: Как использовать Emacs в качестве читателя USENET с Gnus

2. Изменить цвет подсказки Bash, когда терминал выдает неверную команду

Изменение цветов подсказок.

Можно утверждать, что эта подсказка самая полезная в списке. Как и выше, подсказка меняет цвет, если ваша последняя команда не удалась, но также сокращает длинные пути и содержит номер истории Bash для каждой команды для легкого доступа.

PROMPT_COMMAND='PS1="\[\033[0;33m\][\!]\`if [[ \$? = "0" ]]; then echo "\\[\\033[32m\\]"; else echo "\\[\\033[31m\\]"; fi\`[\u.\h: \`if [[ `pwd|wc -c|tr -d " "` > 18 ]]; then echo "\\W"; else echo "\\w"; fi\`]\$\[\033[0m\] "; echo -ne "\033]0;`hostname -s`:`pwd`\007"'

Вновь, это может показаться пугающим для реализации, но это просто. Мы снова используем условные операторы, наряду с кодами цвета, чтобы выделить различные сообщения.

Вы можете сделать эти цвета любыми, но лучше, чтобы они помогали вам, а не менялись просто ради изменения.

Также читайте: Как настроить Leafnode как офлайн сервер USENET

3. Разделите свои Bash подсказки на несколько строк

Использование многострочной подсказки Bash.

Иногда вам может понадобиться включить много информации в ваши Bash подсказки. Если это про вас, эта Bash подсказка может вас заинтересовать. Она показывает дату, время, полный путь к каталогу, имя пользователя и хоста, активный терминал, а также количество файлов и использование пространства.

PS1="\n\[\033[35m\]\$(/bin/date)\n\[\033[32m\]\w\n\[\033[1;31m\]\u@\h: \[\033[1;34m\]\$(/usr/bin/tty | /bin/sed -e 's:/dev/::'): \[\033[1;36m\]\$(/bin/ls -1 | /usr/bin/wc -l | /bin/sed 's: ::g') files \[\033[1;33m\]\$(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed 's/total //')b\[\033[0m\] -> \[\033[0m\]"

Здесь нам не нужны условные операторы, так как подсказка сама по себе будет иметь статический макет, но динамическое содержимое. Вы также можете найти трудным разобрать различные элементы в этом варианте. Наш совет - применить это, а затем пройтись по подсказке по частям. Сделав немного перекрестного сопоставления, вы начнете понимать, как подсказка комбинируется.

4. Используйте цвета, чтобы сделать вашу подсказку Bash более читаемой

В этой подсказке нет ничего выдающегося, кроме хорошего использования цвета для разделения различных частей информации. Как вы можете увидеть, она предоставляет время, имя пользователя и хоста, а также текущий каталог.

PS1="\[\033[35m\]\t\[\033[m\]-\[\033[36m\]\u\[\033[m\]@\[\033[32m\]\h:\[\033[33;1m\]\w\[\033[m\]\$ "

Это одна из самых полезных Bash подсказок и область, с которой вы сначала будете стремиться к настройке своей подсказки. Она может дать вам хорошую основу для изучения того, как работает пользовательская подсказка.

5. Показать полный путь к каталогу

Подобно использованию цветов, эта подсказка представляет собой чистую и минимальную двухстрочную подсказку (хотя вверху есть пустая строка).

Показ полного пути к каталогу в подсказке.

Мы отображаем полный рабочий путь к каталогу на первой строке, за которым следует имя пользователя внизу.

PS1="[\[\033[32m\]\w]\[\033[0m\]\n\[\033[1;36m\]\u\[\033[1;33m\]-> \[\033[0m\]"

Если вы не хотите использовать пустую строку в подсказке, вы можете убрать первый \n. Тем не менее, поиграйте с макетом и форматированием, так как каждое trải nghiệm терминала будет различным в зависимости от вашего компьютера и настроек командной строки.

6. Показать количество фоновых задач

Эта двухстрочная подсказка отображает информацию, которую мы еще не использовали в наших Bash подсказках. Мы предоставляем текущий учет фоновых задач. Это будет полезно, если вы многозадачны, но вам нужно следить за любой активностью.

Отображение количества фоновых задач.

Первая строка - это имя пользователя и хоста, а также путь рабочего каталога. На второй строке у нас номер истории и количество задач, работающих в фоновом режиме.

PS1='\[\e[1;32m\]\u@\H:\[\e[m\] \[\e[1;37m\]\w\[\e[m\]\n\[\e[1;33m\]hist:\! \[\e[0;33m\] \[\e[1;31m\]jobs:\j \$\[\e[m\] '

С этим ничего особенного, хотя это может дать вам необходимую информацию о системной активности. Вы даже можете превратить это в более сложную подсказку и добавить условные операторы и цветовое кодирование, чтобы уведомлять вас, когда задача достигает определенных уровней.

7. Отобразить информацию о рабочем каталоге

Отображение информации о рабочем каталоге.

С этим мы отображаем имя пользователя и хоста, количество задач и дату и время на верхней строке. Под ней находится текущий каталог, а также количество файлов в каталоге и некоторая информация об использовании дискового пространства.

PS1="\n\[\e[30;1m\]\[\016\]l\[\017\](\[\e[34;1m\]\u@\h\[\e[30;1m\])-(\[\e[34;1m\]\j\[\e[30;1m\])-(\[\e[34;1m\]\@ \d\[\e[30;1m\])->\[\e[30;1m\]\n\[\016\]m\[\017\]-(\[\[\e[32;1m\]\w\[\e[30;1m\])-(\[\e[32;1m\]\$(/bin/ls -1 | /usr/bin/wc -l | /bin/sed 's: ::g') files, \$(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed 's/total //')b\[\e[30;1m\])--> \[\e[0m\]"

Наибольшая проблема с этими подсказками заключается в том, чтобы понять, что происходит вокруг форматирования и экранирования. Однако, как и с многострочными подсказками, вы должны подходить к этому по частям, пока не поймете общую структуру.

Вы даже можете вводить часть за раз и отмечать, отображается ли это или есть ошибки, и продвигаться к полному коду.

8. Создайте свои собственные Bash подсказки

Пользовательская Bash подсказка.

Вы можете комбинировать любые и все из вышеперечисленного, чтобы создать свои собственные пользовательские Bash подсказки. Например, это модификация номера семь в этом списке, но изменённая так, чтобы занимать меньше места и включать конкретную и актуальную информацию.

Двухстрочный стиль всегда более компактный, так как вы можете видеть полный путь, не уменьшая место для используемых вами команд.

PS1="\n\[\e[32;1m\](\[\e[37;1m\]\u\[\e[32;1m\])-(\[\e[37;1m\]jobs:\j\[\e[32;1m\])-(\[\e[37;1m\]\w\[\e[32;1m\])\n(\[\[\e[37;1m\]! \!\[\e[32;1m\])-> \[\e[0m\]"

Теперь вы, вероятно, понимаете, что делает эта подсказка, но наш совет - попытаться создать свою собственную, а не вставлять эту. Таким образом, вы сможете начать изучать, как разные элементы работают вместе, и, возможно, даже придумать свои собственные пользовательские Bash подсказки.

Часто задаваемые вопросы

1. Зачем мне использовать разные Bash подсказки?

Существует много причин для этого, но производительность является ключевым фактом. Если вы часто используете командную строку, вы будете видеть свою подсказку каждые несколько секунд. Поэтому, если вы поместите в нее самую важную информацию, вы всегда сможете иметь ее под рукой.

Во многих случаях использование пользовательской Bash подсказки более эффективно, чем открытие нескольких окон.

2. Как мне добавить эти Bash подсказки в вывод моего терминала?

Чтобы использовать любую из этих подсказок, вы можете скопировать и вставить код в свое терминальное приложение. Однако это будет применимо только к текущей сессии, так что, теоретически, вам нужно будет делать это каждый раз, когда вы запускаете терминал.

Если вы хотите сделать изменение постоянным, вы можете вставить фрагменты в конец вашего ~/.bashrc файла и перезапустить терминал.

3. Будут ли эти Bash подсказки работать и в других оболочках?

Во многих случаях вы обнаружите, что есть совместимость с другими типами оболочек. Однако нет гарантии, что изменения будут иметь 100-процентное соответствие.

Если вы посмотрите на нашу публикацию о настройке Mac Terminal, она использует zsh. Вы заметите, что существуют небольшие различия, но много схожих аспектов.

4. Как мне узнать, какую информацию и элементы я могу добавить к своим Bash подсказкам?

Практически любой элемент вашей системы может появиться в Bash подсказке. Вам стоит изучить переменные Bash, так как именно так вы “разблокируете” эти разные элементы.

Отличный ресурс для понимания того, что вы можете изменить, находится на сайте Linux.com, и мы рекомендуем держать эту документацию под рукой во время ваших сессий по настройке.

5. Что делать, если я больше не хочу использовать пользовательские Bash подсказки в своем терминале?

Простой ответ здесь - открыть конфигурационный файл и удалить соответствующие строки. Вам не нужно выполнять никаких дополнительных команд, хотя стоит перезапустить терминал, если вы не видите ожидаемых изменений.

Если вы регулярно используете командную строку или имеете специфические потребности при открытии приложения терминала, настройка подсказки может стать отличной идеей. Для этого не требуется много знаний, и во многих случаях вы найдете нужную вам подсказку от другого разработчика.