파일에 표시된 파일은 큰따옴표로 묶인 것처럼 보이지만 파일 내의 문자는 작은따옴표로 묶인 것처럼 보이는 이유는 무엇입니까?
"insight_automation.log'.'2024-03-13"
저는 Ubuntu Server 22.04.3 LTS를 사용하고 있습니다. 서버(Atlassian Jira Data Center 9.12.4, 해당되는 경우)에 설치된 서비스 데스크 관리 프로그램은 다양한 로그 파일을 기록합니다. 일부 파일이 순환되고 업데이트 후 실행하면 일부 로그 파일이 위와 같이 표시됩니다.
~$ ls /var/[application-directory-path]/log
다른 로그 파일은 따옴표 없이 표시됩니다. 몇 가지 예:
atlassian-jira.log
atlassian-jira.log.1
insight_audit.log
insight_audit.log.2024-03-05
insight_automation.log
Unix 시스템의 작은따옴표와 큰따옴표에 대한 게시물이 많이 있습니다. 특히 GNU 개발자는 공백이 있는 파일 주위에 작은따옴표를 추가합니다. 나는 이러한 문자와 Unix의 뉘앙스에 어느 정도 익숙하지만 이것은 나에게 새로운 것이며 온라인에서 설명을 찾을 수 없습니다(아마도 문제를 말로 표현하기 어렵기 때문일 것입니다).
로깅 구성 파일을 살펴보니 잘못된 동작과 별 차이가 없습니다.Insights_automation.log회전 설정 및 기타 로그 파일. 내 유일한 추측은 이름의 점이 파일 이름의 공백과 비슷한 방식으로 이스케이프되는 다른 유니코드 문자라는 것입니다. 단일 지점 리더, 불연속 지점 또는 총알이 있을까요?
이 문제는 간단하게 해결할 수 있다고 확신하지만 왜 이런 식으로 나타나는지 알면 많은 도움이 될 것입니다.
답변1
(여기서 질문에 대답하는 것일 뿐이므로 링크된 답변의 기능에 대한 모든 불만 사항을 읽을 필요는 없습니다.)
최신 버전의 GNU ls는 출력을 명확하게 만들기 위해(예: 후행 공백을 표시하기 위해) 기본적으로 터미널에 인쇄할 때 특수 문자로 파일 이름을 따옴표로 묶습니다. 대부분의 경우 작은따옴표를 사용하지만 이름 자체에 작은따옴표가 포함된 경우 전체 이름을 묶기 위해 큰따옴표를 사용할 수 있습니다.
이러한 버전의 ls 중 하나를 사용한다고 가정하면(시스템이 오래되지 않은 경우 아마도 그럴 것입니다) 파일 이름은 이고 insight_automation.log'.'2024-03-13
ls는 이를 로 인쇄합니다 "insight_automation.log'.'2024-03-13"
.
출력은 쉘(어쨌든 Bash)에 대한 입력으로 적합해야 합니다. 예를 들어 다음을 확인할 수 있습니다.
ls "insight_automation.log'.'2024-03-13"
작동하면 파일을 찾을 수 있습니다.
ls
또는 추가 내용 없이 파일 이름을 인쇄 하려면 다음을 실행하세요.
ls -N
대신에. 또는 ls -N *\'*
작은따옴표가 포함된 파일 이름만 일치시킵니다.
파일 이름에 따옴표가 있는 이유는 시스템의 나머지 부분을 살펴보지 않고서는 알 수 있는 방법이 없습니다.