Esse comportamento não é o mesmo em todos os shells.
O shell Bourne Again se comporta como você descreve, exibindo o nome do arquivo em uma notação que não corresponde a como esses caracteres são inseridos no shell. O shell TENEX C faz o mesmo. Em nenhum deles a sequência de dois caracteres ^C
corresponde ao nome de arquivo de um caractere.
O shell Almquist e Korn apenas escreve o caractere de controle, que não faz nada em muitos terminais, e inclui uma largura de 1, que é assim errônea, em seus cálculos de largura de coluna ao exibir a lista de conclusão. Isso elimina o alinhamento da coluna.
O shell Z é o único shell que faz algo relacionado ao uso de entrada de comando. Sua conclusão de tabulação baseada em menu exibe o nome do arquivo como $'
. Isso é exatamente o que alguém escreve com (digamos) o comando rm
3'rm
, e é exatamente qual preenchimento de tabulação do ZLE preencherá o comando -w
, para remover o arquivo com o shell Z:
rm $'rm $'%pre%3'3'
Pode-se combinar com as munições de Korn e Almquist.
Isso é trivial.
A opção ls
simplesmente faz com que o caractere de controle seja enviado como está, o que novamente não faz nada em muitos terminais. Mas pelo menos ls
tem o nous para perceber que tem uma largura de 0 e não obtém os cálculos de alinhamento da coluna errados.
Sim, isso é FreeBSD / TrueOS ls
.
E não há configuração para -B
para corresponder ao comportamento dos outros.
Tanto -b
como $'…'
fazem com que uma seqüência octal de escape simples seja impressa, não havendo uma seqüência especial de escape C para esse caractere. Mas nenhum shell apresenta uma sequência de escape octal sem adulteração na lista de conclusão. O shell Z é o mais próximo, mas usa %code% ao redor da sequência de escape octal em suas conclusões.
Não há nada que corresponda ao modo como as camadas Bourne Again e TENEX C exibem o nome do arquivo.
Localidades
As localidades são em grande parte irrelevantes aqui. Esse caractere é um caractere de controle não imprimível, praticamente independente do local. A gama C0 (pace EBCDIC fans) é universalmente considerada como sendo de controlo.