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

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

Примечание. Чтобы использовать любой из этих запросов, вы можете скопировать и вставить строку "PS1="прямо в свой терминал. Чтобы сделать изменение постоянным, вставьте строку в конец вашего ~ / .bashrc файла.

1. Покажите счастливое лицо после успешного выполнения

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

Пример:
bash подсказывает-счастливое лицо


Code:

2. изменить цвет при неправильной команде

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

Пример:
bash подсказывает - больно


Code:

3. Многострочная подсказка

Если вы из тех, кто хочет наполнить свою подсказку полной информацией, то вот она для вас. Это многострочное приглашение, содержащее дату / время, полный путь, пользователя и хост, активный терминал, даже количество файлов и использование пространства.
Пример:
Башпромптс-информатор


Code:

4. Управляйте цветом подсказки

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

Пример:
башпромпс-4


Code:

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

Это приятное, чистое, минимальное двухстрочное приглашение (плюс пустая строка вверху). У вас есть полный путь в первой строке и почти только имя пользователя внизу. Если вы хотите удалить пустую строку в начале каждого приглашения, просто удалите первый "\ n".

Пример:
башпромпс-5

Код:

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

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

Пример:
Башпромпс-6

Код:

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

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

Пример:
Башпромпс-7

Код:

8. Моя подсказка

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

Пример:
Башпромпс-8


Code:

Если вы хотите поделиться своей подсказкой, сделайте это в комментариях ниже.

