De acordo com este post do StackOverflow , é possível ter um prompt colorido no KornShell. Não consegui descobrir como fazer isso. Eu sou capaz de usar cores:
echo -e "\033[34mLinux\033[00m"
fornece uma saída azul "Linux", assim como:
printf "\033[34mLinux\033[00m"
No entanto, quando eu incorporo os códigos de escape na minha PS1
variável de prompt, eles não estão sendo escapados. O que preciso fazer para obter um prompt colorido? Além de ser um otário para os olhos, acho que um prompt colorido é útil ao analisar visualmente a saída.
Você precisa colocar um caractere de escape literal na
PS1
variável. Ksh88 e clones como pdksh e mksh (versões mais antigas) não têm sintaxe literal para caracteres de controle, exceto através doprint
built-in. Mksh entende\e
como escapar, mas pdksh requer o código octal\033
.O ATT ksh93 apresenta a sintaxe literal com escape de folga
$'…'
(também disponível no mksh desde R39b). Você pode usar escapes de barra invertida para colocar caracteres de controle nesses literais.fonte
mksh
também suporta$'…'
- reconhecidamente porque Dave Korn (o Korn no Korn Shell) insistiu que eu o adicionasse.Eu os uso
mksh
para um usuárioshell
:e um pouco diferente
shell
pararoot
:Como os caracteres especiais não foram copiados, eis uma pasta pastebin para o usuário normal e a raiz.
fonte
Várias coisas estão acontecendo nas respostas das pessoas, cada uma envolvendo uma sintaxe diferente.
As seqüências de escape para o seu programa de terminal fornecidas na documentação.
Como codificar as seqüências de escape do terminal na variável PS1, por exemplo \ e ou escape literal. Isso depende do shell.
Como adicionar informações alteradas ao prompt, por exemplo, o nome do host, o diretório atual, etc. Isso também depende do shell. Você pode usar sequências especiais de barra invertida como \ w para o diretório de trabalho, ou pode precisar nomear variáveis de ambiente ou incorporar linhas de comando na string.
Como dizer ao shell quais caracteres são impressos e quais não. O shell não sabe onde as seqüências de escape do terminal começam e terminam. Se o shell tiver um editor de linha de comando ou algo semelhante, ele precisará saber quais caracteres serão impressos para saber onde está o cursor. Sem esse detalhe, seu prompt pode parecer correto, mas a edição pode se comportar de maneira estranha.
No bash, você coloca \ [antes de cada sequência de escape e \] depois.
No ksh, você escolhe um único caractere ASCII não imprimível que não pode ocorrer em nenhum outro lugar da sequência. No início da string, você escreve esse caractere seguido de um retorno de carro ASCII. Então você escreve o mesmo caractere antes e depois de cada sequência de escape. O z3ntu escolheu \ a como o caractere marcador.
fonte
Graças a respostas anteriores e outras fontes, pude sugerir:
Prompt do shell Korn:
Promessa do Bash:
Eles dão o mesmo prompt colorido (sim, eu falo inglês da rainha;)) no formato:
O equivalente do DOS (embora não haja opções de cores) é:
que dá:
O ">" mantém 'DOSsy' em vez de 'nixy' com "$", mas se você quisesse o sigil ("$"), seria:
Desde que sua conta de login tenha as permissões necessárias, para tornar os 'nixies' permanentes, adicione-os com "export":
e mude o DOSsy para:
ou
fonte