Como se constata, há uma solução 100% portátil, com a vantagem adicional de não depender de nenhum utilitário externo ao sabor dos empacotadores e mantenedores!
Depois de arranhar a superfície das gigantescas páginas zsh
man, encontrei uma característica obscura e provavelmente pouco conhecida.
Portanto, temos expansão de chave para variáveis (ou parâmetros em zsh
-speak). Acontece que há um monte de sinalizadores que você pode usar ao fazer a expansão de chaves de uma variável. e coisas notavelmente úteis podem ser feitas com tais bandeiras. Portanto, se eu armazenar unsightly apnd potencialmente termcaps de bloqueio de terminal em uma variável, tudo que eu tenho que fazer é usar o (V)
flag quando echo
ing print
ing ou em algum momento enquanto assgning para uma nova variável. e terá exatamente o mesmo efeito que o utilitário vis(1)
acima mencionado. Internamente, na verdade, é strvis(3)
reimplementado.
então minha solução foi esta:
zmodload zsh/terminfo
typeset terminal_reset_sequence=$terminfo['rs2'] #toxic! locks terminal if echoed!
echo ${(V)terminal_reset_sequence} # Perfectly safe like piping trough vis(1)
como bônus, encontrei os sinalizadores (Q)
e (z)
, que farão a cotação correta do shell ( (Q)
) em qualquer sequência contendo barras, oitavas, aspas simples e duplas. Magicamente torna-os seguros para shell, enquanto (z)
se eu entendi corretamente, irá " descascar " um nível de citação de uma maneira segura em shell em qualquer string entre aspas aninhadas. Gostaria de saber sobre estes dois anos atrás! : C