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/A
of/Applications
y luego Tab nuevamente después de/Te
of,/Textedit.app
entonces 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.mdfind
idea. Buen trabajo en la optimización y correcciones.CoreServices
son probablemente preferencias personales sin embargo. Sinnospace
embargo, ¿ 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.-a
bandera al final, así que supongo que-o nospace
es 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_profile
o.bashrc
e inicie una nueva sesión:No es necesario instalar nada. Esto funciona
bash
fuera de la caja.Solo completará automáticamente los nombres de los programas si la opción anterior es
-a
y 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.app
sufijo)Uso: Escriba
open -a
, seguido de un espacio, seguido de presionarTab
oEsc
(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,CharacterPalette
o deKeyboardViewer
esta manera. * Configure lasmdfind
llamadas apropiadamente con el-onlyin
argumento.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.mdfind
para 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 "P
es 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 completarDVD
aDVD\ Player
.fuente
mdfind 'kMDItemKind==Application'
sería más rápido? Sicompletion-ignore-case
está 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 separadasiWork
y09
), 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; compinit
su ~ / .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