Access Finder «Открыть с» меню из командной строки (для завершения вкладки)

В Mac OS X я знаю, что можно открыть файл из командной строки с приложением по умолчанию с open и с другими приложениями с open -a <application name> . Таким образом,

 open movie.avi open -a VLC movie.avi open movie.avi -a VLC 

Все работа. Моя единственная жалоба заключается в том, что когда я печатаю

 open movie.avi -a <TAB> 

Он завершается по всем приложениям, которые существуют на компьютере – например, в zsh я получаю

 zsh: do you wish to see all 793 possibilities (200 lines)? 

– хотя я бы хотел, чтобы он заполнил только несколько приложений, которые отобразилось в меню Finder «Open With».

Итак, есть ли способ получить доступ к этому списку, который знает Finder, и заставить мою оболочку (zsh, но я могу переключиться на bash, если она помогает) узнать о списке, таким образом, что в завершении табуляции будут отображаться только те приложения?

2 Solutions collect form web for “Access Finder «Открыть с» меню из командной строки (для завершения вкладки)”

AllApplications

 $ AllApplications -h Created 03 March 2011 by Hank McShane version 0.1 requires Mac OS X 10.4 or higher Use this command line tool to get the path to all applications that can open a file from Launch Services. Usage: AllApplications -path path/to/file $ ext=png; f=/tmp/allapps.$ext; touch $f; AllApplications -path $f; rm $f /Applications/Preview.app /2/copies/Safari.app /Applications/TeX/LaTeXiT.app /Applications/WebKit.app /Applications/Sequential.app /Applications/ImageOptim.app /Applications/Acorn.app /Developer/Applications/Graphics Tools/Core Image Fun House.app /2/copies/Preview.app /Developer/Applications/Dashcode.app /Applications/GraphicConverter.app /Applications/Google Chrome.app /Applications/Adobe Photoshop CS5/Adobe Photoshop CS5.app /Applications/Utilities/QuickTime Player 7.app /Applications/Utilities/ColorSync Utility.app /Applications/Safari.app /Applications/Adobe Device Central CS5/Adobe Device Central CS5.app /Applications/Firefox.app . $ AllApplications -h Created 03 March 2011 by Hank McShane version 0.1 requires Mac OS X 10.4 or higher Use this command line tool to get the path to all applications that can open a file from Launch Services. Usage: AllApplications -path path/to/file $ ext=png; f=/tmp/allapps.$ext; touch $f; AllApplications -path $f; rm $f /Applications/Preview.app /2/copies/Safari.app /Applications/TeX/LaTeXiT.app /Applications/WebKit.app /Applications/Sequential.app /Applications/ImageOptim.app /Applications/Acorn.app /Developer/Applications/Graphics Tools/Core Image Fun House.app /2/copies/Preview.app /Developer/Applications/Dashcode.app /Applications/GraphicConverter.app /Applications/Google Chrome.app /Applications/Adobe Photoshop CS5/Adobe Photoshop CS5.app /Applications/Utilities/QuickTime Player 7.app /Applications/Utilities/ColorSync Utility.app /Applications/Safari.app /Applications/Adobe Device Central CS5/Adobe Device Central CS5.app /Applications/Firefox.app 

duti

 $ duti -d public.png com.apple.Preview $ duti -l public.png com.SequentialX.Sequential com.flyingmeat.Acorn net.pornel.ImageOptim com.apple.system-library com.apple.ColorSyncUtility com.apple.Preview 

(В нем отсутствуют некоторые приложения, которые отображаются в открывшемся меню.)

Мне кажется, что

Он завершается по всем приложениям, которые существуют на компьютере – например, в zsh я получаю

неправда. Кажется, что нет никакой информации о команде open в bash или zsh. Поэтому нажатие просто использует резервную копию и завершает работу над всеми файлами в текущем рабочем каталоге.

Если вы хотите, чтобы bash знал о ожидаемых аргументах после ключа -a команды open , вам нужно будет написать шаблон завершения bash.

Для этого вам необходимо ознакомиться с complete оболочкой

 $ help complete complete: complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W wordlist] [-P prefix] [-S suffix] [-X filterpat] [-F function] [-C command] [name ...] For each NAME, specify how arguments are to be completed. If the -p option is supplied, or if no options are supplied, existing completion specifications are printed in a way that allows them to be reused as input. The -r option removes a completion specification for each NAME, or, if no NAMEs are supplied, all completion specifications. 

OS X Lion просто указывает пользователю диалоговое окно с папкой /Applications . Чтобы получить список приложений, вы можете просто использовать

 basename -a -s.app /Applications/*.app 

Таким образом, очень рудиментарное завершение для open которое не проверяет ключ -a не обрабатывает пробелы правильно, будет выглядеть так

 _openComp() { local WLIST cur COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" WLIST=`basename -a -s.app /Applications/*.app` COMPREPLY=( $(compgen -W "${WLIST}" -- ${cur}) ) return 0 } complete -F _openComp open 

Это относится к bash, я не знаком с поведением Zsh.

Interesting Posts

Как применить шаблон обогащения my-library к коллекциям Scala?

Файловые сеансы Firefox

Как изменить MAC-адрес в Win 8, чтобы обмануть Roku Player через страницу всплеска WiFi?

Как отклонить баннер обновления Windows 8.1?

Rails 2.3-стиль плагинов и предупреждения о предупреждениях, выполняемые в Heroku

Что такое простой прокси-сервер C ++ (VC ++)?

Как получить оптический 5.1-канальный объемный звук Retina MacBook Pro от Logic Pro X

Разница и использование onCreate (), onCreateView () и onActivityCreated () в fragmentах

Убийство streamа .NET

«Показать рабочий стол» иногда устанавливает окно «всегда сверху»,

OOM-убийца, несмотря на множество свободной памяти на ядре PAE

Как исправить GRUB после того, как Windows сломает его, и как отредактировать меню GRUB

Зеркальная колонка на отдельном листе в Excel 2010

Mac: продлить или отключить 500 сообщений Ограничение консоли

Linux: используйте VNC для создания второго экрана

Давайте будем гением компьютера.