LS를 사용할 때 파일 이름 앞에 예기치 않은 문자가 나타남

LS를 사용할 때 파일 이름 앞에 예기치 않은 문자가 나타남

우리는 YunDiskExpander 스케치를 통해 extroot용으로 512MB를 갖도록 파티션된 32GB sandisk microSD에 extroot를 설정한 Arduino Yun Rev 2를 가지고 있습니다.

그러나 이상하게도 ls를 사용할 때마다 결과에는 한 [자리 숫자(일반적으로 1), ;두 자리 숫자(일반적으로 34) 문자가 m앞에 붙고 파일 또는 폴더 이름이 표시되며 항상 [m여기에 추가됩니다. 이는 Arduino에서 vim을 실행할 때 모든 문자에서 발생하는 것 같습니다.

공개적으로 사용 가능한 직렬 모니터를 통해 터미널 스케치로 액세스하고 있습니다. 이러한 예상치 못한 문자는 개발을 현저하게 방해하므로 도움을 주시면 대단히 감사하겠습니다.

답변1

설명하신 내용은 (일부)이스케이프 시퀀스텍스트의 전경색 변경을 담당합니다. 내 데비안에서는 ls다음 예제 출력을 생성할 수 있습니다:

^[[01;34mfoobar^[[0m

여기서는 ^[단일 문자(이스케이프 문자( 0x1b))를 나타냅니다. 이를 지원하는 단말기는 해당 데이터를 수신한 후 foobar파란색으로 인쇄되어야 합니다. 당신은 0을 언급하지 않았고 내 테스트에서도 ^[[1;34mfoobar^[[m작동하는 것으로 나타 났으므로 아마도 ls후자 형식을 생성했을 것입니다.

ls출력 색상을 지정하려고 시도하지만 어떤 이유로든 전송 중에 이스케이프 문자가 손실된 것처럼 보이거나 올바르게 전송되었지만 터미널이 이를 무시합니다(해당 표현을 인쇄하지도 않고 뒤따르는 제어 시퀀스도 인식하지 않음). 실제로 다음을 볼 수 있습니다.

[1;34mfoobar[m

옵션이 없는 순수는 ls색상을 사용하면 안되고,POSIX색상에 대해서는 아무 말도하지 않습니다. 그럼에도 불구하고 구현에서는 출력에 색상을 지정하는 옵션을 제공할 수 있으며 가 ls에 대한 별칭이 되는 것이 일반적입니다 ls --color=auto. 일반적으로 이는 잘 작동하며 사용자는 별칭이 관련되어 있다는 사실조차 모를 수도 있습니다. 이 시나리오가 귀하의 사례에 적합한지 확인하십시오 alias ls. 나는 그럴 것이라고 생각한다.

가능한 해결책:

  • 요청 시 옵션을 무시합니다: ls --color=no;
  • 요청 시 별칭을 우회합니다: command ls;
  • 별칭을 삭제합니다(쉘 세션당 한 번): unalias ls;
  • 별명이 정의된 시작 스크립트를 찾아 관련 행을 삭제하거나 주석 처리하십시오. 이것은 영구적인 해결책입니다.

관련 정보