“ls”가 산발적으로“.”만 출력하는 이유는 무엇입니까? 외장 드라이브의 루트 디렉토리에 있습니까?


9

내 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같으며 동일한 결과를 제공합니다.


2
이 비정상적인 작동은 별명 오작동의 결과 일 수 있습니다. 사용하면 어떻게됩니까 /bin/ls?
DopeGhoti

다른 디렉토리에서 잘 작동합니까?
Liam

/bin/ls동일한 결과를 제공하며 때로는 출력 .합니다. ls다른 디렉토리에서 정상적으로 작동하는 것으로 보입니다. ls NO\ NAME심지어 부모 디렉토리에서 ls ..잘 작동하는 것처럼 보이고 자식 디렉토리에서 잘 작동하는 것 같습니다. (하지만 행동이 처음부터
결정적이지

해당 플래시 드라이브에서 어떤 파일 시스템을 사용하고 있습니까? 아마도 일부는 Windows 기반 파일 시스템에서 파생 된 것일 수 있습니다.
RSFalcon7

어떤 버전 ls을 사용하고 있습니까? /bin/ls --version작동해야 함
RSFalcon7

답변:


6

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

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


2

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

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

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의 쉘 모드에서 사용될 때.

2
Goro가 왜 수정을했는지 이해할 수 없으며 수정 요약이 제공되지 않았습니다. 나는 그들이 대답을 더 나쁘게 만들었다 고 생각한다. 그리고 나는 그것이 -1을 받았다고 본다. 해결 방법을 제공했는데 '해결 방법'표시기를 제거하면 직접 답변을 제공한다고 주장하거나 시도하는 것처럼 보입니다. 나는 의견보다 더 많은 답변을 제공한다고 생각합니다. 장려하지 않습니까? 나는 새로운 것을 발견했다. 편집 요약과 -1의 이유가 적절하지 않습니까? Goro는 또한 내가 추가 한 더 짧고 더 나은 답변을 제거했습니다. 나는 그것을 얻지 못한다.
Matthew Elvey

1
나는 울타리에있다. 일반적으로 답변은 더 많은 정보를 제공 할뿐만 아니라 질문에 대답해야하지만 문제를 해결하는 것은 구체적으로 언급하지 않았더라도 문제를 찾은 부분의 일부일 것입니다. 대부분의 편집 내용은 불필요하게 보이며 적어도 하나는 서식을 엉망으로 만들었으므로 롤백했습니다. 게시물에 다운 보트가 있는지 확실하지 않지만 현재 2 개의 보컬과 0 개의 다운 보트
Michael Mrozek

0

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.