Окрашенная подсказка в KornShell

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

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

Я не знаю, имеет ли Chrome способ сделать это все же.

11
23.05.2017, 14:33
5 ответов

Просто используйте литеральный символ Esc, вводимый с Ctrl-v, Esc (будет отображен как ^[ на экране):

PS1="^[[34mLinux^[[00m"

Или используйте вывод echo команда, которую Вы узнаете, работает:

PS1="$(echo -e "\033[35mLinux\033[00m")"
10
27.01.2020, 19:57
  • 1
    Это время от времени похоже на это, что я понимаю, что я - все же новичок командной строки. Я обычно чувствую себя так хорошо по сравнению с моими друзьями.:) Первая версия работала приятно; какой аккуратный прием! Я не имел успеха со второй версией. +1 –  Kazark 05.07.2012, 21:57

Необходимо вставить литеральный символ ESC PS1 переменная. Ksh88 и клоны, такие как pdksh и mksh (более старые версии) не имеют никакого литерального синтаксиса для управляющих символов кроме через print встроенный. Mksh понимает \e для Escape, но pdksh требует восьмеричного кода \033.

PS1=$(print '\033[34mLinux\033[00m')

ATT ksh93 представляет оставленный из обратной реакции литеральный синтаксис $'…' (также доступный в mksh начиная с R39b). Можно использовать Escape обратной косой черты для помещения управляющих символов в эти литералы.

PS1=$'\e[34mLinux\e[00m'
5
27.01.2020, 19:57
  • 1
    На самом деле, mksh также поддержки $'…' – по общему признанию, потому что Dave Korn (Korn в Korn Shell) настоял, чтобы я добавил его. –  mirabilos 27.02.2014, 16:01
  • 2
    @mirabilos, спасибо. Я, вероятно, ввел тот ответ на машине с mksh R39 и не проверял более новые версии. –  Gilles 'SO- stop being evil' 27.02.2014, 16:09

Я использую их в mksh для пользовательской оболочки :

# custom prompt see http://comments.gmane.org/gmane.os.miros.mksh/126
PS1=$'\a\r\a\e[1;34m\a ^ ^  ^ ^ | \a\e[36m\a${USER:=$(ulimit -c 0; id -un 2>/dev/null || echo
\?)}@${HOSTNAME%%.*}\a\e[34m\a | ^ ^  ^ ^ | \a\e[0;33m\a$(local d=${PWD:-?} p=~; [[ $p = ?(*/) ]] || d=${d/#$p/~};
print -nr -- "$d")\a\e[1;34m\a |\n ^ ^  ^ ^ | \a\e[32m\a$(date +%H:%M)\a\e[34m\a | ^ ^ >>\a\e[0m\a '

и немного другой shell для root :

PS1=$'\a\r\a\e[1;34m\a ^ ^  ^ ^  ^   \a\e[31m\a${USER:=$(ulimit -c 0; \
    id -un 2>/dev/null || echo \?)}@${HOSTNAME%%.*}\a\e[34m\a  ^ ^  ^ ^  ^ ^  ^   \a\e[0;33m\a$(
        local d=${PWD:-?} p=~
        [[ $p = ?(*/) ]] || d=${d/#$p/~}
        print -nr -- "$d"
)\a\e[1;34m\a  ^ ^ \n ^ ^  ^ ^  ^   \a\e[32m\a$(date +%H:%M)\a\e[34m\a  ^ ^  ^ ^   \a\e[0m\a '

enter image description here

Поскольку специальные символы не копировались, вот вставка pastebin как для обычного пользователя, так и для root.

2
27.01.2020, 19:57

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

  1. Управляющие последовательности для вашей терминальной программы приведены в документации.

  2. Как закодировать escape-последовательности терминала в переменной PS1, например \ e или буквальный escape. Это зависит от оболочки.

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

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

    • В bash вы помещаете \ [перед каждой escape-последовательностью и \] после.

    • В ksh вы выбираете один непечатаемый символ ASCII, который не может встретиться где-либо еще в строке. В начале строки вы пишете этот символ, за которым следует возврат каретки ASCII. Затем вы пишете один и тот же символ до и после каждой escape-последовательности. z3ntu выбрал \ a в качестве символа-маркера.

1
27.01.2020, 19:57

Благодаря предыдущим ответам и другим источникам я смог придумать эти:

Приглашение оболочки Korn:

PS1="$(echo "\033[32m`logname`\033[35m@\033[32m`hostname` \033[33m`pwd`\033[36m\n\$\033[0m")"

Подсказка Bash:

PS1="\[\e[32m\]\u\[\e[35m\]@\[\e[32m\]\h \[\e[33m\]\w\[\e[36m\]\n\$\[\e[0m\]"

Они дают такую ​​же цветную подсказку (да, я говорю по-английски;))в формате:

username@computername /current/working/directory
$

Эквивалент (для DOS, хотя и нет вариантов цвета ), это:

prompt %username%@%computername% $P$_$G

, что дает:

username@computername /current/working/directory
>

«>» означает «DOSsy», а не «nixy» с «$»,но если бы вы хотели сигил ("$" )вместо этого, то это было бы:

prompt %username%@%computername% $P$_$$

При условии, что ваша учетная запись имеет необходимые разрешения, чтобы «никси» постоянно добавлялись к ним с «экспортом»:

export PS1="..."

и измените DOSsy на:

setx PROMPT "%username%@%computername% $P$_$G"

или

setx PROMPT "%username%@%computername% $P$_$$"
0
27.01.2020, 19:57

Теги

Похожие вопросы