Linux 쉘은 ls를 사용할 때 최신 정보를 인쇄하지 않습니다. 예를 들어 다른 프로세스(IDE 등)를 사용하여 일부 디렉터리를 만듭니다. 그러나 ls 명령을 실행하면 이러한 디렉터리를 볼 수 없습니다. ls 출력에 디렉터리가 표시되는 데 일반적으로 몇 초(때로는 몇 분)가 걸립니다.
뭐가 문제 야? 강제로 새로고침할 수 있나요? 이상적으로는 "ls"라고 말할 때 캐시된 결과보다는 입력된 명령의 상태를 확인하고 싶습니다.
파일 시스템이 NFS 공유가 아닙니다. 내가 생각할 수 있는 유일한 다른 점은 Eclipse에서 실행할 때 프로그램에 의해 디렉토리가 생성된다는 것입니다(그리고 디스플레이는 내 로컬 Windows 상자로 라우팅됩니다).
이것이 상황에 어떤 영향을 미칠지 궁금합니다.
답변1
ls
bash
어떤 껍질과도 관련이 없습니다. .
커널에 목록을 요청하여 숨겨진 파일(이름이 다음으로 시작하는 파일)을 제외하고 디렉터리의 내용을 나열합니다 .
표시되지 않으면 ls
해당 운영 체제가 존재하지 않거나(운영 체제에 관한 한) 잘못된 디렉토리가 나열된 것입니다.
예를 들어, 현재 디렉토리의 이름이 발 아래에서 바뀌는 경우에 발생합니다. 좋다:
$ pwd
/tmp/1
$ ls
x
$ mv /tmp/1 /tmp/2
$ pwd
/tmp/1 # (/tmp/1 has been renamed but the shell is not aware of it)
$ mkdir /tmp/1
$ touch /tmp/1/y
$ pwd
/tmp/1
$ ls # (ls is still listing `.` which has not changed, but now is a hardlink to `/tmp/2`, while `/tmp/1` is some new directory)
x
$ pwd -P # (double check what the current directory is)
/tmp/2
$ cd /tmp/1
$ ls
y