Por que um arquivo apareceria entre aspas duplas com um caractere entre aspas simples?
"insight_automation.log'.'2024-03-13"
Estou usando o Ubuntu Server 22.04.3 LTS. Um programa de gerenciamento de central de serviços (Atlassian Jira Data Center 9.12.4, se for relevante) instalado no servidor grava em vários arquivos de log. Alguns dos arquivos são girados e, após uma atualização, alguns dos arquivos de log são exibidos conforme mostrado acima quando eu executo
~$ ls /var/[application-directory-path]/log
Outros arquivos de log são exibidos sem aspas. Alguns exemplos:
atlassian-jira.log
atlassian-jira.log.1
insight_audit.log
insight_audit.log.2024-03-05
insight_automation.log
Existem muitos posts sobre aspas simples e duplas em sistemas Unix, especialmente com os desenvolvedores GNU adicionando aspas simples em torno de arquivos com espaços. Estou um pouco familiarizado com as nuances que cercam esses personagens e o Unix, mas isso é novo para mim e não consigo encontrar uma explicação em nenhum lugar online (provavelmente porque é difícil formular o problema).
Examinei os arquivos de configuração de log e nada parece diferente entre as configurações de rotação inadimplentes do insight_automation.log e os outros arquivos de log. Meu único palpite é que o ponto no nome é um caractere Unicode diferente que tem escape semelhante ao dos espaços nos nomes de arquivos. Talvez One Dot Leader, Interpunct ou Bullet?
Tenho certeza de que posso resolver o problema de forma simples, mas saber por que ele é exibido dessa forma ajudaria muito.
(Vou responder aqui para que você não precise ler todas as reclamações sobre esse recurso na resposta vinculada.)
Versões recentes do GNU ls por padrão agrupam nomes de arquivos com caracteres especiais entre aspas, ao imprimir em um terminal, com o propósito de tornar a saída inequívoca e, por exemplo, tornar visíveis quaisquer espaços finais. Na maioria dos casos, eles usam aspas simples, mas se o próprio nome contiver aspas simples, eles poderão usar aspas duplas para envolver o nome inteiro.
Supondo que você esteja usando uma dessas versões de ls (o que é provável se o seu sistema não for antigo), seu nome de arquivo é
insight_automation.log'.'2024-03-13
e ls o imprime entre aspas"insight_automation.log'.'2024-03-13"
.A saída deve ser adequada como entrada para o shell (bem, para o Bash de qualquer maneira), para que você possa verificar, por exemplo
que, se funcionar, deverá encontrar seu arquivo.
Ou, se quiser
ls
imprimir o nome do arquivo sem extras, executeem vez de. Ou
ls -N *\'*
algo assim para corresponder apenas a nomes de arquivos que contenham aspas simples.Quanto ao motivo de você ter um nome de arquivo entre aspas, não podemos saber sem ver o resto do seu sistema.