zsh를 사용하여 다음 명령을 탭하여 완료하려고 하면 ls /proc/self/fd/
다음이 표시됩니다.
files
0@ 1@ 10@ 11@ 12@ 13 2@ 3
그러나 Enter(완료되지 않음)를 누르면 다음이 표시됩니다.
> ls /proc/self/fd/
0 1 2 3
현재 셸의 파일 설명자를 나열하면 다른 결과가 나타납니다.
> ls /proc/$$/fd/
0 1 10 2
이 세 가지 결과가 다른 이유는 무엇입니까?
답변1
ls /proc/self/fd
프로세스에 대해 열려 있는 파일 설명자를 표시하는 것부터 시작 하겠습니다 ls
. 이는 ls
읽고 있는 디렉터리에 대한 세 가지 표준 입력, 출력 및 오류 설명자입니다 .
ls /proc/$$/fd
ls
런타임 시 셸에 여전히 열려 있는 파일 설명자(3개의 표준 설명자 및 zsh
터미널 파일 설명자 복사본)를 표시합니다(10).
탭 완성에는 ls /proc/self/fd/
열린 파일 설명자가 표시됩니다.그 순간껍질을 위해. 표시된 내용 외에도 ls /proc/$$/fd
여기에는 완료 자체를 위해 열린 파일 설명자( /usr/share/zsh/.../functions
완료를 구현하는 파일에 대한)도 포함됩니다.