Я часто использую open -a
команду в Терминале для открытия приложений через ssh. Как мне сделать так, чтобы приложение автоматически заполняло имя приложения?
terminal
auto-complete
daviesgeek
источник
источник
open -a /Applications/Textedit.app foo.txt
(я полагаю, это то, что вы пытаетесь сделать). Если нажать Tab после/A
из ,/Applications
а затем Tab снова после того , как/Te
в/Textedit.app
то , что должно автозаполнения обе части для вас , как вы идете. Не идеал, я признаю, но, возможно, но лучше. Это было использование Bash.Ответы:
Третья версия, которая теперь должна учитывать регистр и работать в кавычках.
источник
DVD Player
. Есть идеи что не так? Выглядит как табуляция вместо пробела ...IFS=$'\n'
. Во всяком случае, я отредактировал ответ снова.mdfind
идею. Хорошая работа по оптимизации и исправлениям.CoreServices
вероятно, личные предпочтения, хотя. В чем причина,nospace
хотя? Если есть только 1 программа, я хочу продолжить прямо сейчас с открытым полем. Просто личные предпочтения? Есть идеи по поводу оставшейся проблемы с цитированием? AFAICT, это единственное, что осталось для правильного решения.-a
флаг в конце, так что, думаю,-o nospace
это всего лишь личное предпочтение. Может быть, нам следует пинговать Бретта Терпстра или что-то еще, чтобы закончить этот нердфест ...Добавьте следующее в ваш
.bash_profile
или.bashrc
и запустите новый сеанс:Не нужно ничего устанавливать. Это работает с
bash
из коробки.Он будет автоматически заполнять имена программ только в том случае, если предыдущая опция имеет
-a
и, в противном случае, будет отображать поведение по умолчанию, например, вернет список всех файлов в текущем каталоге или завершит префикс текущего пути.Получены результаты
system_profiler SPApplicationsDataType
, что является самым простым способом получить все приложения, которые могут быть запущены таким образом в вашей системе. Список обрабатывается так, чтобы возвращать только имена программ, которые могут содержать пробелы и могут отличаться от имен пакетов (даже если игнорируется.app
суффикс)Использование: введите
open -a
, затем пробел, затем нажмитеTab
илиEsc
(дважды в моей системе, не уверен, что это везде).Пример, показывающий все вспомогательные приложения для моего сканера:
Недостатки и проблемы этого решения:
В вашей системе есть тонны программ, о которых вы, возможно, и не подозреваете, как и все остальное
/System/Library/CoreServices
. Возможно, вы не захотите перечислить все из них. ОТО, это действительно легко увидеть и запустить, например,CharacterPalette
илиKeyboardViewer
так. * Настройтеmdfind
вызов (ы) соответствующим образом с-onlyin
аргументом.Это вроде медленно, из-заТеперь используетsystem_profiler SPApplicationsDataType
. Возможно, вам придется подождать секунду или две, прежде чем завершится обнаружение.mdfind
для быстрого получения программ. Спасибо @LriОн может обрабатывать пробелы в именах приложений и заключать в кавычки имена программ, но это довольно странно. Требуется, чтобы в качестве первого символа использовалась кавычка: пока
Scan" to "P
она действительнаbash
, эта программа не обнаружит ее. Завершение также не работает после пробела (напримерScan\ to
), используйте кавычки в таких случаях ("Scan to
). Поддержка сбежавших пространств только хорошо завершитьDVD
кDVD\ Player
.источник
mdfind 'kMDItemKind==Application'
будет быстрее? Еслиcompletion-ignore-case
установлено, grep, вероятно, также должен игнорировать регистр.Программируемое автозаполнение на помощь! Тем не менее, нужно было много копировать с домашней страницы Bash Completion , которую в любом случае стоит установить для большого количества магии автозаполнения. Если вы это сделаете, вам понадобятся только последняя функция (
_open
) и команда инициализации снизу.Добавьте следующее к
.bashrc
:источник
.bashrc
. Теперь, как мне получить автозаполнение? Что я нажимаю для автозаполнения? (Извините, я не могу прочитать код)DVD Player.app
). Также перечисляет каталоги/Applications
(напримерiWork 09
, отдельные записиiWork
и09
), но не программы, содержащиеся в них.Это включается по умолчанию в оболочке Zsh , если, конечно, вы включили завершение. Zsh включен в OS X.
Все, что вам нужно сделать, это поместить
autoload -Uz compinit; compinit
в ~ / .zshrc или включить завершение через меню конфигурации первого запуска.Zsh - это в основном надмножество Bash, поэтому вам не нужно изучать что-то новое. Даже ваши сценарии, вероятно, будут работать!
источник