Sempre que uso ferramentas de linha de comando, gosto de ter certeza de que a saída pode ser interpretada sem ambiguidade. Em uma das minhas outras máquinas, eu escrevi um script de shell que encontraria todos os links simbólicos que residem em um caminho específico e os imprimia no console para que parecesse com "<Escaped Path To Symbolic Link>" \e[91m=>\e[0m "<Escaped Path To Target>"
. Os códigos de escape ANSI são analisados nesse script; <Escaped Path To Symbolic Link>
e <Escaped Path To Target>
são os caminhos para o link simbólico e seu destino, respectivamente, com todos os caracteres não imprimíveis que escaparam, de modo que saiam como \xHH
no console (em que H
é um dígito hexadecimal).
No acima, não há ambigüidade. Se o link simbólico ou seu caminho de destino contiver =>
, ele será distinguível da separação do delimitador porque o delimitador será exibido como texto vermelho. Se um dos caminhos contiver um código de escape ANSI, o caractere de escape aparecerá no console como \e
, eliminando qualquer chance de que possa haver algo diferente de um vermelho =>
. Uma nova linha seria processada como \n
e as aspas duplas apareceriam como \"
.
Eu estou ciente de três maneiras que desambiguem ainda mais a saída de tree
de alguma forma:
-q
fará tree
exibir caracteres não imprimíveis como ?
. Qualquer efeito que eles possam ter na saída é negado. -C
ativa a colorização. Se isso for usado em conjunto com -F
, os caracteres anexados serão distinguíveis dos nomes aos quais estão afixados por serem de uma cor diferente. Dessa forma, um arquivo cujo nome termina com um sinal de igual será distinguível de um soquete. O uso de ambas as opções ainda deixa ambíguo quanto a qual caractere qualquer ?
que tenha sido substituída por uma não imprimível representa e não é distinguível de pontos de interrogação que são, na verdade, parte do nome do arquivo ou da pasta. Se a sequência ->
, que é usada para indicar para o qual um link simbólico aponta, estiver em um caminho, ela será distinguível graças aos espaços nos caminhos que estão sendo convertidos em \
.
Como posso tornar a saída completamente inequívoca?
Tags tree