La forma más fácil e integrada de hacer esto es simplemente arrastrar los elementos desde Finder a una ventana de Terminal . Cuando los suelte, la Terminal "tecleará" sus nombres de ruta (escapados). Luego puede usar la edición de línea de comando de su shell para ingresar el resto del comando. O si está pensando en el futuro, puede escribir el comando primero y luego arrastrar los elementos.
La versión "arrastrar primero":
- Seleccione y arrastre algunos elementos del Finder a una ventana de Terminal que muestre un indicador de shell. El terminal insertará los nombres de ruta (escapados).
- Escriba Control+ A(vaya al comienzo de la línea; ⌃A es el valor predeterminado, pero varía según el shell / configuración).
- Escriba su comando y un espacio (se insertará antes de los nombres de ruta).
La versión "pensando en el futuro":
- En cualquier orden, haga ambas cosas:
- En una ventana de Terminal , escriba la parte inicial de su comando y espacio (todo excepto los nombres de ruta).
- Seleccione algunos elementos en Finder .
- Arrastre los elementos seleccionados desde Finder a la ventana de Terminal donde escribió el comando.
- Active la ventana Terminal y presione Return.
Puede (como lo han indicado otras respuestas) recurrir a AppleScript o Automator si necesita una solución más automatizada. Dado que las "partes móviles" adicionales pueden agregar cierta complejidad a la solución, tendrá que sopesar los beneficios del proceso anterior (manual, pero flexible) frente a la complejidad de implementar una o más de las soluciones automatizadas.
Algunas de las posibilidades de automatización incluyen:
- una aplicación de gotas AppleScript
- un programa AppleScript simple lanzado por el menú de script incorporado u otro iniciador
- obtener nombres de ruta de la selección del Finder
- un Automator flujo de trabajo, la aplicación o Buscador de plug-in
- un
.command
archivo ejecutable (generalmente un script de shell; ábralo en Finder para ejecutarlo en Terminal )
- obtener nombres de ruta de la selección del Finder (a través de osascript )
- alguna herramienta de terceros que ya proporciona la funcionalidad que necesita
Los servicios son cómo osx maneja este tipo de cosas.
Debajo del menú de la aplicación (en este caso, 'Finder') hay (casi) siempre una
Services
opción de menú que proporcionará servicios que se aplican a la aplicación actual y su estado actual. Normalmente, el estado es el tipo de objeto seleccionado (texto, archivos / carpetas, etc.).Se pueden habilitar, deshabilitar y asignar atajos de teclado en el panel de Preferencias del Sistema que solo tiene sentido para el último de esos tres
Keyboard
,.Para crear un Servicio que aplique un script de shell a archivos / carpetas en Finder:
Inicie el automatizador y cree un nuevo
Service
tipo de documento.files or folders
)Get Selected Finder Items
acción.Run Shell Script
Debería verse más o menos así:
Automator lo colocará automáticamente en su
~/Library/Services
carpeta cuando guarde, lo que lo hará disponible (casi) inmediatamente a través delApplication -> Services
menú o el menú contextual (clic derecho).fuente
En Mac OS X, el lenguaje de script preferido es Applescript. Puede crear una gota (una secuencia de comandos que hará algo cuando coloque algunos archivos sobre su icono), coloque el icono de la secuencia de comandos (que se puede guardar como aplicación) sobre el escritorio y arrastre y suelte los archivos que desea pasar al guión.
Como alternativa, puede usar acciones de carpeta. Es posible asociar un script Applescript a una carpeta que se ejecutará todas las veces que algunos archivos (o directorios) se suelten sobre la carpeta.
fuente
También he querido hacer eso, sin embargo, a diferencia de las soluciones anteriores, quería producir parámetros citados para un script de shell. Esos otros métodos están bien, pero son como sugerir "simplemente comando-v en la terminal" cuando lo que realmente quieres es
pbpaste
.Quería hacer una función de shell que pueda usar en mis scripts que se expandió a los parámetros de archivo para cada selección de Finder. Yo uso la concha de pescado y esto parece funcionar de alguna manera:
Usado (nuevamente en la concha de pescado) como
convert-video (selection)
.En una función bash, es posible que deba citar la salida con algo así como
| tr '\n' '\0' | xargs -0 printf "%q" {}
al final de ese comando osascript, no estoy seguro.(nota: todo lo que sé sobre el script avanzado de AppleScript y Shell se volvió a aprender en las últimas 2 horas y lo olvidaré mañana)
fuente
Basado en las respuestas anteriores, construí esta cosita
https://github.com/commonpike/DropShell
Básicamente, una aplicación de AppleScript que llama a un archivo shell ubicado en la aplicación con los archivos descartados como argumentos. Puede modificar el script de shell según sea necesario.
fuente
Basado en la respuesta de commonpike, he creado un AppleScript, que redirige todos los archivos que se le han caído, a un script de shell con el nombre correspondiente. Simplemente guarde como aplicación desde ScriptEditor de Apple y cambie el nombre como script.app para que coincida con su script.sh https://github.com/PHolker/scripts/blob/master/DropScript.scpt
fuente