내 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으로 설정 한 후에도 csh
및 sh
에서 동일 합니다. 이 해결 방법은 해당 셸에서도 작동합니다.
스레드 Neil이 우리에게 지적한 문제에 stat64
표시된 것처럼에 버그가 있음에 동의 zsh
합니다. (문제가 결함 및 / 또는 가짜 플래시 메모리로 인해 발생했다고 생각했지만 때로는 그것이 중요한 요소인지 궁금합니다.)
이 버그가 다음에 영향을주는 것으로 나타났습니다.
- 이맥스 ‘dired 모드가 호출하기 때문에
ls
, 그리고 ls
Emacs의 쉘 모드에서 사용될 때.
답변
때때로 드라이브를 제거하면, 드라이브를 다시 삽입 할 때마다 cd를 사용하여 디렉토리로 돌아 가야합니다. 셸에서 디렉토리를 읽기 위해 연 파일 디스크립터는 드라이브를 제거 할 때 무효화되고 드라이브를 다시 삽입 할 때 자동으로 다시 초기화되지 않기 때문입니다 (다른 터미널이나 파일 관리자에서 드라이브를 사용 했더라도).
드라이브를 절대 제거하지 않으면 하드웨어 문제 일 수도 있고 어떤 이유로 드라이브를 마운트 해제하는 소프트웨어 일 수도 있습니다. 시스템 로그를 제공해야합니다.