OSX 'abrir con' script bash

8

Tengo un script bash, potencialmente muchos de ellos, de hecho, con los que me gustaría poder abrir archivos en el buscador de OSX.

Es un concepto muy, muy simple, pero por alguna razón los scripts de bash están atenuados en el diálogo 'abrir con' del buscador.

Entiendo que hay varias formas de usar AppleScript o empaquetar como una aplicación ... pero no he podido resolver nada de esto y realmente no quiero tener que elegir otro idioma solo para esta tarea trivial - ¿Alguien podría alimentarme con una cuchara?

¡Gracias!

Rico
fuente

Respuestas:

11

No es posible. Launch Services funciona con identificadores de aplicaciones y los scripts de bash no los tienen.

Debe crear una aplicación de contenedor utilizando Automator.

  1. Iniciar Automator
  2. Seleccionar aplicacion
  3. Busque la acción Ejecutar script de shell y agréguela a la derecha.
  4. Pasar entrada como argumentos
  5. Pon tu guion ahí
  6. Guardar en alguna parte

Aquí está mi versión, usando la utilidad de línea de comandos Growl :

ingrese la descripción de la imagen aquí

Resultado:

ingrese la descripción de la imagen aquí


Puede ver el efecto que tiene este cambio ~/Library/Preferences/com.apple.LaunchServices.plistcuando cambia todo :

ingrese la descripción de la imagen aquí

("Prueba" es el nombre que le di a mi aplicación Automator)

Daniel Beck
fuente
Gracias. Le di un giro, pero trato de abrir con la aplicación creada por Automator, solo dice La acción "Ejecutar Shell Script" encontró un error. Verifique las propiedades de la acción e intente ejecutar el flujo de trabajo nuevamente. ¡Cuál es el mensaje de error menos útil que he visto en mucho tiempo!
rico
@ Rich ¿Funciona con el script predeterminado en la acción de ejecutar el script de shell? O ni siquiera entonces? ¿Recordó cambiar la preferencia de entrada de pase ? ¿Intenta hacer doble clic en su aplicación, arrastrar archivos a su aplicación o solo abre el archivo asociado? ¿Qué sucede si lo comienzas de otra manera?
Daniel Beck
Gracias. No estoy seguro de cómo vería el resultado del predeterminado, ya que solo llama a cat, pero parece que no tuvo error. En lugar de que la aplicación llame a mi script desde una ubicación no estándar, creé un script en / usr / local / bin y luego descubrí que si intentaba ejecutarlo, se quejaba de que había demasiados niveles de enlaces simbólicos (¡¿1 ?! ) Así que acabo de copiar el script allí y ahora parece funcionar. ¡Gracias!
rico
1

Seguí las instrucciones de Daniel Beck con algunas modificaciones y conseguí que funcionara para los archivos URL que quería abrir en Chrome (Firefox también funcionaría) en una Mac.

El script que utilicé es:

sed 's/^URL=/URL=/' "$1" | grep -m 1 '^URL=' | sed 's/^URL=//' | tr -d '\r' | xargs open -a "Google Chrome"

Esto analiza la línea URL = de un archivo URL típico que se parece a:

[InternetShortcut]
URL=http://www.docircuits.com/pricing
IDList=
HotKey=0
IconFile=O:\Apps\Firefox\Data\profile\shortcutCache\4t0JW4mY1qRPhiYz1fY3dw==.ico
IconIndex=0

Guarde el script de Automator en algún lugar como su directorio ~ / Library. Llamé a la mía OpenUrl.app.

Ahora ve a un archivo de URL en alguna parte y abre la ventana emergente "Obtener información". Cambie el comando Abrir con a su script OpenUrl.app. Pruebe con solo uno o haga clic en "Cambiar todo ..." La primera vez que hice clic en que dio un error, pero pareció funcionar la segunda vez.

Al desarrollar esto, recibí los errores "Ejecutar script de Shell", pero eso se debió a errores reales en el script. Creo que el problema clave con el script de Daniel es que no maneja espacios en el nombre del archivo que intentas abrir.

Keith Olson
fuente
-1

Uso reattach-to-user-namespace, ya sea desde el repositorio o con brew install reattach-to-user-namespace. Esto funciona en Sierra, no estoy seguro acerca de otros sistemas operativos.

Una vez instalado, úsalo en el script bash así:

volver a adjuntar al espacio de nombres de usuario abrir a_cool_file.png

pollo malvado
fuente
Esto no parece responder la pregunta. El OP quiere usar la función "Abrir con" del Finder para abrir un archivo con un script Bash. Proporcionar soporte para el portapapeles en Tmux y Screen no ayuda con eso, especialmente porque no hay indicios de que Tmux o Screen estén involucrados.
8bittree