Con frecuencia uso el open -a comando en la Terminal para abrir aplicaciones a través de ssh. ¿Cómo hago para que se complete automáticamente el nombre de una aplicación?
terminal
auto-complete
daviesgeek
fuente
fuente

open -a /Applications/Textedit.app foo.txt(supongo que eso es lo que estás tratando de hacer). Si presiona Tab después de/Aof/Applicationsy luego Tab nuevamente después de/Teof,/Textedit.appentonces eso debería completar automáticamente ambas partes a medida que avanza. No es ideal, lo admito, pero tal vez sea mejor. Esto estaba usando Bash.Respuestas:
Tercera versión, que ahora debe ser insensible a mayúsculas y minúsculas y trabajar entre comillas.
fuente
DVD Player. Alguna idea de lo que está mal? Parece una pestaña en lugar de un espacio ...IFS=$'\n'. De todos modos, edité la respuesta nuevamente.mdfindidea. Buen trabajo en la optimización y correcciones.CoreServicesson probablemente preferencias personales sin embargo. Sinnospaceembargo, ¿ cuál es la razón ? Si solo hay 1 programa, quiero continuar de inmediato con el archivo para abrir. ¿Solo preferencia personal? ¿Alguna idea sobre el problema de cotización restante? AFAICT, eso es lo único que queda para una solución adecuada.-abandera al final, así que supongo que-o nospacees solo una preferencia personal. Tal vez deberíamos hacer ping a Brett Terpstra o algo para terminar este nerdfest ...Agregue lo siguiente a su
.bash_profileo.bashrce inicie una nueva sesión:No es necesario instalar nada. Esto funciona
bashfuera de la caja.Solo completará automáticamente los nombres de los programas si la opción anterior es
-ay mostrará el comportamiento predeterminado, por ejemplo, devolverá una lista de todos los archivos en el directorio actual o completará el prefijo de ruta actual.Los resultados se generan a partir de
system_profiler SPApplicationsDataType, que es la forma más fácil de obtener todas las aplicaciones que se pueden iniciar de esta manera en su sistema de esa manera. La lista se procesa para devolver solo los nombres de programa, que pueden contener espacios y pueden ser diferentes de los nombres de paquete (incluso si se ignora el.appsufijo)Uso: Escriba
open -a, seguido de un espacio, seguido de presionarTaboEsc(dos veces en mi sistema, no estoy seguro si está en todas partes).Ejemplo que muestra todas las aplicaciones auxiliares para mi escáner:
Inconvenientes y problemas de esta solución:
Hay toneladas de programas en su sistema que quizás no conozca, como todo lo que contiene
/System/Library/CoreServices. Es posible que no desee enumerarlos a todos. OTOH, es realmente fácil de ver y ejecutar, por ejemplo,CharacterPaletteo deKeyboardVieweresta manera. * Configure lasmdfindllamadas apropiadamente con el-onlyinargumento.Es un poco lento, debido aAhora se utilizasystem_profiler SPApplicationsDataType. Es posible que deba esperar uno o dos segundos antes de que aparezca la finalización.mdfindpara obtener rápidamente los programas. Gracias @LriPuede manejar espacios en nombres de aplicaciones y nombres de programas entre comillas, pero es bastante hacky. Requiere que la cita sea el primer carácter: aunque
Scan" to "Pes válidobash, este programa no lo detectará. La finalización tampoco funciona después de un espacio escapado (pScan\ to. Ej. ), Utilice comillas en tales casos ("Scan to). Soporte para espacios escapado sólo es bueno para completarDVDaDVD\ Player.fuente
mdfind 'kMDItemKind==Application'sería más rápido? Sicompletion-ignore-caseestá activado, grep probablemente también debería ignorar el caso.¡Autocompletado programable al rescate! Sin embargo, necesitaba mucha copia de la página de inicio de Bash Completion , que vale la pena instalar de todos modos para obtener mucha magia de autocompletado. Si lo hace, solo necesitará la última función (
_open) y el comando de inicialización a continuación.Agregue lo siguiente a
.bashrc:fuente
.bashrc. Ahora, ¿cómo consigo que se complete automáticamente? ¿Qué presiono para autocompletar? (Lo siento, no puedo leer el código)DVD Player.app). Enumera también los directorios/Applications(comoiWork 09, como entradas separadasiWorky09), pero no los programas contenidos en ellos.Esto viene habilitado de forma predeterminada con el shell Zsh , siempre que tenga la terminación habilitada, por supuesto. Zsh está incluido en OS X.
Todo lo que tiene que hacer es poner
autoload -Uz compinit; compinitsu ~ / .zshrc, o habilitar la finalización a través del menú de configuración de la primera ejecución.Zsh es en realidad un superconjunto de Bash, por lo que no debería tener que aprender nada nuevo. ¡Incluso tus guiones probablemente funcionarán!
fuente