Crear acceso directo global para ejecutar aplicaciones de línea de comandos

¿Qué pasos necesito para ejecutar un programa de línea de comandos a través de un acceso directo global?

Configuré Automator para crear un nuevo Run Shell Script e intenté asignar un atajo en Preferencias del sistema -> Teclado -> Atajos de teclado, pero no pasó nada.

Mi pregunta es diferente. No quiero que se abra una ventana de terminal.
Si no desea que se abra una ventana de Terminal, está preguntando lo mismo que la publicación vinculada.

Respuestas (7)

Applescript:

do shell script "ls ~/Desktop"

Agregue lo que desee allí, luego puede ejecutar Applescript a través de una aplicación de tecla de acceso rápido global. recomendaría chispa

Ah, y no sé cómo asignar un acceso directo a través de Preferencias del Sistema

Bingo. Es extraño que esta funcionalidad no esté ya integrada en OSX. ¡Muchas gracias!
@Adam Sí, es un poco extraño.
Excepto que está integrado en OS X a través de Automator Services, @AdamFlott, es solo que la respuesta que aceptó no usa ese método.
Además, AppleScript y Automator son parte de OS X.
Gracias por la pista que me indica Spark, ¡parece ser exactamente lo que estaba buscando!
@FlorianLoch ¡No hay problema!
-1 por usar terceros sin ningún buen razonamiento.

Sin conocer los detalles de lo que está buscando, sugeriría crear un nuevo Servicio a través de Automator . Los servicios se pueden vincular a disparadores de pulsaciones de teclas y pueden ejecutar scripts de shell (entre otras cosas).ingrese la descripción de la imagen aquí

Para configurar el método abreviado de teclado, vaya a Preferencias del sistema -> Teclado -> Accesos directos -> Servicios, seleccione el servicio que acaba de guardar y luego haga clic en el botón "Agregar acceso directo".

Después de guardar el servicio, no me queda claro cómo configurar un atajo de teclado.
@LironYahdav Ver edición anterior
En Mojave, mi simple comando de Terminal no funcionaría. Para que mi atajo funcione, tuve que cambiar la configuración de "Recepción de flujo de trabajo" en el Flujo de trabajo a "sin entrada".
Tenga en cuenta que el acceso directo que elija debe ser "gratuito" (no utilizado por ninguna aplicación que tenga actualmente activa). También experimenté un error en el que el servicio no se ejecutaba hasta que lo ejecutaba manualmente una vez como se describe aquí .
Para cualquiera que se pregunte cómo editar un "Servicio" existente: en el buscador, navegue hasta ~/Library/Services(o presione Cmd-Shift-G y escriba la ruta directamente), luego haga doble clic en su "Servicio". Debería abrirse en automator.
Otro problema: parece que el .zshrcarchivo no se ejecuta ya que es un "shell no interactivo". Si está configurando variables de entorno en su .zshrcarchivo (como yo), muévalas a su .zshenvarchivo en su lugar. Consulte apple.stackexchange.com/questions/388622/…
¿Cómo se pone aquí la ruta de un script de shell que ya está administrado ~/Documents/srce instalado en /opt/bin?

Probé todas esas opciones, pero son demasiado complejas y poco confiables o muy costosas. Así que terminé escribiendo mi propia solución (de código abierto y gratuita).

Atajo de iCanHaz

No puede hacer mucho en este momento, pero eso es un comienzo. Siéntase libre de contribuir agregando solicitudes de funciones y sugerencias.

He estado tratando de encontrar una solución fácil para este problema durante algunas horas y su aplicación es la única que funciona y hace lo que se supone que debe hacer sin complicaciones. ¡Gracias!
@StijnMartens, ¡de nada! Esa es la idea detrás de esto: si solo necesita un atajo para un comando, obtiene un atajo para un comando. Nada más y nada menos.
Esto funcionó maravillosamente.
Probé Alfred y Automator y fueron muy lentos. Este funciona como un sueño. Artículo que lo cubre aquí: howtogeek.com/286332/…

