OK, sedikit latar belakang: Saya menggunakan Mac, dan saya melakukan sebanyak mungkin di CLI.
Secara khusus, saya sering memasukkan USB stick, cp
atau mv
file lebih, dan kemudian segera ingin mengeluarkan (unmount dan lepaskan) itu. Ini biasanya dapat dilakukan dalam beberapa penekanan tombol, kecuali untuk unmount, yang mengharuskan (dalam 10.7) pergi ke ruang desktop yang kosong (biasanya setidaknya dua ruang jauhnya), memilih disk, dan menekan "command-e". Sejujurnya, prosedur unmount ini, dengan beberapa urutan besarnya, bagian proses yang paling memakan waktu dan melelahkan.
Akan jauh lebih alami dan efisien untuk hanya bisa mengetik, katakan:
ej<tab> J<tab>
Ucapkan stik USB stick saya di / Volume / Jefferson. Apa yang saya harapkan dari 6 penekanan tombol adalah sebagai berikut:
eject /Volumes/Jefferson
Ini harus menjalankan perintah:
diskutil unmount /Volumes/Jefferson
Jadi, saya menulis fungsi kecil yang menyenangkan:
eject() {
diskutil unmount /Volumes/$1
}
Dan fungsi penyelesaian untuk menyertainya:
compdef '_files -g "/Volumes/*"' eject
Namun, ada masalah dengan ini. The _files
Fungsi menghasilkan jalur lengkap. Sekarang, saya dapat mengubah baris dalam fungsi "eject" saya diskutil unmount $1
, dan semuanya akan berfungsi, tetapi kemudian saya tidak memiliki kemampuan untuk mengetik huruf pertama dari nama titik mount, karena jalur dimulai dengan / Volume /. Misalnya, jika saya mengetik J<tab
, saya akan mendapatkan pelengkapan otomatis untuk file di PWD. Saya harus mengetik /Volumes/J<tab>
untuk mendapatkan penyelesaian yang diinginkan.
Jadi, apakah ada fungsi penyelesaian yang mengambil nama file dari lokasi yang telah ditentukan, spesifik, daripada menghasilkan jalur lengkap?
Saya benar-benar ingin mendapatkan ini hingga 6 penekanan tombol.