Aşağıdakileri .bash_profileveya .bashrchesabınıza ekleyin ve yeni bir oturum başlatın:
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
Hiçbir şey kurmaya gerek yok. Bu bashkutudan çıkar çıkmaz çalışır .
Program adları yalnızca önceki seçenek olduğunda otomatik olarak tamamlanır -ave başka türlü varsayılan davranış gösterirse, örneğin geçerli dizindeki tüm dosyaların listesini döndürür veya geçerli yol önekini tamamlar.
Sonuçlar bu şekilde sisteminizde bu şekilde başlatılabilen tüm uygulamalarısystem_profiler SPApplicationsDataType almanın en kolay yoludur . Liste, yalnızca boşluk içerebilen ve paket adlarından farklı olabilen program adlarını döndürmek için işlenir ( sonek yoksayılsa bile ).app
Kullanım: yazın open -a, ardından bir boşluk bırakın ve ardından Tabveya tuşuna basın Esc(sistemimde iki kez, her yerde olduğundan emin değilim).
Tarayıcım için tüm yardımcı uygulamaları gösteren örnek:
$ 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
Bu çözümün sakıncaları ve sorunları:
Sisteminizde, bilmediğiniz her şey gibi tonlarca program var /System/Library/CoreServices. Hepsini listelemek istemeyebilirsiniz. OTOH, örneğin CharacterPaletteveya KeyboardViewerbu şekilde görmek ve başlatmak gerçekten çok kolay . * mdfindÇağrıları -onlyinbağımsız değişkenle uygun şekilde yapılandırın .
Nedeniyle biraz yavaş system_profiler SPApplicationsDataType. Tamamlama görünmeden önce bir iki saniye beklemeniz gerekebilir. Şimdi mdfindprogramları hızlı bir şekilde almak için kullanır . Teşekkürler @Lri
Uygulama adlarındaki boşlukları ve tırnak içine alınmış program adlarını işleyebilir, ancak oldukça hileli. Alıntı için ilk karakter olması gerekir: Scan" to "Piçinde geçerli olsa da bash, bu program onu algılamaz. Tamamlanma, kaçan bir alandan sonra da çalışmaz (örneğin Scan\ to), bu gibi durumlarda tırnak işaretleri kullanın ( "Scan to). Kaçan alanlar için destek tamamlamak için sadece iyidir DVDiçin DVD\ Player.