FastScripts incluye todos los scripts en ~/Library/Scripts/, por lo que no tiene que agregar archivos manualmente. También admite scripts específicos de la aplicación.

Otras aplicaciones que se pueden usar para asignar accesos directos para ejecutar scripts:

También puede crear un servicio de Automator:

  1. Abra Automator y elija la plantilla Servicio
  2. Agregue una acción Ejecutar Shell Script o Ejecutar AppleScript
  3. Verifique que el tipo de entrada y el alcance de la aplicación sean correctos
  4. Pegue el script y guarde el servicio.
  5. Asigne un atajo en el panel de preferencias del teclado

Hay un error en 10.7 y 10.8 donde los accesos directos para los servicios no siempre funcionan hasta que se muestra el menú de servicios desde la barra de menú. Los accesos directos a los servicios no funcionan cuando la aplicación principal no tiene una barra de menú o un menú de servicios. También hay un breve retraso antes de que se ejecuten los servicios.

más uno por mencionar otras aplicaciones que también lo hacen. Casi fui a instalar Spark cuando ya usaba QuickSilver. No sabía que tenía esa opción.
Además, la sección en el panel "Preferencias de teclado" para agregar un acceso directo estará en la sección "Servicios", si usa el enfoque de Automator.

Quicksilver se puede usar para vincular teclas de acceso rápido a acciones.

Si te encuentras haciendo algo con frecuencia, puedes acelerar la tarea aún más asignándole un "disparador". Los disparadores se pueden activar mediante atajos de teclado o movimientos del mouse.

Si lo que desea ejecutar es un comando de Unix o un script de shell, esta publicación de Stackoverflow brinda más información sobre el uso del "módulo de terminal" de Quicksilver.

Agregaré mi respuesta aquí usando BTT , ya que es fácil y en realidad se puede vincular directamente a un script de línea de comando:

  1. Seleccionar teclado de BTT

Seleccionar teclado de BTT

  1. Ingrese su atajo (¡o secuencia de teclas!)

Ingrese su atajo (¡o secuencia de teclas!)

  1. Seleccione "Desencadenar acción predefinida" y escriba "shell" para encontrar la acción.

Seleccione "Desencadenar acción predefinida" y escriba "shell" para encontrar la acción.

  1. Puede pegar su script y shell en el que desea ejecutar:

Puede pegar su script y shell en el que desea ejecutar:

¡Haz clic en guardar y listo! Ahora pruebe su secuencia de comandos con el disparador de teclado que configuró.

  1. EXTRA: Es posible que desee agregar notas para recordar para qué sirve el atajo...

Es posible que desee agregar notas para recordar para qué sirve el acceso directo...

Gracias, terminé yendo por esta ruta ya que tengo BTT.
¿Cómo podría hacer que este script emita texto, independientemente de que el cursor sea atm?

Parece que esto estaba disponible en 10.6 (ver http://hints.macworld.com/article.php?story=20090903085255430 ) pero algo se rompió en 10.7.2 (y posiblemente antes de 10.7)

Sin embargo, descubrí que el atajo de teclado de Servicios se respeta cuando las Preferencias del sistema están a la vanguardia, pero no en ninguna otra aplicación, incluido Finder.

Sin embargo, la sugerencia anterior de usar Spark funcionó perfectamente en Lion, excepto que no pude usar Ctrl en mi método abreviado de teclado. (¡no es un sensacional!)

solo cuando el menú de la aplicación está enfocado. Si hace clic en el escritorio y prueba el acceso directo, no funciona. haga clic en el menú para el buscador y luego pruébelo y funciona. Tengo un servicio para Terminal que tiene un acceso directo y aparece en todas las aplicaciones... pero no funciona si no estoy dentro de una aplicación e incluso entonces el menú debe estar enfocado.
@Lri incluso después de cerrar y volver a iniciar sesión, reiniciar la máquina, etc. Todavía no funciona a menos que haga lo que describí anteriormente. Sin embargo, configurarlo en Quicksilver funciona. Me gustaría saber por qué QuickSilver puede captar esos accesos directos "globales" y no el sistema operativo.