好的,有一点背景知识:我使用的是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次击键。