J'utilise fréquemment la open -a
commande dans Terminal pour ouvrir des applications via ssh. Comment puis-je compléter automatiquement le nom d'une application?
terminal
auto-complete
daviesgeek
la source
la source
open -a /Applications/Textedit.app foo.txt
(je suppose que c'est ce que vous essayez de faire). Si vous appuyez sur Tab après le/A
of/Applications
puis sur Tab à nouveau après le/Te
of,/Textedit.app
cela devrait compléter automatiquement les deux parties pour vous au fur et à mesure. Pas idéal, je l'avoue, mais peut-être un mais mieux. C'était en utilisant Bash.Réponses:
Troisième version, qui devrait désormais être à la fois insensible à la casse et fonctionner entre guillemets.
la source
DVD Player
. Des idées ce qui ne va pas? On dirait un onglet au lieu d'un espace ...IFS=$'\n'
. Quoi qu'il en soit, j'ai à nouveau modifié la réponse.mdfind
idée. Beau travail sur l'optimisation et les correctifs.CoreServices
sont probablement des préférences personnelles. Quelle en est la raisonnospace
? S'il n'y a qu'un seul programme, je veux continuer tout de suite avec le filen à ouvrir. Juste une préférence personnelle? Une idée sur le problème de devis restant? AFAICT, c'est la seule chose qui reste pour une bonne solution.-a
drapeau à la fin, donc je suppose que-o nospace
c'est juste une préférence personnelle. Peut - être que nous devrions ping Brett Terpstra ou quelque chose à finir cette nerdfest ...Ajoutez les éléments suivants à votre
.bash_profile
ou.bashrc
et lancez une nouvelle session:Pas besoin d'installer quoi que ce soit. Cela fonctionne avec
bash
hors de la boîte.Il n'effectuera la saisie semi-automatique des noms de programme que si l'option précédente l'est
-a
et affiche le comportement par défaut, par exemple, retourne une liste de tous les fichiers du répertoire en cours ou complète le préfixe du chemin en cours.Les résultats sont générés à partir de
system_profiler SPApplicationsDataType
, ce qui est le moyen le plus simple d'obtenir toutes les applications qui peuvent être lancées de cette façon sur votre système comme ça. La liste est traitée pour renvoyer uniquement les noms de programme, qui peuvent contenir des espaces et peuvent être différents des noms de bundle (même en ignorant le.app
suffixe)Utilisation: Tapez
open -a
, suivi d'un espace, puis appuyez surTab
ouEsc
(deux fois sur mon système, je ne sais pas s'il est partout).Exemple montrant toutes les applications d'assistance pour mon scanner:
Inconvénients et problèmes de cette solution:
Il y a des tonnes de programmes sur votre système que vous ne connaissez peut-être pas, comme tout le reste
/System/Library/CoreServices
. Vous ne voudrez peut-être pas tous les énumérer. OTOH, c'est vraiment facile à voir et à lancer par exempleCharacterPalette
ou deKeyboardViewer
cette façon. * Configurez lesmdfind
appels de manière appropriée avec l'-onlyin
argument.C'est un peu lent, à cause deUtilise maintenantsystem_profiler SPApplicationsDataType
. Vous devrez peut-être attendre une ou deux secondes avant que la fin ne s'affiche.mdfind
pour obtenir rapidement les programmes. Merci @LriIl peut gérer les espaces dans les noms des applications et les guillemets inclus dans les programmes, mais c'est plutôt hacky. Il requiert que la citation soit le premier caractère: Bien qu'il
Scan" to "P
soit valide dansbash
, ce programme ne le détectera pas. La complétion ne fonctionne pas non plus après un espace échappé (par exempleScan\ to
), utilisez des guillemets dans de tels cas ("Scan to
). Prise en charge des espaces évadés est seulement bon pour terminerDVD
àDVD\ Player
.la source
mdfind 'kMDItemKind==Application'
plus rapide? Sicompletion-ignore-case
est activé, grep devrait également ignorer la casse.Autocompletion programmable à la rescousse! Besoin de beaucoup de copies depuis la page d'accueil de Bash Completion , ce qui vaut quand même l'installation pour beaucoup de magie de complétion automatique. Si vous le faites, vous n'aurez besoin que de la dernière fonction (
_open
) et de la commande d'initialisation ci-dessous.Ajoutez ce qui suit à
.bashrc
:la source
.bashrc
. Maintenant, comment puis-je le compléter automatiquement? Que dois-je pousser pour la saisie semi-automatique? (Désolé, je ne peux pas lire le code)DVD Player.app
). Répertorie également les répertoires/Applications
(commeiWork 09
, comme entrées distinctesiWork
et09
), mais pas les programmes qui y sont contenus.Ceci est activé par défaut avec le shell Zsh , tant que vous avez activé l'achèvement, bien sûr. Zsh est inclus dans OS X.
Tout ce que vous avez à faire est de mettre
autoload -Uz compinit; compinit
dans votre ~ / .zshrc, ou d'activer l'achèvement via le premier menu de configuration d'exécution.Zsh est en fait principalement un surensemble de Bash, vous ne devriez donc pas avoir à apprendre quelque chose de nouveau. Même vos scripts fonctionneront probablement!
la source