51 комментарий

  1. Как теперь показать расширенный набор символов через сеанс mingetty sshd?


    Ой как заставить работать в шпатлевке?


    Я уверен, что дело в среде RHEL 5 и кодировке, которую она отправляет. Любые идеи? Я изменил кучу настроек LANG и TERM на стороне сервера ...

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

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

  3. Приятно спасибо!

    Я случайно оставляю материал на заднем плане немного часто, поэтому я использовал концепцию заданий, описанную выше, чтобы заставить ее ДОПОЛНИТЕЛЬНО сообщать о заданиях bg, если они есть.

    PROMPT_COMMAND='PS1=”$ {debian_chroot: + ($ debian_chroot)} [33 [01; 32m] u @ h [33 [00m] [33 [01; 34m] W [33 [00m]` if [$ (jobs) | wc -l | tr -d "") -gt 0]; затем echo "[e [1; 31m] jobs: j [e [m]"; fi` $ e] 30; ha "‘

    craig @ homei7 tmp jobs: 1 $
    craig @ homei7 tmp jobs: 1 $ fg
    vi / tmp / tmp1
    craig @ homei7 tmp $


    Спасибо за предложение, Крейг.

    Для тех, кто хочет попробовать подсказку Крейга, есть небольшое раздражение при публикации такого рода кодов, когда любой экземпляр "нулевой обратной косой черты" отфильтровывается, поэтому все случаи "[33" фактически должны быть "[033" (дополнительное пространство добавлено к убедитесь, что этого не произошло с этим ответом)

  4. LOL смайлик-команда. Прекрасный.

  5. Как мне снова избавиться от этих команд (не волнуйтесь, они мне нравятся, но мне нравится знать, как что-то удалить перед установкой) Ура


    Если вы не поместите его в файл .bash_profile или .bashrc, он не загрузится во время следующего сеанса, поэтому просто закройте окно. В противном случае просто удалите его из файла, в который вы его поместили.

    1. Правильно, если вы вставите один из них в свой терминал, не сохраняя что-то вроде .bashrc, он исчезнет в следующий раз, когда вы откроете свой терминал. Вы также можете ввести "исходный .bashrc", чтобы восстановить приглашение по умолчанию.

  6. выяснил. извините, не прочитал весь первый абзац.

  7. http://slashdot.org/comments.pl?sid=108424&cid=9219400

    это самая ранняя ссылка, которую я могу найти

  8. http://slashdot.org/comments.pl?sid=108424&cid=9219400

    это самая ранняя версия, которую я могу найти.

  9. Моя подсказка zsh довольно мала.

    PROMPT=’% ~>‘
    RPROMPT=’% T’

    Слева отображается канонический путь, а справа - время. Если команда слишком длинная, время удаляется.

    ~> cd ../ 9:56
    / home> 9:56

  10. PS1=”[33 [01; 32m] u @ h [33 [01; 34m] w [33 [00m] $ (git branch 2> / dev / null | grep '^ *' | colrm 1 2) [33 [ 01; 34 млн. Долл. США [33 [00 млн] "

    Что интересно в моем приглашении, так это то, что ветка репозитория git названа в приглашении


    Спасибо, я подумал о добавлении хорошей подсказки git, которую нашел, но не думал, что так много людей заинтересуется, поэтому я рад, что кто-то добавил это в комментариях.

    Кроме того, для других читателей комментария jrglasgow см. Комментарий выше о сломанных escape-кодах.

  11. Что мне нужно сделать, чтобы отобразить прекрасные межстраничные символы в подсказке 7?


    У меня был смешанный успех. Первоначально он отлично работал у меня в xterm и xterm, но выглядел сломанным в gnome-terminal. После того, как я повозился с ним, он больше не выглядел правильно!

    Я бы посоветовал посмотреть, правильно ли это выглядит в другом терминале (например, xterm или wterm)

  12. Люди кажутся счастливыми, поэтому я первым скажу, что эти подсказки ужасно уродливы.

    Баш уродлив!

    PS: Zsh не намного красивее, но RPROMPT действительно чертовски крутой.

  13. Lol, # 1 определенно мой фаворит!

  14. Проверьте это: http://www.students.itu.edu.tr/~yazicivo/files/lpsconf.sh

  15. Найдите здесь мою подсказку bash, в которой отображается ветка git и измененные файлы:
    http://code.extension.ws/post/181469611/git-prompt-rb


    Запуск сценария ruby ​​для каждого отображения подсказок довольно жирный=)

    Хотя это хорошая подсказка!

  16. Хорошо, так что, попив немного - я придумал тот, который мне нравится. Я был бы еще более счастлив, если бы мог понять, как заставить работать строчные символы (как в №7)…

    Во всяком случае, этот основан на частях №1 и №7. Он содержит user @ machine, временную метку и каталог в одну строку - и количество заданий, индикатор успеха / неудачи (зеленый :-) в случае успеха или красный :-( в случае неудачи) во второй строке. за которым следует $

    PS1=”n [e [30; 1m] ([e [34; 1m] u @ h [e [30; 1m]) - ([e [34; 1m] t [e [30; 1m]]] - ( [[e [32; 1m] w [e [30; 1m]) [e [30; 1m] n (jobs: [e [34; 1m] j [e [30; 1m]] "` if [$? -экв 0]; затем echo [e [32m] :-); иначе echo [e [31m] :-(; fi` [e [0m] $ ”)

    # Теперь мне нужно поработать :-)


    Возможно, он не вставил правильно, он недействителен, когда я пытаюсь проверить.

    Как отмечалось в комментариях выше, коды bash не всегда отображаются правильно, не уверен, что это наша CMS или какие-то браузеры или что-то еще. Если у вас есть ссылка на текстовую версию или что-то в этом роде, поделитесь.


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

    http://media.stray-hound.com/prompt.sh


    bash: синтаксическая ошибка рядом с неожиданным токеном `[e [34 ′

  17. Прочитав это, я нашел время, чтобы написать промот, и вспомнил, почему я использую zsh.
    хотя синтаксис zsh легче читать, я взял идею из одного из /. ответил и создал этот файл, который я затем получил из .zshrc
    ————————— setpromt-zsh ———————–
    RESET_COLOR=”% f”
    COLOURED_RETURN_VAL=”% (?,% F {зеленый},% F {красный}) (%?) ”
    SHORT_PWD=”% 3 ~ ”
    ROOT_OR_NOT=”% # ”
    БЕЛЫЙ=”% F {белый} ”

    # Сложите все вместе
    PROMPT=”$ {COLOURED_RETURN_VAL} $ {WHITE} $ {SHORT_PWD} $ {ROOT_OR_NOT}> $ {RESET_COLOR}”
    RPROMPT=”% F {желтый}% T% f [% !] "
    —————————– EOF ————————-

    дает мне это
    (0) ~%> 0:36 [3081]
    (0) ~%> return 123 0:37 [3081]
    (123) ~%> 0:37 [3082]

    здесь не видны цвета,
    но возвращаемое число становится красным, если оно не равно нулю.

  18. Для этого я использую bashstyle.
    http://blog.amit-agarwal.co.in/2009/06/17/bashstyle-rpm-for-fedora-11-style-up-your-bash-prompt/

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

    PS1=”[e [37; 1m] - {[e [34; 1m] u @ h [e [37; 1m]} - n [e [37; 1m]] ([e [34; 1m] w: $ (/ bin / ls -1 | / usr / bin / wc -l | / bin / sed 's: :: g') файлы, $ (/ bin / ls -lah | / bin / grep -m 1 total | / bin / sed 's / total //') b [e [37; 1m]) n–> [e [0m] "

    Это трехстрочная подсказка. Имя и хост вверху, каталог посередине и подсказка в последней строке.

  20. По сути, глупо помещать в подсказки управляющие последовательности, зависящие от терминала. По какой-то причине были изобретены terminfo и termcap.

    Раймонд

  21. Используйте termcap или terminfo для escape-последовательностей.

  22. Мой любимый: PS1=’C: $ {PWD //// \}>’

    Это выглядит так:
    C: homemaciek>


    Это просто больно. РЖУ НЕ МОГУ! :)

  23. По поводу строковых символов? а также ? в # 7

    Они взяты из кодовой страницы Microsoft cp437, но сопоставлены с Unicode.
    См. Http://en.wikipedia.org/wiki/Cp437

    Итак, пока вы используете терминал с поддержкой utf-8 (по умолчанию в большинстве современных дистрибутивов) и ваши шрифты терминала настроены правильно, вы можете просто скопировать и вставить их.

    PS1=”n [e [30; 1m]? ([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 ?? ([e [32; 1m] w [e [30; 1m]] "- ([ e [32; 1m] $ (/ bin / ls -1 | / usr / bin / wc -l | / bin / sed 's: :: g') файлы, $ (/ bin / ls -lah | / bin / grep -m 1 total | / bin / sed 's / total //') b [e [30; 1m]) -> [e [0m] "

    Примечание. В исходном коде, приведенном выше, после первого дефиса во второй строке есть лишний символ "[".


    Ха-ха…
    Их здесь тоже нет…
    Просто замените? В строке, которую я дал выше, соответствующими символами, скопированными с http://en.wikipedia.org/wiki/Cp437

    Кроме того, вы можете сгенерировать их прямо в своем терминале с помощью:
    echo -e "xe2x94x8c"
    echo -e "xe2x94x94"
    И я использовал длинное тире
    echo -e "xe2x94x80", которое выглядит лучше в большинстве терминалов.

  24. Продолжая обсуждение управления версиями, я опубликовал функцию bash, которая отображает текущую ветку для Git, Mercurial, Subversion и даже RCS:

    http://improbable.org/chris/index.php?ID=227

  25. №7 - это * действительно * дорогие ресурсы, если они используются в любой серверной среде. Используйте его с осторожностью и осторожностью, иначе у вас могут возникнуть проблемы, когда они менее ожидаемы (хотя неустановленный PS1; exec bash решит вашу проблему)

  26. Я использую многострочное приглашение, которое начинается с символа # как такового:

    PS1=”n # - [[e [1; 36m] u @ h [e [m]] - [[e [1; 34m] w [e [m]]] - [$ (date +% k:% M )] -> п "

    Этот запрос отображается как:

    # - [user @ host] - [/ path / to / working / dir] - [13:46] ->
    (курсор находится здесь, на новой строке)

    Это приглашение дает мне (ИМХО) самую важную информацию с первого взгляда, на какой машине я нахожусь, где я на ней, и время запуска и завершения каждой из моих команд.

    Настоящее удовольствие в этом приглашении заключается в том, что я могу скопировать весь экран терминала и просто вставить его в сценарий оболочки без необходимости редактирования: # в каждой строке приглашения закомментировал это!

    Попробуйте, вам понравится, или ваши деньги вернутся!


    Первоначально я подумывал поместить что-то подобное в статью, но не мог придумать хороший способ продемонстрировать эту мысль с помощью снимков экрана. Спасибо!

  27. Другой (превосходный IMHO) способ разрешить копирование / вставку всей строки - это приглашение, которое выглядит примерно так:

    : ваша информация здесь;

    например

    : / путь / [vc rev]: статус выхода;

    потому что: - это команда bash, которая ничего не делает, а; завершает эту команду и позволяет вашей команде выполняться. Пользуюсь им, так как ненавижу многострочные подсказки (конечно, без обид на тех, кому они нравятся).

  28. Здесь много интересных идей, в ближайшее время мне придется изменить свой .bashrc.

    На данный момент это мое приглашение bash, после случайной перезагрузки моего ноутбука вместо моего сервера в восьмой раз за 12 часов я решил использовать отдельные командные подсказки для локального входа и входа в SSH:

    если [-z "$ SSH_CLIENT"]; тогда
    PS1='[e [0; 32m] u [e [m] [e [1; 34m] w [e [m] [e [1; 32m] $ [e [m] [e [0 ; 37m] '
    else
    PS1=' [e [0; 32m] u [e [m] [e [1; 31m] @ [e [m] [e [1; 33m] h [e [m] [e [1; 34m] w [e [m] [e [1; 32m] $ [e [m] [e [0; 37m] '
    fi

    Насколько мне известно (я не проводил глубокого поиска), не многие люди делали отдельные запросы для разных учетных записей. Кто-нибудь знает кого-нибудь еще, кто это делает?

    P.S. Извините за поздний комментарий, но я всегда опаздываю на эти сообщения в блоге. Почему никто мне ничего не говорит, пока это не произойдет?


    Я не видел, чтобы кто-то еще менял запрос на основе статуса SSH, но у многих людей есть одно приглашение для root, а другое для пользователей.

    Что касается задержки в поиске / комментировании, я бы порекомендовал программу для чтения каналов, чтобы оставаться активным в ваших любимых блогах. Почти все блоги (включая MTE) имеют RSS-каналы, которые вы можете отправить в нечто вроде Google Reader.

  29. может кто-нибудь помочь мне объединить № 8 и № 2?
    мне нравится информация, предоставленная № 8, но также трюк становится красным при неправильной команде № 2: так как будет выглядеть код для версии № 8 где все зеленые части становятся красными после неверной команды? не могу понять это самостоятельно.

  30. как насчет чего-то вроде этого

    если [[$?="0"]]; тогда цвет=”\ [33 [32м \]”; иначе цвет=”\ [33 [31м \]”; fi
    вы можете поставить это условие, чтобы задать цвет, и использовать переменную color в # 8, чтобы установить цвет.

  31. Я использую это в большинстве своих учетных записей, первая строка устанавливает окно терминала, чтобы читать "hostname: username - workingdir" абсолютно необходимо, когда у вас есть 20+ окон xterm / aterm / rxvt, открытых для нескольких компьютеров на одной панели задач.

    PS1=”[33] 0; h: u - w07]
    [33 [1; 37m] [
    [33 [1; 35m] $ (date +% H:% M)
    [33 [1; 36m] h
    [33 [1; 31m]:
    [33 [1; 32m] w
    [33 [1; 37m]]]
    [33 [0m] “

  32. Спасибо! Я люблю это! Сейчас использую номер 2 :)

    Сложно решить, что использовать сейчас…

  33. Когда я использую номер 2, я не могу копировать удаленные файлы с помощью scp.
    Я могу использовать ssh, но не могу копировать файлы, почему?

    Это очень странно, потому что я использую эту подсказку почти неделю :)
    и я потерял два дня в поисках ошибки!

    Мне нужна помощь, вот отладка scp:
    debug1: Следующий метод аутентификации: пароль
    пароль:
    debug1: Аутентификация прошла успешно (пароль).
    debug1: channel 0: new [client-session ]
    debug1: вход в интерактивный сеанс.
    debug1: среда отправки.
    debug1: отправка env LANG=en_US.UTF-8
    debug1: команда отправки: scp -v -t / tmp
    ……….
    Я застрял здесь.

    Ps: Решено с использованием старой командной строки PS1 bash :)

  34. Я люблю счастливое лицо!

  35. Чтобы уточнить для MacOS X:

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

  36. это для поклонников "Звездных войн" и "Красных гномов". Мне было скучно, поэтому я для развлечения собрал эту подсказку. Знаю, ничего особенного, но меня это устраивает: D. Содержит в основном коды отсюда (а верхний текст взят из программы 'figlet')

    Код: http://pastebin.com/QuLzm7HG

    Кстати, можно ли получить часы в 12-часовом формате (было бы неплохо иметь после него статус am / pm)

Комментарии закрыты.