OS X - ¿Se puede hacer clic en la secuencia de comandos para borrar archivos?

0

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

Cuando estaba trabajando en Windows, solía mantener un archivo .bat en el directorio de trabajo que tenía este aspecto:

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 "seleccionable"?

Aprecio cualquier entrada!

    
pregunta thiagoveloso 06.07.2015 - 05:51

2 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!"

Déle 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 este y el guión de @ thiagoveloso:

  • Utiliza comillas dobles alrededor de la ruta a la que está cd ing, lo que evitará problemas si los nombres de los directorios contienen espacios (lo cual es completamente normal en OS X).
  • Comprueba si hay errores mientras cd ing, y si hubo un problema, se cierra (en lugar de eliminar archivos en una ubicación inesperada). Siempre comprueba si hay errores en cualquier comando de script que afecte a lo que hará el resto del script; cd es un buen ejemplo de esto.
  • (Menor) Es cd s directamente al directorio del script (en lugar de cd ing allí, capturando esa ubicación en una variable, luego cd ing allí otra vez según la variable ).
respondido por el Gordon Davisson 07.07.2015 - 02:35
0

Basado en esta referencia ( enlace ), 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 dejados por Texmaker!

    
respondido por el thiagoveloso 06.07.2015 - 09:25

Lea otras preguntas en las etiquetas