Realizo una buena cantidad de trabajo en la línea de comandos, y me encuentro definiendo muchos alias de la forma:
alias skim='/Applications/Skim.app/Contents/MacOS/Skim'
¿Hay alguna manera de agregar magia de tal manera que al pedir un "foo" ejecutable automáticamente use /Applications/Foo.app/Contents/MacOS/Foo ejecutable? Esto está en OS X 10.6.
(Soy consciente de que podría hacerlo open foo.pdf
, pero Skim no es el lector de PDF predeterminado, y me gustaría una solución general; en algunos casos, no es apropiado configurar la aplicación en cuestión como el controlador predeterminado para el archivo).
open -a Skim foo.pdf
.Respuestas:
Finalmente lo tengo: agregue esto a su
.bash_profile
Ahora el siguiente trabajo:
Editar por Reid:
Implementé lo anterior como un script de Python que crea scripts de envoltura en lugar de alias. Tendrás que poner
~/bin/mankoffmagic
en tu camino. Si desea que los contenedores se actualicen automáticamente, ejecútelos regularmente desde cron o somesuch.fuente
ls
comando, y esto también funcionará allí.No necesitas nada lujoso, ya tienes la respuesta. Tratar:
open /Applications/Foo.app bar.pdf
en editar
A la luz de los comentarios a continuación, creo que mi respuesta aún sería relativamente similar ... Haría una función que anula abrir, hace un empuje
/Applications
, llama/usr/bin/open $appName.app $args
, hace un popd y regresa.Apelo a las secuencias de comandos de shell, pero algo como a continuación que cubre casos especiales y te mantiene usando casi la misma sintaxis que Apple proporciona para abrir. Me gusta mantener mi entorno lo más limpio posible.
Estoy seguro de que la sintaxis es del espacio exterior:
en la segunda edición
mirando el comentario de @mankoff sobre la pregunta original, la mayoría de las cosas en la función anterior probablemente sería una pérdida de tiempo, ya que podría usarlas
open -a $appName
. Entonces mankoff probablemente tenga la solución más fácil y debería cambiar su comentario a una respuesta;)fuente
Hay dos soluciones en las que puedo pensar:
La forma más fácil : utilizando el
Info.plist
archivo en cadaContents
directorio .app , cree un índice del valor para las claves CFBundleExecutable. Luego agregue un alias corto que llame a un script (perl, python, lo que sea) con el nombre de un ejecutable y los argumentos que le gustaría pasar.Su índice sería pares de nombres ejecutables y rutas a esos ejecutables. Tendría que escribir un script programado recurrente para mantener esto actualizado.
Terminarías pudiendo llamar:
donde f es un alias de un script que verifica su índice para un ejecutable llamado
foo
.En general, no hay mucho trabajo para obtener la funcionalidad que desea.
La forma más difícil : amplíe su shell para complementar el manejo de su
command_not_found
error. Esencialmente, implementaría unamethod_missing
funcionalidad de estilo Ruby dentro de cualquier shell que esté utilizando. Cuandocommand_not_found
se lanzó, su método verificaría los nombres ejecutables de sus aplicaciones instaladas.fuente
Apéndice al rescate:
Reemplace el nombre de la aplicación con la aplicación que desea iniciar y ya está. Por supuesto, puede convertirlo en una función de shell si es necesario:
y úsalo de esa manera:
Odio el AppleScript, pero a veces es útil, y creo que es la única forma de abordar una aplicación simplemente por su nombre en la línea de comandos. Todo lo demás requerirá un camino completo.
fuente