Aşağıdakileri .bash_profile
veya .bashrc
hesabı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 bash
kutudan çıkar çıkmaz çalışır .
Program adları yalnızca önceki seçenek olduğunda otomatik olarak tamamlanır -a
ve 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 Tab
veya 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 CharacterPalette
veya KeyboardViewer
bu şekilde görmek ve başlatmak gerçekten çok kolay . * mdfind
Çağrıları -onlyin
bağı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 mdfind
programları 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 "P
iç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 DVD
için DVD\ Player
.