Tambahkan yang berikut ke Anda .bash_profileatau .bashrcdan luncurkan sesi baru:
function _complete_open {
cur=$2
COMPREPLY=( );
[[ "$COMP_WORDS" = "open" ]] || return
[[ "${COMP_WORDS[ $(( $COMP_CWORD - 1 )) ]}" = "-a" ]] || return
OLDIFS="$IFS"
IFS=$'\n'
local _part="${COMP_WORDS[$COMP_CWORD]}"
if [[ "${_part:0:1}" = '"' || "${_part:0:1}" = "'" ]] ; then
COMPREPLY=( $( compgen -W "$( mdfind kMDItemKind==Application | sed -e 's|.*/||g' -e 's|.app$||' | sort -u )" -- $cur ) )
else
COMPREPLY=( $( compgen -W "$( mdfind kMDItemKind==Application | sed -e 's|.*/||g' -e 's|.app$||' -e 's| |\\\\ |g' | sort -u )" -- $cur ) )
fi
IFS="$OLDIFS"
}
complete -o default -F _complete_open open
Tidak perlu menginstal apa pun. Ini berfungsi dengan di bashluar kotak.
Ini hanya akan melengkapi nama program secara otomatis jika opsi sebelumnya -amenunjukkan 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 .appsuffix)
Penggunaan: Ketik open -a, diikuti spasi, diikuti dengan menekan Tabatau Esc(dua kali pada sistem saya, tidak yakin apakah ada di mana-mana).
Contoh memperlihatkan semua aplikasi pembantu untuk pemindai saya:
$ open -a Scan
Scan to E-mail Scan to Excel Scan to Folder Scan to Print Scan to Searchable PDF Scan to Word ScanSnap Manager
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 misalnya CharacterPaletteatauKeyboardViewer dengan cara ini. * Konfigurasikan mdfindpanggilan dengan -onlyinargumen yang tepat.
Agak lambat, karena system_profiler SPApplicationsDataType. Anda mungkin perlu menunggu satu atau dua detik sebelum selesai muncul. Sekarang gunakanmdfind untuk mendapatkan program dengan cepat. Terima kasih @Lri
Itu 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 "Pvalid bash, program ini tidak akan mendeteksinya. Penyelesaian tidak berfungsi setelah ruang yang lolos baik (misalnya Scan\ to), gunakan tanda kutip dalam kasus tersebut ( "Scan to). Dukungan untuk ruang lolos hanya baik untuk menyelesaikan DVDke DVD\ Player.