OK, um pouco de experiência: uso um Mac e faço o máximo possível na CLI.
Em particular, eu freqüentemente coloco um pendrive cp
ou mv
um arquivo e, em seguida, desejo imediatamente ejetar (desmontar e desconectar). Isso geralmente pode ser realizado com algumas teclas, exceto para desmontá-lo, o que requer (na versão 10.7) ir para um espaço vazio na área de trabalho (geralmente a pelo menos dois espaços), selecionar o disco e pressionar "command-e". Francamente, esse procedimento de desmontagem é, por várias ordens de magnitude, a parte mais demorada e tediosa do processo.
Seria muito mais natural e eficiente simplesmente digitar, digamos:
ej<tab> J<tab>
Digamos que meu pendrive seja montado em / Volumes / Jefferson. O que eu esperaria obter das minhas 6 teclas é o seguinte:
eject /Volumes/Jefferson
Isso deve executar o comando:
diskutil unmount /Volumes/Jefferson
Então, eu escrevi uma pequena função agradável:
eject() {
diskutil unmount /Volumes/$1
}
E uma função de conclusão para acompanhar:
compdef '_files -g "/Volumes/*"' eject
Há um problema com isso, no entanto. A _files
função gera caminhos completos. Agora, eu poderia alterar a linha na minha função "ejetar" para diskutil unmount $1
e as coisas funcionariam, mas não tenho a capacidade de digitar a primeira letra do nome do ponto de montagem, pois o caminho começa com / Volumes /. Por exemplo, se eu digitar J<tab
, receberei o preenchimento automático dos arquivos no PWD. Eu teria que digitar /Volumes/J<tab>
para obter a conclusão desejada.
Então, existe uma função de conclusão que captura nomes de arquivos de um local específico predefinido, em vez de gerar caminhos completos?
Eu realmente gostaria de reduzir isso para 6 teclas.