좋아, 약간의 배경 : 나는 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<tab
하면 PWD의 파일에 대한 자동 완성이 제공됩니다. /Volumes/J<tab>
원하는 완성을 얻으려면 입력 해야합니다.
그렇다면 완전한 경로를 생성하는 대신 미리 정의 된 특정 위치에서 파일 이름을 가져 오는 완성 기능이 있습니까?
나는 이것을 6 번의 키 입력으로 낮추고 싶습니다.