OS X - ¿Se puede hacer clic en el script para borrar archivos?

0

Yo uso Latex para escribir mis documentos. Latex crea MUCHOS archivos auxiliares para compilar un documento. Muchas veces quiero limpiar mi directorio de trabajo.

Cuando trabajaba en Windows, solía mantener un archivo .bat en el directorio de trabajo que se veía así:

del *.aux
del *.pdf
del *.log
del *.bak
del *.gz
del *.bbl
del *.blg

en el que podría hacer clic para deshacerme de todos los archivos auxiliares.

Ahora, quiero hacer lo mismo en mi Mac. He creado un archivo .sh como este:

#!/bin/bash

cd `pwd`

echo "Cleaning files..."

rm *.aux
rm *.bak
rm *.bbl
rm *.blg
rm *.gz
rm *.log
rm *.pdf

echo "Done!"

que sé que puedo ejecutar (es decir, invocar desde la línea de comandos), pero no puedo hacer clic, lo cual es más conveniente porque no siempre usaré Terminal.

¿Cómo puedo convertir este script en uno "cliqueable"?

Agradezco cualquier aporte!

thiagoveloso
fuente
chmod +x myfile.shahora deberías También puedes asignar un ícono usando el menú de obtener información para que se vea bien :)
Downgoat
Gracias por la sugerencia. Sin embargo, cuando hago clic en el archivo, el programa invocado todavía aparece en texto.
thiagoveloso
es posible que deba ir a Obtener información y cambiar el programa predeterminado allí
Downgoat
Gracias, funcionó ahora. Sin embargo, los rmcomandos no se aplicaron en el directorio actual. Supongo que fueron ejecutados en el directorio de inicio. Afortunadamente, no tenía ningún archivo que coincida con las extensiones de archivo que se eliminarán. ¿Alguna sugerencia en el script para ejecutar en el directorio desde el que se invocó?
thiagoveloso
agregue este código: cd "pwd"pero reemplace el "con
backticks

Respuestas:

1

Crea un archivo de texto como este:

#!/bin/bash

cd "$(dirname "${BASH_SOURCE[0]}")" || {
    echo "Error changing directory." >&2
    exit 1
}

echo "Cleaning files..."

rm *.aux
rm *.bak
rm *.bbl
rm *.blg
rm *.gz
rm *.log
rm *.pdf

echo "Done!"

Dele una extensión ".command" y agregue permiso de ejecución. Esto hará que se abra y se ejecute automáticamente en la Terminal cuando se haga doble clic.

Tenga en cuenta que hay dos diferencias importantes (y una menor) entre esto y el script de @ thiagoveloso:

  • Utiliza comillas dobles alrededor de la ruta a la que se cddirige, lo que evitará problemas si algún nombre de directorio contiene espacios (lo cual es completamente normal en OS X).
  • Comprueba cdsi hay errores durante el proceso y, si hubo un problema, se cierra (en lugar de eliminar archivos en una ubicación inesperada). Siempre verifique si hay errores en cualquier comando de script que afecte lo que hará el resto del script; cdEs un buen ejemplo de esto.
  • (Menor) Se cdes directamente al directorio del guión (en lugar de cding allí, la captura de ese lugar en una variable, entonces cding hay de nuevo sobre la base de la variable).
Gordon Davisson
fuente
Gracias por la respuesta. ¡La contribución de comprobación de errores fue definitivamente una buena mejora!
thiagoveloso
0

Basado en esta referencia ( https://stackoverflow.com/questions/59895/can-a-bash-script-tell-what-directory-its-stored-in ), terminé resolviendo mi problema con el siguiente código:

#!/bin/bash

DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )

echo "Cleaning files..."

cd $DIR
rm *.aux
rm *.bak
rm *.bbl
rm *.blg
rm *.gz
rm *.log
rm *.pdf

echo "Done!"

#read -p "Press [Enter] to continue..."

¡Funciona muy bien para limpiar todos los archivos desagradables que dejó Texmaker!

thiagoveloso
fuente