Dodaj następujące elementy do swojego .bash_profile
lub .bashrc
i uruchom nową sesję:
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
Nie musisz niczego instalować. Działa to od razu po bash
wyjęciu z pudełka.
Będzie automatycznie uzupełniał nazwy programów tylko wtedy, gdy poprzednia opcja jest taka, -a
a poza tym wykaże zachowanie domyślne, np. Zwróci listę wszystkich plików w bieżącym katalogu lub dokończy bieżący prefiks ścieżki.
Wyniki są generowane z system_profiler SPApplicationsDataType
, co jest najprostszym sposobem na uzyskanie wszystkich aplikacji, które można w ten sposób uruchomić w systemie w ten sposób. Lista jest przetwarzana w celu zwrócenia tylko nazw programów, które mogą zawierać spacje i mogą różnić się od nazw pakietów (nawet przy ignorowaniu .app
sufiksu)
Sposób użycia: Wpisz open -a
, następnie spację, a następnie naciśnij Tab
lub Esc
(dwa razy w moim systemie, nie jestem pewien, czy jest wszędzie).
Przykład pokazujący wszystkie aplikacje pomocnicze dla mojego skanera:
$ 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
Wady i problemy tego rozwiązania:
W twoim systemie jest mnóstwo programów, o których możesz nie wiedzieć, jak wszystko w twoim systemie /System/Library/CoreServices
. Możesz nie chcieć wymienić wszystkich. OTOH, to naprawdę łatwo zobaczyć i uruchomić np CharacterPalette
lub KeyboardViewer
w ten sposób. * Skonfiguruj mdfind
połączenia odpowiednio z -onlyin
argumentem.
To trochę powolne system_profiler SPApplicationsDataType
. Być może trzeba poczekać sekundę lub dwie, zanim pojawi się zakończenie. Teraz używa mdfind
do szybkiego pobierania programów. Dzięki @Lri
Może obsługiwać spacje w nazwach aplikacji i nazwy programów w cudzysłowie, ale jest raczej hackerski. Wymaga to, aby cytat był pierwszym znakiem: dopóki Scan" to "P
jest ważny bash
, ten program go nie wykryje. Uzupełnianie nie działa po spacji lub (np. Scan\ to
), W takich przypadkach używaj cudzysłowów ( "Scan to
). Pomoc dla zbiegłych przestrzeni jest tylko dobry, aby zakończyć DVD
się DVD\ Player
.