¿Puede Finder y el comando "abrir" tratar archivos con .sh u otras extensiones típicas como archivos .command?

7

Estoy buscando una forma de inyectar algunas extensiones más en la base de datos de servicios de lanzamiento de OS X de forma sistemática para que, al hacer clic en ellas, se ejecuten en la aplicación de terminal como lo hacen los archivos .command de forma predeterminada.

Cosas como .ksh , .sh y .csh serían agradables para comenzar, pero supongo que una vez que descubra cómo agregar una, es fácil hacer el resto.

Una respuesta específica para Lion o Snow Leopard está bien, por lo que no es necesaria una respuesta general para todas las versiones del sistema operativo. Sería genial si esto fuera posible de secuencias de comandos y escribiera directamente en la base de datos de Servicios de lanzamiento, así podría automatizar esto en lugar de buscar el buscador en cada mac y hacer mucho clic.

    
pregunta bmike 04.08.2011 - 22:46

3 respuestas

3

Si un archivo se abre con Terminal y tiene el bit de ejecución establecido, entonces Terminal lo ejecutará.

Obtenga información sobre un archivo .sh y configúrelo para que se abra con Terminal, y haga clic en el botón Cambiar todo.

    
respondido por el Kevin Reid 05.08.2011 - 01:50
3

Para preferir que la Terminal abra archivos .sh, usando el comando predeterminado, sin usar el Finder

En la mayoría de los casos, todo lo que se requiere debería ser posible desde la línea de comandos ...

Preparación

Dos comandos:

defaults read com.apple.LaunchServices | grep -B 1 -A 3 public.shell-script

defaults read com.apple.LaunchServices | grep -B 1 -A 4 "LSHandlerContentTag = sh;"

Si cualquiera de los comandos revela una preferencia existente

Use Xcode o cualquier otro editor de lista de propiedades adecuado para eliminar el diccionario relevante de la clave LSHandlers dentro del siguiente archivo:

~/Library/Preferences/com.apple.LaunchServices.plist

Sugerencias:

Agregando a las preferencias de LaunchServices, para que Terminal vea y edite archivos .sh

Dos comandos de una línea.

Dependiendo de sus requisitos, el primer comando solo puede ser suficiente:

defaults write com.apple.LaunchServices LSHandlers -array-add '{ LSHandlerContentType = "public.shell-script"; LSHandlerRoleViewer = "com.apple.Terminal"; LSHandlerRoleEditor = "com.apple.Terminal"; }'

defaults write com.apple.LaunchServices LSHandlers -array-add '{ LSHandlerContentTag = "sh"; LSHandlerContentTagClass = "public.filename-extension"; LSHandlerRoleViewer = "com.apple.Terminal"; LSHandlerRoleEditor = "com.apple.Terminal"; }'

Para que se respeten las nuevas preferencias

Las modificaciones a la capa de persistencia del dominio de usuario de Servicios de lanzamiento deben ser reconocidas . Para esto, lo menos perturbador para el usuario final será:

  • un reinicio del sistema operativo.

Desde la línea de comandos, si el reinicio inmediato es aceptable:

sudo shutdown -r now

Fondo

Comprensión del soporte de Terminal.app para .sh (public.shell-script)

Considere el resultado del siguiente comando:

defaults read /Applications/Utilities/Terminal.app/Contents/Info

Dejando de lado el terminal por un momento: a veces es inapropiado (o simplemente sin valor) forzar la apertura de un tipo de documento, por una aplicación que está diseñada sin soporte para ese tipo.

Para Terminal, imagino que no hay daño en el manejo del tipo public.shell-script .

    
respondido por el Graham Perrin 29.04.2012 - 14:21
-1

La forma en que Unix hace esto es abrir Terminal.app y configurar los scripts como ejecutables con chmod +x scriptname.sh .

O puede hacer un enlace desde / bin / bash a / Aplicaciones y definir / Aplicaciones / bash como la aplicación predeterminada para archivos .sh en el cuadro de diálogo Obtener información. Pero esto parece ser una especie de IMHO extraño.

    
respondido por el nohillside 05.08.2011 - 00:03

Lea otras preguntas en las etiquetas