Eu freqüentemente uso o open -a
comando no Terminal para abrir aplicativos via ssh. Como faço para concluir automaticamente o nome de um aplicativo?
terminal
auto-complete
daviesgeek
fonte
fonte
open -a /Applications/Textedit.app foo.txt
(presumo que seja isso que você está tentando fazer). Se você pressionar Tab após o/A
de/Applications
e depois Tab novamente após o/Te
de/Textedit.app
, isso deve preencher automaticamente as duas partes para você à medida que avança. Não é o ideal, admito, mas talvez seja um pouco melhor. Isso estava usando o Bash.Respostas:
Terceira versão, que agora deve diferenciar maiúsculas de minúsculas e funcionar entre aspas.
fonte
DVD Player
. Alguma idéia do que está errado? Parece um guia, em vez de um espaço ...IFS=$'\n'
. Enfim, editei a resposta novamente.mdfind
ideia. Bom trabalho na otimização e correções.CoreServices
provavelmente são preferências pessoais. Qual o motivo dissonospace
? Se houver apenas 1 programa, desejo continuar imediatamente com o filen para abrir. Apenas preferência pessoal? Alguma idéia sobre o restante da citação? AFAICT, essa é a única coisa que resta para uma solução adequada.-a
bandeira no final, então acho que-o nospace
é apenas uma preferência pessoal. Talvez devêssemos fazer ping Brett Terpstra ou algo para terminar este Nerdfest ...Adicione o seguinte ao seu
.bash_profile
ou.bashrc
e inicie uma nova sessão:Não há necessidade de instalar nada. Isso funciona com
bash
pronto uso.Ele só completará automaticamente os nomes de programas se a opção anterior for
-a
e mostrar o comportamento padrão; por exemplo, retorne uma lista de todos os arquivos no diretório atual ou complete o prefixo do caminho atual.Os resultados são gerados
system_profiler SPApplicationsDataType
, o que é a maneira mais fácil de obter todos os aplicativos que podem ser iniciados dessa maneira em seu sistema dessa maneira. A lista é processada para retornar apenas os nomes dos programas, que podem conter espaços e podem ser diferentes dos nomes dos pacotes configuráveis (mesmo ao ignorar o.app
sufixo)Uso: Digite
open -a
, seguido por um espaço, seguido de pressionarTab
ouEsc
(duas vezes no meu sistema, não tenho certeza se está em todo lugar).Exemplo mostrando todos os aplicativos auxiliares do meu scanner:
Desvantagens e problemas desta solução:
Existem muitos programas em seu sistema que você talvez não saiba, como tudo
/System/Library/CoreServices
. Você pode não querer listar todos eles. OTOH, é realmente fácil ver e iniciar, por exemplo,CharacterPalette
ouKeyboardViewer
desta maneira. * Configure asmdfind
chamadas adequadamente com o-onlyin
argumento.É meio lento, devido aAgora usasystem_profiler SPApplicationsDataType
. Você pode precisar esperar um ou dois segundos antes da conclusão aparecer.mdfind
para obter rapidamente os programas. Obrigado @LriEle pode lidar com espaços em nomes de aplicativos e nomes de programas entre aspas, mas é bastante invasivo. Exige que a citação seja o primeiro caractere: Embora
Scan" to "P
válidobash
, este programa não o detectará. A conclusão também não funciona após um espaço de escape (por exemploScan\ to
); use aspas nesses casos ("Scan to
). Suporte para espaços escaparam só é bom para completarDVD
aDVD\ Player
.fonte
mdfind 'kMDItemKind==Application'
seria mais rápido? Secompletion-ignore-case
estiver ativado, o grep provavelmente também deve ignorar maiúsculas e minúsculas.Preenchimento automático programável para o resgate! No entanto, eram necessárias muitas cópias da Página inicial de conclusão do Bash , que vale a pena instalar de qualquer maneira para muita mágica de conclusão automática. Se fizer isso, você precisará apenas da última função (
_open
) e do comando de inicialização abaixo.Adicione o seguinte a
.bashrc
:fonte
.bashrc
. Agora, como faço para concluir automaticamente? O que eu envio para o preenchimento automático? (Desculpe, eu não posso ler o código)DVD Player.app
). Lista os diretórios/Applications
também (comoiWork 09
, por exemplo, entradas separadasiWork
e09
), mas não os programas nele contidos.Isso é ativado por padrão com o shell Zsh , desde que você tenha a própria conclusão ativada, é claro. O Zsh está incluído no OS X.
Tudo o que você precisa fazer é colocar
autoload -Uz compinit; compinit
seu ~ / .zshrc ou habilitar a conclusão através do primeiro menu de configuração de execução.O Zsh é na verdade um superconjunto do Bash, então você não precisa aprender nada de novo. Até seus scripts provavelmente funcionarão!
fonte