( Crossposted do StackOverflow.com )
Esta questão e a resposta nos ensina a introduzir cores nos prompts do tcsh.
Esta página da Web explica bem como obter cores em qualquer saída do comando echo
:
> echo \e[1\;30mBLACK\e[0m
BLACK
> echo '\e[1;30mBLACK\e[0m'
BLACK
A palavra 'BLACK' no exemplo acima é impressa com uma cor de primeiro plano preta (ou escura) (dependendo do esquema geral de cores).
Agora, gostaria de introduzir isso no recurso de preenchimento automático do comando [TAB]
de tcsh
. Eu tentei:
complete testcmd 'p/*/'echo '"'"'\e[1;30mf834fef\e[0m'"'"''/'
E eu recebo:
> testcmd [TAB]
> testcmd ^[\[1\;30mf834fef^[\[0m
Obviamente, os personagens perdem seu significado especial. Espero que eu não tenha conseguido escapar direito. Mas eu tentei várias outras maneiras. Então, qualquer ajuda é apreciada.
O caso de uso real é que eu tenho uma conclusão de comando que oferece três tipos diferentes de conclusões e gostaria de distinguir visualmente os tipos. Além disso, as alternativas são calculadas por um comando externo. É por isso que eu preciso da conclusão para usar os backticks com um comando externo, como echo
. Eu não me importo com os detalhes desse comando. Se você fizer isso funcionar de alguma forma com o comando tcsh
complete
, provavelmente serei capaz de me adaptar (pensando em perl -pe
wrappers e outros).
A razão pela qual eu acredito que isso tem para funcionar de alguma forma é que o próprio tcsh oferece a conclusão de comando colorida se você, por exemplo. escreva ls [TAB]
. Isso funciona corretamente na minha configuração. Além disso, você pode usar ls -1F
dentro do preenchimento automático e as cores que ls
outputs também são canalizadas. Um exemplo seria:
complete testcmd 'p/*/'ls -1F'/'
Atualização: Como o usuário mavin aponta no stackoverflow , a colorização de ls
neste exemplo não é de fato canalizada através. As cores de ls
são perdidas, mas a conclusão automática pode reaplicar as cores de acordo com a variável LS_COLOURS com base em dicas como as divisões do marcador /
e *
, conforme adicionadas pelo ls. Isso pode ser verificado ao fazer
complete testcmd 'p/*/'ls --color -1'/'
que não fornece cores e fornece apenas resultados distorcidos. (Literalmente canaliza as seqüências de caracteres de escape)
Estou em tcsh
versão 6.13.00
Alguma ideia? Ponteiros?