“ls”가 산발적으로“.”만 출력하는 이유는 무엇입니까? 외장 드라이브의 루트 디렉토리에 있습니까? 정상이며 파일이 나열됩니다. 다른

내 USB 플래시 드라이브의 루트 디렉토리에서 때로는 내가 실행할 때 ls출력이 정상이며 파일이 나열됩니다. 다른 경우에는 출력이 단순히 한 줄입니다.

$ ls
.

ls -la그 시간 중 하나를 시도 하면 다음과 같은 결과를 얻습니다.

$ ls -la
ls: .: Invalid argument

ls여러 번 연속해서 실행하면 기본적으로 정상적인 출력 또는 비정상적인 출력을 무작위로 반환하는 것 같습니다.

ls다른 디렉토리에서 정상적으로 작동하는 것으로 보입니다. ls $drivename심지어 부모 디렉토리에서 ls ..잘 작동하는 것처럼 보이고 자식 디렉토리에서 잘 작동하는 것 같습니다. (동작이 결정되지 않기 때문에 “정상적으로 작동하는”것을 100 % 확신 할 수는 없지만) 다른 두 개의 외부 USB 드라이브를 시도했지만 동일한 동작을 얻었습니다.

무슨 일이야? Mac OS X 10.11.3에 있습니다.

편집 : 좋은 생각이지만 별칭을 사용하지 않는 것 /bin/ls같으며 동일한 결과를 제공합니다.



답변

최신 버전의 OSX에서 FAT32 용 파일 시스템 드라이버의 버그 일 수 있습니다. 또한 작업 디렉토리가 마운트 된 드라이브의 루트에있을 때만 나타납니다. 하위 디렉토리 또는 시스템의 다른 곳에 있으면 작동하는 것 같습니다.

이 스레드에는 시스템 트레이스를 포함하여 흥미로운 토론이 있습니다.
https://github.com/robbyrussell/oh-my-zsh/issues/4161


답변

해결 방법 : (구독자가 특별히 요청하지 않더라도 감사자가 감사하게 생각하는 것의 일부)

거의 다른 방식으로 현재 디렉토리를 참조하십시오 .. 예:

cd하위 디렉토리로 이동 한 다음 ls상위 디렉토리에서 실행 하십시오. 즉, 다음과 같이 입력하십시오 :

mkdir S; cd S ; /bin/ls -al ..

또는 전체 경로 이름으로 참조하십시오. 예:

ls /Volumes/microSD007

나에게,이 해결 방법 중 하나 ls는 OP 가보고 한 것과 동일한 잘못된 출력을 줄 때 작동합니다 (즉, 예상 출력이 발생 함) . (그리고 저에게는 ls이상하게 행동 할 때 dmesg에 출력이 없습니다 .)

bash를 실행하는 Terminal.app의 10.12.6에서 동일한 오작동이 발생합니다. TERM을 vt100으로 설정 한 후에도 cshsh에서 동일 합니다. 이 해결 방법은 해당 셸에서도 작동합니다.

스레드 Neil이 우리에게 지적한 문제에 stat64표시된 것처럼에 버그가 있음에 동의 zsh합니다. (문제가 결함 및 / 또는 가짜 플래시 메모리로 인해 발생했다고 생각했지만 때로는 그것이 중요한 요소인지 궁금합니다.)

이 버그가 다음에 영향을주는 것으로 나타났습니다.

  • 이맥스 ‘dired 모드가 호출하기 때문에 ls, 그리고
  • ls Emacs의 쉘 모드에서 사용될 때.

답변

때때로 드라이브를 제거하면, 드라이브를 다시 삽입 할 때마다 cd를 사용하여 디렉토리로 돌아 가야합니다. 셸에서 디렉토리를 읽기 위해 연 파일 디스크립터는 드라이브를 제거 할 때 무효화되고 드라이브를 다시 삽입 할 때 자동으로 다시 초기화되지 않기 때문입니다 (다른 터미널이나 파일 관리자에서 드라이브를 사용 했더라도).

드라이브를 절대 제거하지 않으면 하드웨어 문제 일 수도 있고 어떤 이유로 드라이브를 마운트 해제하는 소프트웨어 일 수도 있습니다. 시스템 로그를 제공해야합니다.