zsh 완료: 특정 디렉터리에서 파일 이름 가져오기

zsh 완료: 특정 디렉터리에서 파일 이름 가져오기

좋아요, 약간의 배경 지식: 저는 Mac을 사용하고 가능할 때마다 CLI에서 모든 작업을 수행합니다.

특히 USB 스틱 cp이나 mv파일을 삽입한 후 즉시 꺼내고(마운트 해제 및 연결 해제) 싶은 경우가 많습니다. 이는 마운트 해제를 제외하고 일반적으로 몇 번의 키 입력으로 수행할 수 있습니다. 이를 위해서는 (10.7에서) 빈 데스크탑 공간(보통 최소 두 공간 떨어져 있음)에 들어가서 디스크를 선택하고 "command-e"를 눌러야 합니다. 솔직히 말해서 이 제거 프로세스는 전체 프로세스 중 가장 시간이 많이 걸리고 지루한 부분입니다.

다음을 입력하는 것이 더 자연스럽고 효율적입니다.

ej<tab> J<tab>

내 USB 스틱이 /Volumes/Jefferson에 마운트되어 있다고 가정해 보겠습니다. 6번의 키 입력으로 예상되는 결과는 다음과 같습니다.

eject /Volumes/Jefferson

다음 명령을 실행해야 합니다.

diskutil unmount /Volumes/Jefferson

그래서 저는 멋진 작은 함수를 작성했습니다.

eject() {
    diskutil unmount /Volumes/$1
}

이에 어울리는 완성 함수도 있습니다:

compdef '_files -g "/Volumes/*"' eject  

그러나 문제가 있습니다. 이 _files함수는 전체 경로를 생성합니다. 이제 "eject" 기능의 행을 다음으로 변경할 수 있으며 diskutil unmount $1모든 것이 작동하지만 경로가 /Volumes/로 시작하기 때문에 마운트 지점 이름의 첫 글자를 입력할 수 없습니다. 예를 들어 를 입력하면 J<tabPWD에서 파일이 자동 완성됩니다. /Volumes/J<tab>원하는 완성을 얻으려면 입력을 해야 합니다 .

그렇다면 전체 경로를 생성하는 대신 미리 정의된 특정 위치에서 파일 이름을 가져올 수 있는 완성 함수가 있습니까?

키 입력 횟수를 6개로 줄이고 싶습니다.

답변1

_files -W /Volumes

문서 보기_path_files.

관련 정보