0 votos

¿Cómo puedo hacer que Automator ejecute el servicio que hice (shell script) y mostrar el resultado en el Terminal?

Hola soy nuevo en Mac y OSX, estoy usando p7zip cli aplicación para comprimir las carpetas con archivos de gran tamaño en el interior (1; 2 GB o más). Así que me las arreglé para hacer un script en Bash para hacerlo en proceso por lotes cuando me vaya a la cama y que no voy a usar el equipo.

Este el código:

#!/bin/bash
 for folder in */
 do
 7z a -t7z -m0=lzma2 -mx=9 -mfb=64 -md=1024m -ms=on -mmt2 "${folder%/}.7z" "$folder"
 done

Tengo esto en Comp7zip.sh archivo, puse el archivo dentro de la carpeta principal que contiene todas las otras subcarpetas quiero comprimir. Así, desde el terminal que yo hago:

$cd myfolder
$./Comp7zip.sh

Luego en la terminal puedo ver cómo el 7z app está trabajando, y se comprime todas las carpetas bien.

Pero ya que es un poco molesto, la copia de la .sh archivo dentro de la carpeta y el uso de la terminal cada vez, yo uso Automator para crear un servicio y lo hacemos con un par de clics, este es el código:

#!/bin/bash
cd "$@"
for folder in */
do /usr/local/bin/7z a -t7z -m0=lzma2 -mx=9 -mfb=64 -md=1024m -ms=on -mmt2 "${folder%/}.7z" "$folder"
done

Es casi el mismo, sólo tiene que añadir el cd "$@" el uso de la carpeta seleccionada en el buscador, así que tengo un nuevo servicio que hace la misma cosa que el .sh archivo.

Sólo tienes que seleccionar la carpeta que tiene todas las subcarpetas quiero comprimir, a continuación, recoger a mi servicio de Buscador del menú de contexto, funciona bien y comprime todas las carpetas dentro de la carpeta seleccionada.

El problema aquí es, que de esta manera no puedo ver el 7z aplicación artimaña es de trabajo, todos la compresión se realiza en el fondo con solo y el icono de un poco de engranaje en la barra de menú, que indican que la compresa se está ejecutando, y nada más.

Así que con un poco de archivos no es un problema de la compresa termina rápido, pero con archivos de gran tamaño, no veo cómo comprimir el trabajo que está haciendo.

Así que la pregunta es, ¿cómo puedo hacer Automator para mostrarme la tarea que se esté ejecutando en la misma forma que el método con el .sh Bash archivo no?

También las ideas de cómo agregar a este proceso de una manera de comprimir los archivos fuera de las subcarpetas de la carpeta seleccionada? Me refiero a todos este código sólo funciona con carpetas y su contenido, pero no con los archivos, así que ¿cómo cam puedo hacer es trabajar con carpetas y archivos en el mismo proceso?

Lo siento por mi gramática, el inglés no es mi lengua nativa.

1voto

Wowfunhappy Puntos 33

Si ejecuta una secuencia de comandos de shell:

  1. Abrir la aplicación Terminal
  2. Decirle a la aplicación de Terminal para iniciar el script

A continuación, la salida del guión, de forma predeterminada, se mostrarán en la ventana de Terminal (esto se puede cambiar, por ejemplo, redirigir la salida a un archivo de texto con el > de caracteres). Esto es lo que han estado haciendo antes de ir a la cama".

Los scripts de Shell, sin embargo, puede también ser ejecutado sin tener que abrir la aplicación Terminal! Por ejemplo, podría crear un launchd plist para ejecutar una secuencia de comandos de shell cada vez que su equipo termine de arrancar. En este caso, la secuencia de comandos, pero nada iba a ser mostrado en la pantalla, debido a que la aplicación Terminal nunca fue abierto.

Del mismo modo, Applescript s do shell script comando se ejecuta código de shell directamente sin tener que abrir el Terminal.

En lugar de ejecutar el código de shell directamente, tell la aplicación de Terminal para ejecutar el código de shell para usted:

tell application "Terminal"
  do script "echo 'Hello World'"
end tell

Ahora, Applescript, se abrirá una ventana de Terminal, y ejecutar el shell de código dentro de la misma.

Screenshot

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by: