Saya sering menggunakan open -a
perintah di Terminal untuk membuka aplikasi melalui ssh. Bagaimana cara membuatnya secara otomatis melengkapi nama aplikasi?
terminal
auto-complete
daviesgeek
sumber
sumber
open -a /Applications/Textedit.app foo.txt
(saya berasumsi itulah yang Anda coba lakukan). Jika Anda menekan Tab setelah/A
dari/Applications
dan kemudian Tab lagi setelah/Te
dari/Textedit.app
maka yang harus melengkapi otomatis kedua bagian untuk Anda sebagai Anda pergi. Tidak ideal, saya akui, tapi mungkin sedikit lebih baik. Ini menggunakan Bash.Jawaban:
Versi ketiga, yang sekarang harus peka huruf besar kecil dan berfungsi dalam tanda kutip.
sumber
DVD Player
. Ada ide apa yang salah? Sepertinya Tab bukan spasi ...IFS=$'\n'
. Lagi pula, saya mengedit jawabannya lagi.mdfind
gagasan itu. Kerja bagus untuk optimasi dan perbaikan.CoreServices
mungkin preferensi pribadi. Apa alasannyanospace
? Jika hanya ada 1 program, saya ingin langsung melanjutkan dengan membuka filen. Hanya preferensi pribadi? Adakah gagasan tentang masalah kutipan yang tersisa? AFAICT, itulah satu-satunya yang tersisa untuk solusi yang tepat.-a
bendera di bagian akhir, jadi saya kira-o nospace
itu hanya pilihan pribadi. Mungkin kita harus melakukan ping Brett Terpstra atau sesuatu untuk menyelesaikan nerdfest ini ...Tambahkan yang berikut ke Anda
.bash_profile
atau.bashrc
dan luncurkan sesi baru:Tidak perlu menginstal apa pun. Ini berfungsi dengan di
bash
luar kotak.Ini hanya akan melengkapi nama program secara otomatis jika opsi sebelumnya
-a
menunjukkan perilaku default, misalnya mengembalikan daftar semua file di direktori saat ini atau menyelesaikan awalan jalur saat ini.Hasilnya dihasilkan dari
system_profiler SPApplicationsDataType
, yang merupakan cara termudah untuk mendapatkan semua aplikasi yang dapat diluncurkan dengan cara ini pada sistem Anda seperti itu. Daftar diproses untuk hanya mengembalikan nama-nama program, yang dapat berisi spasi dan dapat berbeda dari nama bundel (bahkan ketika mengabaikan.app
suffix)Penggunaan: Ketik
open -a
, diikuti spasi, diikuti dengan menekanTab
atauEsc
(dua kali pada sistem saya, tidak yakin apakah ada di mana-mana).Contoh memperlihatkan semua aplikasi pembantu untuk pemindai saya:
Kelemahan dan masalah dari solusi ini:
Ada banyak program di sistem Anda yang mungkin tidak Anda sadari, seperti semua yang ada di dalamnya
/System/Library/CoreServices
. Anda mungkin tidak ingin mendaftar semuanya. OTOH, sangat mudah dilihat dan diluncurkan misalnyaCharacterPalette
atauKeyboardViewer
dengan cara ini. * Konfigurasikanmdfind
panggilan dengan-onlyin
argumen yang tepat.Agak lambat, karenaSekarang gunakansystem_profiler SPApplicationsDataType
. Anda mungkin perlu menunggu satu atau dua detik sebelum selesai muncul.mdfind
untuk mendapatkan program dengan cepat. Terima kasih @LriItu dapat menangani spasi dalam nama aplikasi, dan kutipan nama program terlampir, tapi itu agak hacky. Ini membutuhkan kutipan untuk menjadi karakter pertama: Meskipun
Scan" to "P
validbash
, program ini tidak akan mendeteksinya. Penyelesaian tidak berfungsi setelah ruang yang lolos baik (misalnyaScan\ to
), gunakan tanda kutip dalam kasus tersebut ("Scan to
). Dukungan untuk ruang lolos hanya baik untuk menyelesaikanDVD
keDVD\ Player
.sumber
mdfind 'kMDItemKind==Application'
lebih cepat? Jikacompletion-ignore-case
diaktifkan, grep mungkin juga harus mengabaikan case.Pelengkapan otomatis terprogram untuk penyelamatan! Diperlukan banyak penyalinan dari Bash Completion Homepage , yang tetap layak diinstal untuk banyak keajaiban pelengkapan otomatis. Jika ya, Anda hanya perlu fungsi terakhir (
_open
) dan perintah inisialisasi dari bawah.Tambahkan yang berikut ke
.bashrc
:sumber
.bashrc
. Sekarang bagaimana cara mendapatkannya secara otomatis? Apa yang saya dorong ke pelengkapan otomatis? (Maaf, saya tidak bisa membaca kodenya)DVD Player.app
). Daftar direktori/Applications
juga (sepertiiWork 09
, sebagai entriiWork
dan terpisah09
), tetapi tidak ada program yang terkandung di dalamnya.Ini diaktifkan secara default dengan shell Zsh , selama Anda telah menyelesaikannya dengan sendirinya, tentu saja. Zsh termasuk dalam OS X.
Yang harus Anda lakukan adalah meletakkan
autoload -Uz compinit; compinit
~ / .zshrc Anda, atau mengaktifkan penyelesaian melalui menu konfigurasi jalankan pertama.Zsh sebenarnya sebagian besar superset dari Bash, jadi Anda tidak perlu mempelajari hal baru. Bahkan skrip Anda mungkin akan berfungsi!
sumber